有一个Web服务,它公开了一个名为A()的函数。 用户可以使用参数向方法发出请求。 并且该参数用作存储过程的输入。
例如,用户使用网址发出请求:
该参数用于存储过程,如下所示:
但是,代码有一个安全漏洞,因为方法A()不会过滤Code变量中的任何危险字符。它必须消毒输入。
在这种情况下,我该如何消毒输入?我目前只删除了一些字符,但我不确定代码是否真的删除了任何SQL注入的可能性。
你有什么想法吗?
答案 0 :(得分:1)
不要试图消毒输入;改为使用参数化查询。
例如,假设C#:
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("SELECT * FROM Table WHERE Code = @Code", connection))
{
command.Parameters.AddWithValue("@Code", code);
...
}