我今天正在看一个旧的存储过程,发现它quotename
在输入参数上使用了。经过一番挖掘以找出确切的功能后,我遇到了这个站点。我现在了解它的作用以及如何使用它,但是该网站称它被用作SQL注入攻击的缓解措施。当我过去使用asp.net开发直接查询数据库的应用程序时,我会使用ADO.Net参数将用户输入作为文字值传递,而从不真正担心在存储过程中对其进行保护。
我现在正在编写一个存储过程,该存储过程将由我不编写的应用程序使用,因此我需要在过程级别尝试防止注入攻击,这是quotename
最好的方法,或者是否有更新的功能/更好的方法方法?
使我了解这种思维模式的代码(@parm1
是用户输入参数):
'SELECT project [Project], project_desc [Description],
customer [Customer], cpnyid [Company]
FROM PJPROJ (nolock)
where project like ' + quotename(@parm1,'''') + '