首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >,准备好的语句和SQL-注入。

,准备好的语句和SQL-注入。
EN

Stack Overflow用户
提问于 2013-05-10 11:28:36
回答 3查看 939关注 0票数 3

在阅读了几篇关于PDO和MySQLi准备语句的文章之后,也阅读了关于准备语句和stackoverflow.com上的SQL注入的数十个问题,人们都说,正确地使用准备好的语句,不再需要从用户那里转义条目,但我仍然担心存在安全问题。

第一个问题:如果我仍然使用reg-exp对条目进行消毒,并在准备好的语句中使用它们之前转义,这是否就像我在接受它?

第二个问题:,如果准备好的声明正在做有关SQL注入-From人员的评论和答案的事情为什么仍然存在受损的数据库和越来越多的关于信用卡号码和密码的公开数据,即使是来自“大型”和知名网站的黑客帐户?这是否意味着,仅仅准备好的陈述并不是那么具有免疫力,还是一个完全不同的话题?

EN

回答 3

Stack Overflow用户

发布于 2013-05-10 11:35:23

如果我仍然使用reg-exp对条目进行消毒,然后在准备好的语句中使用它们之前转义,这是否就像我在接受它一样?

  • 如果您要删除SQL中具有特殊意义的字符,因为它们在SQL中具有特殊意义,那么这是一种浪费(并导致错误地存储O‘’Donnell女士的姓氏)
  • 如果您正在转义这些字符,那么您将得到双重编码,这是可怕的,因为您将结束(例如)发送电子邮件开始,亲爱的奥唐奈女士,。
  • 如果您正在确保某个日期是一个合理的日期,那么这只是对数据完整性的合理保护。

如果说准备好的声明是在做有关SQL注入-From的评论和答案的事情--为什么仍然存在着受损的数据库和越来越多的关于信用卡号码和密码的公开数据,即使是来自“大”和知名网站的账户被黑了?这是否意味着,仅仅准备好的陈述并不是那么具有免疫力,还是一个完全不同的话题?

因为:

  • 并非每个人都使用预先准备好的陈述。
  • 并不是所有使用它们的人都正确地使用它们。
  • 数据库可以通过其他向量受到攻击(例如web服务器中的远程代码执行漏洞或对管理用户SSH帐户的暴力攻击)。
票数 2
EN

Stack Overflow用户

发布于 2013-05-10 11:40:32

  1. 双重逃逸是错误的,你不需要它。您只需要传递变量PDO就可以处理rest。
  2. 攻击站点可以通过各种方式进行。人们并不总是使用预先准备好的陈述。可能会有很多攻击,如XSS、CSRF,攻击者可能会试图专注于服务器配置。 简单地说,您需要处理可能放置在数据库中的每个变量

攻击者很聪明,他们试图寻找到数据库的原始方法。例如,他们可以将xss放在请求的浏览器头中,如果您在管理面板中使用统计数据,显示浏览器xss可以工作!这就是为什么处理输入是如此的重要。PDO把这项工作做得很好。

为了确保一切都好,你应该问自己一个问题:

  1. 我能得到我想要的数据吗?(使用preg_match)。
  2. 它是针对xss、csrf、sql注入的吗?
  3. 看看服务器的php和mysql配置,有时脚本是安全的,其他的东西被遗忘了。
  4. PDOStatement::bindValue()有一个名为data_type use it的参数。如果需要字符串,请使用PDO::PARAM_STR、If、int、PDO::PARAM_INT等。

引用php手册:

调用PDO::准备()和PDOStatement::execute() for将多次发出的具有不同参数值的语句,通过允许驱动程序协商查询计划和元信息的客户端和/或服务器端缓存,从而优化应用程序的性能,通过消除手动引用参数的需要,帮助防止SQL注入攻击。

票数 2
EN

Stack Overflow用户

发布于 2013-05-10 11:41:39

  1. 如果您只将sql安全作为目标,那么-是的,它的明显和无用的过度。
  2. 是的,当然。事实上,本土准备的陈述只涵盖了一小部分案例,没有为其他人提供安全保障。

尽管如此,一个准备好的陈述的想法在总体上是一个聪明的想法-所以,一个开发商必须自己处理其他情况。

这是我的解决方案--一个库,它为所有内容提供占位符。,而不仅仅是两个标量数据类型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16481216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档