【问题标题】:How can I block html and urls in my input form [duplicate]如何在我的输入表单中阻止 html 和 url [重复]
【发布时间】:2015-09-22 01:28:10
【问题描述】:

我有一个网站,该网站有一个输入表单,该表单提交到一个 php 页面,并将玩家用户名添加到数据库中,并将该玩家姓名的浏览量计入前 10 名列表。

我的朋友尝试输入其他内容,例如 html 代码和 javascript。 它显示在我的前 10 名列表中。

您有什么建议可以让我的表单更安全吗? 我一直在寻找年龄,还没有找到任何东西。 所有帮助将不胜感激:)

<form method="get" action="player.php">
   <div class="form-group">
      <div class="input-group input-group-lg">

         <input name="user" type="text" class="form-control" placeholder="Steve" aria-describedby="sizing-addon2">
         <span class="input-group-btn">
            <input type="submit" class="btn btn-success" value="View Skin">
         </span>
      </div>
</form>

【问题讨论】:

  • 您是否尝试过在 php 中操作请求。如果是这样,那是什么样的?
  • 应该在服务器上清理您的数据。可以在 javascript 中做一些事情,但 javascript 可以很容易地解决
  • @area28,如果用户跳过 javascript 并且只使用请求客户端,则可以解决此问题。 (或者只是在网址栏中输入)
  • 你说的是数据库;表格是您担心的 1/2。另外,如果您“不需要”使用 GET 方法;不要。

标签: javascript php html input


【解决方案1】:

冻结您对用户名的要求,例如字母数字,包括特殊字符和最大长度等。使用 javascript 正则表达式编写验证逻辑。拒绝所有其他失败的内容。

【讨论】:

    【解决方案2】:

    客户端(HTML/Javascript)验证只是为了对用户友好和响应,它总是可以被恶意用户规避。任何需要的验证都应该在服务器端完成,即使它重复在客户端完成的验证。

    【讨论】:

    • 您能帮我验证表格吗?对不起,我不是一个非常有经验的 php 和 mysql 用户
    【解决方案3】:

    不允许用户输入特殊字符是最好的阻止它的方法。为了更加安全和自信,每个文本框总是有一组有限的有效字符,并在客户端和服务器端验证它们。

    一个例子是

    function validateUsername(){
        var username = document.getElementById('txt_username').value;
        if( /[^a-zA-Z0-9]/.test( username ) ) {
           alert('Input is not alphanumeric');
           return false;
        }
        return true;     
     }
    

    在服务器端你也可以使用正则表达式。喜欢关注

    if(preg_match('/[^a-z_\-0-9]/i', $username))
    {
      echo "not valid string";
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      相关资源
      最近更新 更多