怎么评价ASP.NETMVC安全检查表?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (4)
  • 关注 (0)
  • 查看 (71)

安全黑匣子检查表

  • 提交不正确/恶意数据(这里的例子?)以确保通过javascript验证输入的类型、长度、格式和范围。
  • 关闭客户端验证并重复上述步骤,以确保
    • 不仅要检查javascript,而且还要在服务器端进行验证。
    • 输入在服务器上验证类型、长度、格式和范围。
    • 自由表格输入被净化
    • 包含输入的输出用HtmlEncodeUrlEncode
  • 在查询字符串中插入大量数据,如下所示http://www.example.com/foo?bar=HugeAmountOfData以确保约束输入并执行边界检查。
  • 通过GET访问POST操作,以确保“表单提交”操作仅限于后处理。
  • 如果适用的话,上传一个大小/格式不正确的文件(大文件、空文件、重命名扩展名的可执行文件等),以确保上传处理得当。
  • (如何从UI中检查?)确保绝对URL用于导航。
  • 在没有正确权限的情况下以用户身份访问URL,以确保通过操作/控制器属性显式地测试权限。
  • 访问提供不存在的详细信息的URL(如不存在的产品ID、无法访问的项等),以确保返回正确的错误(404或403等)。
  • 通过HTTP访问敏感页面,以确保它仅通过HTTPS可用。

安全白盒复选表

网络层。

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

服务层。

  • 在调试模式下,中断代码,使其抛出异常,以确保其安全失败。确保捕获异常并记录详细消息,但不要向客户端泄漏信息。
  • 如果更新数据库中的任何内容,请确保在事务中操作。

数据库层。

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

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

Black:规范化攻击。

White:敏感信息使用cookie?请参阅Cookie不用于敏感数据,也不被本地持久化超过预定间隔。

Black:在tempIE/XYZ文件夹中嗅探曲奇。

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

Black:做任何一次攻击,看看管理员是否会自动收到攻击通知,或者只有攻击者才知道这件事。

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

用户回答回答于
用户回答回答于
  • 用户凭据在每个请求(GET、POST或其他请求)上进行验证,以确认用户身份验证。
  • 检查每个敏感操作的用户授权(检查身份验证后)
  • 注意输出缓存,特别是当实现自己的成员系统时。
用户回答回答于

主要坚持MVC特定的内容:

  • 在ASP.NET 4,理解<%:MvcHtmlString...
  • 在可能的时候使用HTML帮助程序,而不是原始的HTML,因为它增加了你记住编码的机会
  • 分析所有的用途JsonRequestBehavior.AllowGet以确保它不能返回数组。
  • 别再发明任何与安全有关的东西。使用经过验证的、维护的、现成的实现。
  • 不要泄露安全信息robots.txt

扫码关注云+社区

领取腾讯云代金券