在使用MySQL的当前项目中。查看mysqli
函数,发现它们非常难以使用。在我看来,任何使用图书馆的程序员都应该获得荣誉勋章。
三个问题:
mysqli
不处理NULL或CURRENT_DATE等函数sqli
是太多的工作(见链接)PDO无法解决任何这些问题。问题是SQL注入:如果不使用参数化查询,PDO如何帮助SQL注入?
考虑到这一点,在PHP中为MySQL编写了一个小型库,可以简单有效地完成工作。见https://github.com/bangkok-maco/MySQL-sql-injection-prevention
(有人帮助将库替换为link,但请使用网站上的REAME进行介绍。)
问题是,我知道基本原则是否解决了需要解决的问题。
以下是原则:
从逻辑上讲,这还够吗?
SQL注入可能导致非法的SELECT(可以简单地使用),但SELECT不能写入任何数据。 DML是参数化的,因此数据是标量的。敏感数据(例如密码)无法通过普通SQL或普通用户访问。
答案 0 :(得分:3)
此代码与筛子一样漏洞
您在一个功能中调用了mysql_query
,但看不到mysql_real_escape_string()
您正在另一个功能中使用PDO
这是一团糟,毫无意义。
如果您知道如何使用PDO,请使用它
那你就安全了。
如果您想使用mysql_query
,则必须使用mysql_real_escape_string()
。
答案 1 :(得分:-1)
完全错误地提出了这个问题。重新发布了问题here。