首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC安全检查表

ASP.NET MVC安全检查表
EN

Stack Overflow用户
提问于 2010-02-02 20:20:54
回答 4查看 3.2K关注 0票数 20

有大量关于安全性设计和开发的优秀论文(甚至还有一大堆关于安全性的文章),但它们似乎都集中在你应该做什么( what you do )上。

然而,我所追求的是一份像黑客一样思考的清单。这是一个简单的操作列表,一旦你完成了开发,你就应该完成这些操作,以确保解决方案的安全性。

(更新:我最感兴趣的是黑盒检查列表-“转到页面,尝试这个和那个”之类的事情,但白盒检查列表可能也会感兴趣。)

这是我到目前为止想出的一些东西:

安全黑盒清单

  • 提交不正确/恶意的数据(此处为示例?)以确保通过客户端的sanitized
  • output验证和重复上述步骤来验证输入的类型、长度、格式和范围,以确保您不仅可以使用javascript进行检查,还可以在服务器端验证
  • 输入是否已在服务器上验证类型、长度、格式和范围

<代码>H115自由格式输入是使用<代码>D18和javascript编码的自由格式输入

为了确保您约束输入并通过GET执行边界提交POST操作,为了确保“

  • ”操作被限制为适用于http://www.example.com/foo?bar=HugeAmountOfData,上传大小/格式不正确的文件(巨大文件、空文件、具有重命名扩展名的可执行文件等)以确保上载得到处理,以便从UI检查?)确保使用绝对URL作为没有正确权限的用户访问该URL,以确保通过操作/控制器对提供不存在的详细信息(如不存在的产品it、您无权访问的项目等)的URL进行明确的权限测试,确保通过HTTP returned.
  • Access敏感页时出现正确的错误(404或403等),以确保它仅通过HTTPS可用。

安全白盒检查清单

Web层。

  • 在调试模式下,中断代码,使其抛出异常,以确保其安全地失败。确保捕获异常并记录详细消息,但不要将信息泄露给客户端。
  • 如果适用,请确保MVC操作仅限于POST/GET,特定用户角色,anything 确保POST操作带有[ValidateAntiForgeryToken]属性,以防止跨站点请求伪造攻击。
  • 确保Response.Write (直接或间接)从不用于显示用户输入。
  • 确保敏感数据不会在查询字符串或表单字段中传递。
  • 确保您的安全决策不依赖HTTP头信息。

服务层。

  • 在调试模式下,中断代码,使其抛出异常,以确保其安全地失败。确保捕获异常并记录详细消息,但不要将更新数据库中的任何内容时在transaction.

中操作的信息泄露给client.

  • Ensure

数据库层。

  • 确保检索存储过程不使用SELECT *,但始终指定更新/删除存储过程在事务内操作的列的列表(通过@@TRANCOUNT等),并显式地提交/回滚它。

评论?更正?缺少步骤?

让它成为一个社区维基,你想怎么编辑就怎么编辑。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-09 06:18:23

要添加到列表,请执行以下操作:

Black: DoS攻击-使用tinyget或类似的方法来模拟DoS攻击,看看你的应用程序做了什么。

Black:规范化攻击。提到一点,可能会特别关注在下载情况下的目录遍历攻击。

怀特:使用cookie处理敏感信息?请参见cookies不用于敏感数据,并且不会在有意的时间间隔内保存在本地。黑色:在temp IE/XYZ文件夹中嗅探cookies。

Black:同样,使用脚本化的tinyget或手动尝试,看看暴力破解密码猜测是否有效,或者您的应用程序是否有智能的延迟/拒绝密码猜测攻击。

Black:执行任何攻击,看看管理员是否会自动收到攻击通知,或者只有攻击者知道它。

“确保您的安全决策不依赖于HTTP标头信息”- http标头用于ntml/kerberos身份验证?也许只是不要愚蠢地使用它们,不要发明或依赖referer,等等?

一般:使用商业黑盒/白盒安全扫描器,可能很昂贵,但可能很难进行安全回归测试。

票数 4
EN

Stack Overflow用户

发布于 2010-02-02 21:31:36

主要针对特定于MVC的内容:

  • 在ASP.NET 4中,尽可能地理解<%:和helpers,而不是原始的
  • ,因为它增加了你记住编码的机会(帮助器会帮你做)
  • 分析JsonRequestBehavior.AllowGet的所有使用,以确保它不会返回数组。
  • 不要重新发明任何与安全相关的东西。在robots.txt

中使用经过验证、维护、现成的implementations.

  • Don't泄漏安全信息
票数 4
EN

Stack Overflow用户

发布于 2010-02-02 20:28:32

在每次请求( GET、POST或other )时,都会验证

  • 用户凭据,以确认每个敏感的operation
  • Watch out输出高速缓存的用户
    • 用户授权(在检查身份验证之后),尤其是在您实现自己的成员资格系统

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2183890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档