当一个viewmodel被传递到asp.net mvc控制器时,输入是否会针对sql注入自动清理,或者我是否必须使用来自Microsoft Antixss库的AntiXss.GetSafeHtml清理我的viewmodel上的每个属性?
我是MVC的新手,所以我不熟悉asp.net mvc控制器所做的幕后工作。
谢谢!
编辑 - 我的意思是说我应该清理我在sql堆栈中使用的输入。 MVC中的防伪令牌是否足以阻止xss?
答案 0 :(得分:0)
我不相信它们已被消毒了,虽然你似乎在你的标题中引用sql注入和你的文本中的XSS - 你担心哪些?
您仍然需要正确地参数化任何SQL查询,并且前端的任何html输出都应该在Html.Encode()中。
要回答评论,我认为前端不应该进行任何类型的SQL验证(因为有简单的清理方法),而是依靠正确的参数化查询来阻止这种攻击。任何其他方式都可以解决。
此外 - 防伪令牌可以缓解跨站点请求伪造(XSRF),而不是XSS。在<script>alert("Hello");</script>
中输入您的一个文本框,然后转到您网站上可能直接在屏幕上输出的另一个页面(例如,在表格中或作为只读视图) - 如果您没有正确编码这个,你有问题。