几年以前,对开发者提及”SQL注入”或者要求采取一个”深入防御”的措施,你大概会遭白眼。如今,越来越多的人听过”SQL注入”攻击而且开始关注这些攻击出现带来的潜在危险,但是大多数开发者仍然欠缺如何防止SQL注入攻击的知识,而当问及他们的应用软件如何防御SQL注入时,他们通常回答:“很简单,只要使用存储过程”。我们可以预见的是,使用存储过程对于你的防御策略来说是非常好的开端,但是仅此一步却不够。你需要采用一个深入防御策略。
如果你不熟悉SQL注入攻击和它们对你的应用软件的潜在危险,请参考MSDN的文章 “SQLInjection” (http://msdn2.microsoft.com/en-us/library/ms161953.aspx)。
仅仅依赖存储过程而无法执行一个深入防御的问题在于你真的只指望存储过程开发者为你提供安全。类似于下面SQLServer代码用来鉴别一个用户的存储过程非常常见:
ALTER PROCEDURE LoginUser ( @UserID [nvarchar](12), @Password [nvarchar](12) ) AS SELECT * FROM Users WHERE UserID = @UserID AND Password = @Password RETURN

收藏到QQ书签