禁止页面上所有textareas的角色

时间:2016-01-08 00:40:48

标签: javascript php jquery html

我遇到了问题。我一进入这个小f **** r - > '< - 在我的textarea中通过AJAX发送到数据库,它停止工作。所以如果我输入:

  

我是一个小侏儒,我很高兴见到你。拥抱我!

数据库只会收到:

  

我是一个小侏儒,我

那么..我可以将页面上的所有textareas限制为A-Z +ÅÄ+ +。 ,+其他经常使用的字符,不会破坏我的东西?我正在使用onchange用于AJAX请求,另一个用于keyup的eventlistener使其可以在Safari上运行,如果这对任何人都重要的话!

SQL注入漏洞,得到了它。我很害怕,还有事可做。感谢迄今为止的所有答案。

1 个答案:

答案 0 :(得分:2)

注意

我可以看到你刚开始,这很棒!你总是要找到一个学习新东西的bug,而你现在正在学习SQL注入。如果我可以提出建议,你最好从PHP The Right Way开始,它会帮你装车。

您的PHP脚本(将此数据插入数据库)未正确清理。

如果没有看到相关代码,我们就无法做多少事情。但我认为你使用mysql_* / mysqli_*函数?我们前一个已弃用,自PHP7起删除了!

您应该开始学习以下两种预处理语句类型之一:

根据我的假设,您希望转义字符串:

$data = mysql_real_escape_string($_POST['data']);

尽管如此,仍有办法解决上述问题;您的数据库仍然可以通过SQL注入被攻击,这不是您想要的。

作为noted by Armadan,为了支持我上面的陈述,mysql_real_escape_string()在某些情况下仍然可以通过,请阅读以下内容:

根据您提供的代码,您可以使用prepare()execute()

if(isset($_GET['comment1'])) {
    if($mysqli = connect_db()) {
        $insertcomment1 = $_GET['comment1'];
        $stmt = $mysqli->prepare("UPDATE result SET c1=?");
        if ( false===$stmt ) {
            die('prepare() failed: ' . htmlspecialchars($mysqli->error));
        }
        $stmt->bind_param('s', $insertcomment1);
        // execute
        if(!$stmt->execute()){
             die('execute() failed: ' . htmlspecialchars($mysqli->error));
        }
        // handle the rest here.
    }
}

你会做上面这样的事情。您最好阅读以下有关使用MySQLi准备好的语句的内容: