带白名单的SQL安全性

时间:2015-08-23 08:37:53

标签: javascript sql security sql-injection

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

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

注意:我不想在此实例中使用预准备语句。

1 个答案:

答案 0 :(得分:1)

如果你真的不能使用准备好的陈述,永远不要逃避自己,如果你需要它就有功能。

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

但是,如果可能的话,使用准备好的陈述:

  • 无需黑名单
  • 无需逃避
  • 没有注射风险
  • 一切都被允许