【问题标题】:New to ASP.NET MVC - Will I have to relearn security?ASP.NET MVC 新手 - 我需要重新学习安全性吗?
【发布时间】:2011-01-14 03:21:45
【问题描述】:

我正在计划一个新项目,现在很想使用 ASP.NET MVC。我的项目计划使用 JQuery 和 AJAX(尽管也将支持非 JS 客户端)。来自标准的 ASP.NET 背景,我仍在尝试了解 MVC 范例(在 Scott Guthrie 的大力帮助下)。但是,我对使用 MVC 的主要关注是安全方面。我已经使用 ASP.NET 完成了相当多的安全工作,并且我知道如何处理各种攻击向量。我需要重新学习 ASP.NET MVC 的安全性吗?是否有新的威胁,甚至是处理旧威胁的新方法,我必须阅读?我已经订购了几本 ASP.NET MVC 书籍(其中有关于安全性的章节),但我想知道其他人对此的经验。

谢谢

【问题讨论】:

    标签: asp.net asp.net-mvc security architecture paradigms


    【解决方案1】:

    取决于您所说的安全性。

    授权基本相同,如果不是更容易的话。支持并鼓励表单身份验证,您只需在控制器或控制器操作上粘贴[Authorize] 属性。在那里学到的东西并不多。

    ViewState 已消失,因此您无需担心 ViewState 验证或任何此类问题。

    如果您指的是 XSS,我会说它大致相同;你需要在输出中转义你的数据,这很容易做到:

    <%= Html.Encode(Model.SomeString) %>
    

    我能想到的唯一一件你可能会发现有点不同的是处理 CSRF/XSRF。幸运的是,其中大部分已经是built in to the framework

    所以总的来说我会说不,ASP.NET MVC 中安全性的学习曲线不应该像架构本身的学习曲线那么陡峭。

    【讨论】:

    • 谢谢,这使得克服学习曲线变得更加容易。附带说明一下,如果我使用UpdateModel(),它会自动对我的数据进行 HTMLEncode 吗?我知道在传递模型对象时我必须手动执行此操作,但不太确定在使用 UpdateModel 时该怎么做。再次感谢。
    • @TenaciousImpy:当您呈现的数据可能来自不受信任的来源时,您只需要担心输出时的编码/转义。除了少数例外,实际上没有必要清理即将到来的内容(我假设您参数化了您的 SQL 查询和所有这些)。但是要回答您的确切问题,不,UpdateModel 不会对您的数据进行 HTML 编码,因为那样您会在它显示时对其进行两次编码,并且您的网站访问者会在单词中间看到奇怪的转义 &amp;gt;s .
    • 使用 ASP.NET MVC 2,&lt;%: Model.SomeString %&gt; 自动为您编码文本。注意: 而不是=
    • 是的,使用参数化查询。感谢您的帮助!
    猜你喜欢
    • 2012-09-22
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多