《mssql注入时代数据库安全防护探索CLR》
随着互联网的普及,网络安全受到极大的关注,其中的重要研究领域之一就是数据库安全。在近几年,SQL注入漏洞被越来越多的发现,进而造成破坏性扩散,无疑影响了网络安全。因此,用合适的措施对数据库安全进行有效防护,变得尤为重要。
microsoft修复SQL注入漏洞的一个重要技术手段就是常用语言运行环境(Common Language Runtime,CLR)。它的作用是,当检测可疑的SQL语句时,调用CLR从而自动禁用或限制来自未经验证的客户端的ID和搜索条件。该技术有效的阻止了客户端注入SQL查询的攻击。
以下是一段mssql(Microsoft SQL Server)的CLR存储过程:
CREATE PROCEDURE dbo.usp_StopSQLInjection
@strSQL NVARCHAR(MAX)
WITH EXECUTE AS OWNER
AS
BEGIN
DECLARE @strPotentiallyInjectableSQL NVARCHAR(MAX) = @strSQL
— Ensure all parameterized queries are passed in
IF @strPotentiallyInjectableSQL LIKE ‘%select%’
BEGIN
— Check for unclosed string literals
IF @strPotentiallyInjectableSQL NOT LIKE ‘%’ + ‘”‘ + ‘%’
BEGIN
— Check for unclosed SQL injections
IF @strPotentiallyInjectableSQL NOT LIKE ‘%’ + ”” + ‘%’
BEGIN
— Check for SQL injection
IF @strPotentiallyInjectableSQL NOT LIKE ‘%[^0-9a-zA-Z]%’
BEGIN
— If no potential for injection, execute query
EXEC (@strSQL);
END
END
END
END
END
从上面可以看出,这段代码旨在阻止SQL注入攻击。它将从客户端发送的SQL查询拆分为每一个细部的查询,并检查是否存在未关闭的字符串文字,或者有特殊字符。如果满足要求,则执行查询;否则就禁止SQL查询的执行,从而避免SQL注入攻击的发生。
总的来说 ,mssql的CLR技术,极大的提高了Microsoft SQL Server的安全性,有效地防止了SQL注入攻击。不过,要彻底规避SQL注入攻击,还是要从防止其滥用起,如遵循参数化查询规则,应用过滤、验证等多项有效的技术。