php - 如果我删除所有特殊字符,Sql 注入(inject)的机会?

标签 php mysql sql sql-injection

<分区>

如果我从字符串中删除所有特殊字符,那么是否有任何 sql 注入(inject)的机会??(我的输入中不需要任何特殊字符)

我正在使用以下代码删除所有特殊字符

    $unsafe = $_GET["tag"];
$safe = preg_replace('/[^a-zA-Z0-9 ]/s', '', $unsafe);
$safe = mysql_real_escape_string($safe);

还有机会进行sql注入(inject)吗??

最佳答案

如果您使用 mysql_real_escape_string,则没有理由删除“不安全字符”,因为这将使它们全部安全。

但是,不推荐使用 mysql_* 函数,因为它们很难正确使用。 PHP 开发人员现在推荐使用 PDOmysqli_* functions反而。参见 this answer了解如何通过 PDO 或 mysqli 使用参数化查询。

关于php - 如果我删除所有特殊字符,Sql 注入(inject)的机会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15233536/

相关文章:

php - 如何在不阻塞线程的情况下调用 PHP?

mysql - 如何获取mysql中插入的最新数据?

mysql - 连接共享共同祖 parent 但不共享父对象的两个表

mysql - 如何在 MySql 中强制区分大小写的表名和列名?

php - 如何在mysql数据库中存储拼音

sql - 计算行数时 null 和 0 之间的区别

php - 如果覆盖另一个模块使用的模块中的类会发生什么

php - 使用 session 电子邮件在 php 中获取用户名字

php - MySQL 的问题

python - Django 使用工厂函数从同一基类创建多个表/模型类