我知道使用PDO几乎不可能进行SQL注入.
但是,我现在没有时间在我们的网站上更改所有与数据库相关的代码. (特别是由于我是PDO的新手,因此涉及一些学习曲线).所以我想知道什么mysql / php函数将提供与PDO相同的安全性.
这两点够了吗?
>确保所有$_GET和$_POST数据都符合预期的类型(例如产品ID仅应为数字,因此我可以使用is_numeric).
>使用mysql_real_escape_string.
还是我应该做些其他事情?网站的方式是,根据查询字符串中的id = x,事情可能会进入数据库.在黑客入侵之后,我看到的是在数据库中,所有可以通过查询字符串进入数据库的东西都被cd etc / pwd之类的值所破坏.
解决方法:
简短版本:从mysql扩展名移至mysqli extension,然后将带有参数的查询替换为准备好的语句(here is a quickstart guide).
但是从长远来看,现在学习PDO不会花那么长时间,这是值得的.
附带说明:
I understand that using PDO makes SQL injections virtually impossible.
事实并非如此,可以在PDO中编写可注入查询. PDO中的这段代码与旧版mysql扩展中的代码一样糟糕(两个漏洞矢量在这里的价格是!):
$pdo_obj->query("SELECT password FROM users WHERE id = '".$_GET['id']."'");
PDO仅提供保护自己并使其易于使用的工具.您始终总是必须自己验证和过滤输入.但是使用准备好的语句,您至少可以让数据库知道应该作为参数的内容以及应该作为查询的一部分的内容.