据我了解,使用 PDO 几乎不可能进行 SQL 注入。
但是,我目前没有时间更改我们网站中所有与数据库相关的代码。 (特别是因为我是 PDO 的新手,所以涉及一些学习曲线)。所以我想知道哪些 mysql/php 函数可以提供与 PDO 相同的安全性。
这两点就够了吗?
- 确保所有 $_GET 和 $_POST 数据均为预期类型(例如产品 ID 只能是数字,所以我可以使用
is_numeric
).
- Using
mysql_real_escape_string
.
或者还有什么我应该做的吗?该网站的方式是基于id=x
在查询字符串中,内容可能会进入数据库。黑客入侵后我看到的是,在数据库中,所有可以通过查询字符串进入数据库的东西都受到了诸如cd etc/pwd
.
简短版本:从 mysql 扩展移动到mysqli 扩展 http://www.php.net/manual/en/book.mysqli.php,并将带参数的查询替换为准备好的语句(这是快速入门指南 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php).
但从长远来看,现在学习 PDO 不会花那么长时间,而且is值得努力。
作为旁注:
据我了解,使用 PDO 几乎不可能进行 SQL 注入。
事实并非如此,可以在 PDO 中编写可注入查询。 PDO 中的这段代码与旧的 mysql 扩展中的代码一样糟糕(这里有两个漏洞向量,但只需要一个漏洞向量!):
$pdo_obj->query("SELECT password FROM users WHERE id = '".$_GET['id']."'");
PDO仅提供保护您自己并使其易于使用的工具。您始终、始终必须亲自验证和过滤输入。但是使用准备好的语句,您至少可以让数据库知道什么应该是参数,什么应该是查询的一部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)