javascript - 通过白名单实现 SQL 安全

标签 javascript sql security sql-injection

在我的应用程序的注册页面上,有一个用户名字段。我想防止 SQL 注入(inject)攻击,同时允许复杂的名称,例如 Aldéric D'Aurve-Sanct,其中包含用作撇号的单引号。

如果我使用 regex string like this one 将名称列入白名单,然后我可以使用双引号(名称中不允许使用)来完全转义字符串吗?换句话说,当用双引号引起来时,使用包含单引号但不包含其他控制字符的字符串是否安全?这种简单的解决方案是否可能引入任何漏洞?

注意:我不想在这种情况下使用准备好的语句。

最佳答案

如果你真的不能使用准备好的语句,永远不要逃避自己,如果你需要的话,有一些函数可以做到这一点。

例如,如果您使用 php PDO,请使用 PDO::quote : https://secure.php.net/manual/en/pdo.quote.php

但是,如果可能的话,请使用准备好的语句:

  • 无需列入黑名单
  • 无需逃避
  • 无注入(inject)风险
  • 一切都被允许

关于javascript - 通过白名单实现 SQL 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32164755/

相关文章:

symfony - FOSUserBundle - 您必须在安全防火墙配置中激活注销

javascript - 如何从具有不同协议(protocol)的外部网站导入javascript代码

javascript - 显示其父 div 后的 svg 渲染事件

android - 我应该为不同的对象动态创建新表吗?

sql - 如何查询空对象的 json 列?

java - 无法使用 Apache Santuario 1.4.6 验证 XML 签名

javascript - Angularjs 模式关闭时不运行代码

javascript - jQuery .insertAfter 不起作用,试图在 DOM 中移动元素

sql - BigQuery JSON - 标量子查询生成多个元素

linux - 如何在 Linux 进程的命令行参数中隐藏密码