我继承了大量目前缺少 SQL 注入保护的经典 ASP 代码,我正在努力解决它。我已经详细检查了这里提供的解决方案:Classic ASP SQL Injection Protection 在数据库方面,我有一个 Microsoft SQL server 2000 SP4
不幸的是,存储过程不是一种选择。
在研究了 php 的 mysql_real_escape_string ( http://www.w3schools.com/php/func_mysql_real_escape_string.asp ) 之后,我在 ASP 中复制了它的功能。
我的问题是:
1) Microsoft SQL Server 2000 是否有任何其他特殊字符需要转义,而 MySQL 中不存在 ( \x00 , \n , \r , \ , ' , " , \x1a )
2) 从我可以通过转义单引号和用单引号包围用户输入来防止 SQL 注入中的答案吗? 我读到“对'引用参数'过程发起攻击的一种方法是使用字符串截断。根据 MSDN,在 SQL Server 2000 SP4(和 SQL Server 2005 SP1)中,太长的字符串将被悄悄地截断。”
如何将其用于攻击(我真的无法想象这样的场景)以及防止它的正确方法是什么?
3) 还有其他我应该注意的问题吗?还有其他注入 SQL 的方法吗?
注意: 30 分钟的互联网搜索表明没有经典 ASP 库来防止 SQL 注入。是这样,还是我真的在搜索的基本任务上失败了?