Questions tagged «sql-injection»

7
您被雇用为一个安全性高的网站修复一个小错误。查看代码,其中充满了安全漏洞。你是做什么?[关闭]
我被某人雇用在网站上做一些小工作。这是一家大型公司的网站。它包含非常敏感的数据,因此安全性非常重要。在分析代码后,我注意到它存在安全漏洞-读取大量PHP文件,将用户获取/发布输入直接扔到mysql请求和系统命令中。 问题是,为他创建站点的人是一位程序员,有家人和孩子依靠这项工作。我不能只说:“您的站点是一个脚本儿童游乐园。让我为您重做一次,一切都会好起来的。” 在这个情况下,你会怎么做? 更新: 我在这里遵循了一些好的建议,并礼貌地向开发人员报告说,我在网站上发现了一些可能的安全漏洞。我指出了这一点,并说那里的SQL注入攻击可能存在一个漏洞,并询问他是否知道。他回答:“当然,但是我认为,要利用它,攻击者应该掌握有关数据库结构的信息;我必须更好地理解”。 更新2: 我说并非总是如此,建议他遵循此Stack Overflow问题链接以正确处理它:如何防止PHP中的SQL注入?他说他会研究的,并感谢我以前告诉过他。我想我的工作已经完成,谢谢大家。

14
为什么SQL注入预防机制会演变为使用参数化查询的方向?
在我看来,可以通过以下方式防止SQL注入攻击: 仔细筛选,过滤和编码输入(在插入SQL之前) 使用准备好的语句 /参数化查询 我想每个都有优点和缺点,但是为什么#2脱颖而出,或多或少地被认为是防止注入攻击的实际方法?是更安全,更不容易出错,还是还有其他因素? 据我了解,如果正确使用#1并注意所有警告,它可能与#2一样有效。 消毒,过滤和编码 在清除,过滤和编码的含义上,我感到有些困惑。我要说的是,出于我的目的,以上所有选项都可以考虑作为选项1。在这种情况下,我了解到清理和过滤有可能修改或丢弃输入数据,而编码可以按原样保留数据,但可以对其进行编码适当避免注射攻击。我认为转义数据可以视为对数据进行编码的一种方式。 参数化查询与编码库 有一些答案,其中parameterized queries和的概念encoding libraries可以互换使用。如果我错了,请指正我,但我印象深刻的是它们是不同的。 我的理解是encoding libraries,无论多么出色,他们总是有潜力修改SQL“程序”,因为在发送给RDBMS之前,他们正在对SQL本身进行更改。 Parameterized queries 另一方面,将SQL程序发送到RDBMS,然后优化查询,定义查询执行计划,选择要使用的索引等,然后插入数据,作为RDBMS内部的最后一步本身。 编码库 data -> (encoding library) | v SQL -> (SQL + encoded data) -> RDBMS (execution plan defined) -> execute statement 参数化查询 data | v SQL -> RDBMS (query execution plan defined) -> …

3
依靠参数化查询是防止SQL注入的唯一方法吗?
我对SQL注入攻击的所有了解似乎都表明,参数化查询(尤其是存储过程中的参数化查询)是防范此类攻击的唯一方法。在我工作的时候(回到黑暗时代),存储过程被认为是一种不好的做法,主要是因为它们的可维护性较差。可测试性较低;高度耦合;并将系统锁定在一个供应商中;(此问题涵盖其他一些原因)。 尽管在我工作时,项目实际上并没有意识到这种攻击的可能性。采用了各种规则来保护数据库免受各种损坏。这些规则可以概括为: 没有客户端/应用程序可以直接访问数据库表。 对所有表的所有访问都是通过视图进行的(对基本表的所有更新都是通过触发器进行的)。 所有数据项都有指定的域。 不允许任何数据项为空-这意味着DBA有时会磨牙。但被执行了。 角色和权限已适当设置-例如,受限制的角色仅授予视图更改数据的权利。 那么,这样的一组(强制)规则(尽管不一定是特定的一组)是否可以替代参数化查询,以防止SQL注入攻击?如果没有,为什么不呢?可以通过(仅)数据库特定措施来保护数据库免受此类攻击吗? 编辑 鉴于收到的初步答复,对该问题的重视程度略有变化。基本问题不变。 编辑2 依赖参数化查询的方法似乎只是防御系统攻击的外围步骤。在我看来,更基本的防御措施既可取,又可能使对此类查询的依赖变得不必要或不太关键,甚至可以专门防御注入攻击。 我的问题中隐含的方法基于“加固”数据库,我不知道它是否是可行的选择。进一步的研究表明存在这样的方法。我发现以下来源提供了一些指向这种方法的指针: http://database-programmer.blogspot.com http://thehelsinkideclaration.blogspot.com 我从这些来源获得的主要特征是: 广泛的数据字典,与广泛的安全数据字典相结合 从数据字典生成触发器,查询和约束 最小化代码并最大化数据 尽管我到目前为止所获得的答案非常有用,并指出了忽略参数化查询所带来的困难,但最终它们并没有回答我的原始问题(现在以粗体强调)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.