【发布时间】:2016-10-15 21:51:37
【问题描述】:
我正在 ASP.NET MVC C# 上开发一个 SaaS 应用程序,我很好奇使用存储过程/函数是否可以防止 SQL 注入和 xsxx 攻击?我想对用户输入的数据进行某种清理,但我不知道他们这样做的最佳方法是什么。
如果我需要进行一些数据清理,最好的方法是什么?
【问题讨论】:
标签: c# sql asp.net sql-injection
我正在 ASP.NET MVC C# 上开发一个 SaaS 应用程序,我很好奇使用存储过程/函数是否可以防止 SQL 注入和 xsxx 攻击?我想对用户输入的数据进行某种清理,但我不知道他们这样做的最佳方法是什么。
如果我需要进行一些数据清理,最好的方法是什么?
【问题讨论】:
标签: c# sql asp.net sql-injection
否。
您应该通过使用SqlCommand 并将适当的参数添加到适当的连接来使用参数化查询。这将防止 SQL 注入。您不能保证所有途径都会受到保护,例如,如果您使用来自用户字符串的 sp_executesql。
SQL 注入和 XSS 攻击是不同的问题。
【讨论】:
视情况而定
SQL 注入:避免在存储过程中使用动态 SQL,因为它容易受到攻击,并且可以使用 SQL 注入攻击来滥用,如果不可避免,请使用 sp_executesql(如 Daniel 的回答中所述)
Better Way
XSS:对于旧版本的 MVC(aspx 视图引擎),始终使用 <%: ... %>,这与 Html.Encode() 相同。对于 @Razor 视图,@model.something 始终默认情况下自动编码,除非您专门使用 HTML.Raw 。 Nice Read
【讨论】: