gpt4 book ai didi

asp.net - 避免 SQL Server 中的盲 SQL 注入(inject)漏洞的最佳实践 - ASP.Net

转载 作者:行者123 更新时间:2023-12-04 17:55:53 25 4
gpt4 key购买 nike

什么是避免 SQL 注入(inject)的最佳实践。

我对我的应用程序运行了 McAfee Secure Check,
它显示了一个问题 SQL Server 中的盲 SQL 注入(inject)漏洞

建议如下

修复此漏洞的唯一最佳方法是确定每个表单的可接受输入
参数并拒绝不符合该标准的输入。
以下是可接受的解决方案,但不是最佳解决方案。
对包括 URL 参数的数据输入字段实现内容解析。
从任何用户或动态数据库输入中删除以下字符:(VBScript 中的示例)
' (转义单引号) input = replace( input, "'", "''") "(双引号) input = replace( input, """", "") ) (右括号)
输入=替换(输入,“)”,“”)((左括号)输入=替换(输入,“(”,“”);(分号)输入=替换(输入,“;”,“”) -
(破折号)输入=替换(输入,“-”,“”)| (管道)输入=替换(输入,“|”,“”)
在文本输入中,建议在用户提供的输入周围附加引号。

如果我正确理解了这个建议,我必须在我的应用程序中找到所有表格并验证它不接受任何特殊字符,如 " ' ( ) *
这还有什么?

我如何确保我的应用程序不会受到 SQL 注入(inject)的影响

编辑

更多规范:

    Protocol https Port 443 Read Timeout30000Method POST
Path /Login
Hea
ders
Referer=https%3A%2F%2Fwww.mydomain.org%2FLogin
Content-Type=application%2Fx-www-form-urlencoded
Body
ctl00_ScriptManager1_HiddenField=0
__EVENTTARGET=0
__EVENTARGUMENT=0
__VIEWSTATE=/wEPDwUJNjc2MTk0ODk1D2QWAmYPZBYCAgMPZBYCAgsPZBYCAgUPFgIeBFRleHQ
FNzxhIGhyZWY9Jy9SZWdpc3RyYXRpb24nIGNsYXNzPSdidXR0b24nPlJlZ2lzdGVyIE5vdzwvYT5kZEMqo
HfESjF9a2aAo6EwUZFLyVY43k2Ywc5HOrQBdZqz
__EVENTVALIDATION=/wEWCgLkzYaLDgKV/vKYDgKBuZWrDQKS/tSgCgLJloD/DALrw4jECgKb/IYvAu2
GxZoEAuemgo8LAoyWmLsKGesm2g0zKeoodCDHz6Mm9GhhkuncAqXhHTAcUjL1R1Y=
ctl00$header1$btnDisclaimerHTMLOK=OK
ctl00$header1$btnDisclaimerHTMLCancel=Cancel
ctl00$header1$btnSubmit=Register
ctl00$cc1$txtEmail=x' wAiTfOr dELay '0:0:20'--
ctl00$cc1$txtPassword=0
ctl00$cc1$cmdLogin=Log In
Protocol https Port 443 Read Timeout30000Method POST
Path /login/
Hea
ders
Referer=https%3A%2F%2Fwww.mydomain.org%2Flogin%2F
Content-Type=application%2Fx-www-form-urlencoded
Body
ctl00_ScriptManager1_HiddenField=0
__EVENTTARGET=0
__EVENTARGUMENT=0
__VIEWSTATE=/wEPDwUJNjc2MTk0ODk1D2QWAmYPZBYCAgMPZBYCAgsPZBYCAgUPFgIeBFRleHQ
FNzxhIGhyZWY9Jy9SZWdpc3RyYXRpb24nIGNsYXNzPSdidXR0b24nPlJlZ2lzdGVyIE5vdzwvYT5kZEMqo
HfESjF9a2aAo6EwUZFLyVY43k2Ywc5HOrQBdZqz
__EVENTVALIDATION=/wEWCgLkzYaLDgKV/vKYDgKBuZWrDQKS/tSgCgLJloD/DALrw4jECgKb/IYvAu2
GxZoEAuemgo8LAoyWmLsKGesm2g0zKeoodCDHz6Mm9GhhkuncAqXhHTAcUjL1R1Y=
ctl00$header1$btnDisclaimerHTMLOK=OK
ctl00$header1$btnDisclaimerHTMLCancel=Cancel
ctl00$header1$btnSubmit=Register
ctl00$cc1$txtEmail=x' wAiTfOr dELay '0:0:20'--
ctl00$cc1$txtPassword=0
ctl00$cc1$cmdLogin=Log In

我不明白 McAfee 在这里发现了什么问题。
因为对于用户登录,我使用的是参数化存储过程。并且用户输入在客户端验证

最佳答案

最佳做法是始终对您的查询进行参数化;也就是说,将它们转换为类似的东西:

update your_table 
set cola=@param1,
colb =@param2

例如,您在 C# 上执行此操作的方式是:
using ( ...)
{
comm = new SqlCommand("update your_table set cola=@param1, colb=@param2",conn);
comm.Parameters.AddWithValue("@param1",someValue);
comm.Parameters.AddWithValue("@param2",someOtherValue);
comm.ExecuteNonQuery();
}

关于asp.net - 避免 SQL Server 中的盲 SQL 注入(inject)漏洞的最佳实践 - ASP.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9114660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com