[SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优
最近读了 程序员的SQL金典 这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优。 1. SQL 注入漏洞 由于“ '1'='1' ”这个表达式永远返回 true ,而 true 与任何布尔值的 or 运算的结果都是 true ,那么无论正确密码是什么“ Password='1' or '1'='1' ”的计算值永远是 true ,这样恶意攻击者就可以使用任何帐户登录系统了。这样的漏洞就被称作“ SQL 注入漏洞( SQL Injection )”。 对付 SQL 注入漏洞有两种方式:过滤敏感字符和使用参数化 SQL 。 1). 过滤敏感字符 过滤敏感字符的思路非常简单,由于恶意攻击者一般需要在输入框中输入的文本一般含有 or 、 and 、 select 、 delete 之类的字符串片段,所以在拼接 SQL 之前检查用户提交的文本中是否含有这些敏感字符串,如果含有则终止操作。 2).使用参数化 SQL 为运行时才能确定的用户名和密码设置了占位符,然后在运行时再设定占位符的值,在执行时 Java 、 C# 会直接将参数化 SQL 以及对应的参数值传递给 DBMS ,在 DBMS 中会将参数值当成一个普通的值来处理而不是将它们拼接到参数化 SQL 中 ,因此从根本上避免了 SQL 注入漏洞攻击。 2. SQL