在提交之前消毒Asp.Net文本框以防止SQL注入

时间:2017-05-30 18:14:39

标签: sql asp.net oracle sql-injection

我有一项任务是在ASP.Net Web App中阻止SQL注入。有一个注释文本框,测试人员已将其标记为SQL注入的可能位置。将文本插入数据库的Submit按钮事件已使用Oracle参数化SQLCommand。但是在测试时我能够插入"选择' duff'来自双重;"作为评论。因此,我很好奇如何防止sql注入,我所能找到的只是人们说使用参数。所有建议表示赞赏。谢谢。下面是调用存储过程的行。

dbCommand = db.GetStoredProcCommand("ABC.Insert_My_Comment");
db.AddInParameter(dbCommand, "in_comments", DbType.String, obj.Comments);
db.ExecuteNonQuery(dbCommand);

2 个答案:

答案 0 :(得分:1)

只要您将评论放在参数中,它就不能用于注射。

生成动态查询字符串时出现问题;  "INSERT INTO COMMENTS Comment = '" + userComment + "'"

答案 1 :(得分:1)

SQL注入

只要您使用参数和存储过程,就可以合理地保护您的系统免受SQL注入。

如果您的渗透测试人员仍然没有给您带来困难,请告诉他们您实施了与OWASP guidance一致的缓解措施,特别是选项2.如果他们一直给您带来困难,请问他们哪个具体{{ 3}}失败,具体是什么injection test,  和/或如果他们能够触发任何恶意或不需要的系统行为。如果他们无法提供与实际行为不同的预期行为的特定情况,则它不是可操作的缺陷,您应该将其关闭为failure mode or criticality

其他类型的注射

仅仅因为你对SQL注射的安全并不意味着你对所有类型的注射都不安全,例如有人可以将HTML注入该字段,以支持FAD。如果您网站中的任何网页将该评论字段反馈到网页上,请确保您正确对内容进行HTML编码,并确保没有人可以强迫您的网站在您的网站中间呈现Script标记页。