SQL注入攻击,是指攻击者在Web表单输入或者提交用户输入的URL中植入恶意的SQL代码,利用Web系统的后端数据库来完成破坏性的行为,受到SQL注入攻击的Microsoft SQL Server数据库通常会抛出错误来识别背后的攻击者。本文旨在为MSSQL DBA和开发者们介绍如何发现SQL注入并采用有效的技术方法以应对SQL注入攻击。
一、识别有效报错
MSSQL Server抛出的报错是识别SQL注入的有效报错,这些报错可以帮助用户找出可疑的攻击行为。用户可以在MSSQL服务器上设置`show_error_message`变量,当发生错误时,在Web应用前端将显示报错信息。例如,当攻击者的SQL注入语句未正确分割时,可能会看到以下报错:
“`SQL
Incorrect syntax near ‘XXX’
上述报错意味着攻击者发生了SQL注入攻击,因为攻击者使用了无效的SQL关键字。
二、采用SP_EXECSQL来屏蔽一些关键字
对于一些特定的关键字,用户可以采用SP_EXECSQL来隐藏,以避免攻击者的SQL注入攻击。例如,要屏蔽MSSQL的`exec`关键字,用户可以采用以下语句:
```SQL
EXECUTE sp_execsql N'SELECT * FROM XXX'
此外,用户也可以使用正则表达式来搜索特定字符串并屏蔽不必要的关键字,以阻止攻击者的SQL注入攻击:
“`SQL
EXECUTE sp_execsql N’SELECT * FROM table WHERE field NOT LIKE ‘%select%’
上述语句将会在MSSQL查询中过滤出任何含有`select`关键字的字段,从而阻止攻击者完成SQL注入攻击。
三、及时处理相关报错
MSSQL Server抛出的报错通常都是可预知的,如果用户及时处理相关的报错,就可以有效防止攻击者的SQL注入攻击。为了确保系统的安全性,用户应立即处理系统抛出的报错,从而杜绝SQL注入攻击。
总而言之,SQL注入攻击是可以防止的,MSSQL Server抛出的报错是一个重要的工具。若用户能及时处理不合理的报错信息,并采用适当的技术手段来屏蔽一些特定的关键字,就可以有效防止SQL注入攻击产生的灾难性后果。