gpt4 book ai didi

sql - htmlencoding 是避免 SQL 注入(inject)攻击的合适解决方案吗?

转载 作者:行者123 更新时间:2023-12-04 13:29:46 25 4
gpt4 key购买 nike

我听说它声称防止 SQL 注入(inject)攻击的最简单解决方案是在插入数据库之前对所有文本进行 html 编码。然后,显然,在提取文本时解码所有文本。这个想法是,如果文本只包含与号、分号和字母数字,那么你就不能做任何恶意的事情。

虽然我看到了许多这似乎可行的情况,但我预见到使用这种方法会出现以下问题:

  • 它声称是银弹。可能会阻止此技术的用户了解所有可能的相关问题 - 例如二阶攻击。
  • 它不一定能防止任何二阶/延迟有效载荷攻击。
  • 它使用工具的目的与设计目的不同。这可能会导致代码的 future 用户/开发人员/维护人员之间产生混淆。效果的表现也可能远非最佳。
  • 它为数据库的每次读取和写入增加了潜在的性能损失。
  • 它使数据更难直接从数据库中读取。
  • 它增加了磁盘上数据的大小。 (每个字符现在约为 5 个字符 - 反过来这也可能影响磁盘空间要求、数据分页、索引大小和索引性能等等?)
  • 高范围的 unicode 字符和组合字符是否存在潜在问题?
  • 一些 html [en|de] 编码例程/库的行为略有不同(例如,一些编码撇号而另一些不编码。可能存在更多差异。)然后将数据与用于读取和写入的代码联系起来。如果使用 [en|de] 编码不同的代码,则数据可能会被更改/损坏。
  • 它可能使处理(或至少调试)任何已经类似编码的文本变得更加困难。

  • 有什么我想念的吗?
    这实际上是防止 SQL 注入(inject)攻击问题的合理方法吗?
    尝试以这种方式防止注入(inject)攻击是否存在任何基本问题?

    最佳答案

    您应该通过使用参数绑定(bind)来防止 sql 注入(inject)(例如,永远不要将您的 sql 字符串与用户输入连接,而是为您的参数使用占位符并让您使用的框架进行正确的转义)。另一方面,应使用 Html 编码来防止跨站点脚本。

    关于sql - htmlencoding 是避免 SQL 注入(inject)攻击的合适解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416227/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com