PDO,Prepared语句和SQL
在阅读了几篇关于PDO和MySQLi准备语句的文章之后,他们也已经阅读了关于stackoverflow.com上的准备好的语句和SQL注入的几十个问题,人们说,正确使用准备好的语句不再需要从用户转义条目,但是我想我仍然担心有安全问题。
第一个问题:如果我在准备好的语句中使用reg-exp和escape之前仍然使用它们来处理条目,那么就像我过度使用它?
第二个问题:如果准备好的陈述正在做有关SQL注入的工作 - 从人们的意见和答案 - 为什么仍然存在数据库泄密和越来越多的有关信用卡号码和密码的暴露数据,甚至从“大”已知的网站? 这是否意味着准备好的陈述本身并不那么免疫,或者这是一个完全不同的话题?
如果我在准备好的语句中使用reg-exp和escaping之前仍然使用它们来处理条目,那么就像我过度使用它?
如果准备好的陈述正在做有关SQL注入的工作 - 从人们的意见和答案 - 为什么仍然存在数据库泄密和越来越多暴露的有关信用卡号码和密码的数据,甚至从“大”和知名网站侵入帐户? 这是否意味着准备好的陈述本身并不那么免疫,或者这是一个完全不同的话题?
因为:
然而,一般而言,准备好的陈述的想法是一个很好的陈述 - 因此,开发者必须自己照顾其他案例。
这里是我的解决方案 - 一个为所有内容提供占位符的库,而不仅仅是两个标量数据类型
双重逃脱是错误的,你不需要它。 你只需要传递变量PDO会照顾休息。
攻击网站可能以各种方式完成。 人们并不总是使用准备好的陈述。 可能会有很多像XSS,CSRF这样的攻击,攻击者可能会尝试专注于服务器配置。
基本上你需要考虑到你可能在数据库中放置的每一个变量
攻击者很聪明,他们试图找到原始的方式来获得数据库。 例如,他们可以将xss放在请求的浏览器标题中,如果您在管理面板中使用显示浏览器xss可能工作的统计信息! 这就是为什么如此重视照顾输入。 PDO很好地完成了这项工作。
为了确保一切都可以,你应该问自己一个问题:
来自php手册的引用:
对于将使用不同参数值多次发布的语句,调用PDO :: prepare()和PDOStatement :: execute()可以通过允许驱动程序协商查询计划的客户端和/或服务器端缓存来优化应用程序的性能,元信息,并且通过不需要手动引用参数来帮助防止SQL注入攻击。
链接地址: http://www.djcxy.com/p/16755.html