在我的应用程序的注册页面上,有一个用户名字段。我希望防止SQL注入攻击,同时允许复杂的名称,如Aldéric D'Aurve-Sanct
,其中包含用作撇号的单引号。
如果我使用regex string like this one将名称列入白名单,那么我可以使用双引号(名称中不允许)完全转义字符串吗?换句话说,当用双引号括起来时,使用包含单引号但不包含其他控制字符的字符串是否安全?这样的简单解决方案可能会引入任何漏洞吗?
注意:我不想在此实例中使用预准备语句。
答案 0 :(得分:1)
如果你真的不能使用准备好的陈述,永远不要逃避自己,如果你需要它就有功能。
例如,如果您使用php PDO,请使用PDO :: quote:https://secure.php.net/manual/en/pdo.quote.php
但是,如果可能的话,使用准备好的陈述: