SQL 白名单安全
SQL Safety with Whitelisting
在我的应用程序的注册页面上,有一个用户名字段。我想防止 SQL 注入攻击,同时允许像 Aldéric D'Aurve-Sanct
这样的复杂名称,其中包含用作撇号的单引号。
如果我使用 regex string like this one 将名称列入白名单,我可以使用双引号(名称中不允许使用)来完全转义字符串吗?换句话说,当被双引号包围时,使用包含单引号但不包含其他控制字符的字符串是否安全?这种简单的解决方案是否会引入任何漏洞?
注意:我不想在这种情况下使用准备好的语句。
如果你真的不能使用准备好的语句,永远不要逃避自己,如果你需要的话,有函数可以做到。
例如,如果您使用 php PDO,请使用 PDO::quote :https://secure.php.net/manual/en/pdo.quote.php
但是,尽可能使用准备好的语句:
- 无需黑名单
- 不用逃跑
- 无注射风险
- 一切皆可
在我的应用程序的注册页面上,有一个用户名字段。我想防止 SQL 注入攻击,同时允许像 Aldéric D'Aurve-Sanct
这样的复杂名称,其中包含用作撇号的单引号。
如果我使用 regex string like this one 将名称列入白名单,我可以使用双引号(名称中不允许使用)来完全转义字符串吗?换句话说,当被双引号包围时,使用包含单引号但不包含其他控制字符的字符串是否安全?这种简单的解决方案是否会引入任何漏洞?
注意:我不想在这种情况下使用准备好的语句。
如果你真的不能使用准备好的语句,永远不要逃避自己,如果你需要的话,有函数可以做到。
例如,如果您使用 php PDO,请使用 PDO::quote :https://secure.php.net/manual/en/pdo.quote.php
但是,尽可能使用准备好的语句:
- 无需黑名单
- 不用逃跑
- 无注射风险
- 一切皆可