书籍名称:Web安全设计之道 -.NET代码安全,界面漏洞防范与程序优化  
.NET安全审核检查表  
检查项 任务描述
设计环节  
  Security descisions should not rely on client-side validations; they are made on the server side.
   
  The Web site is partitioned into public access areas and restricted areas that require authentication access. Navigation between these areas should not flow sensitive  credentials information.
cookie1=personal info; path="/public" cookies2=crfedential ifno; path="/secure"
   
  The indentities used to access remote resource from ASP.net web applications are clearly identified.
   
  Mechanisms have been identified to secure credentials,authentication tickets, and other sensitive information over network and in persistent stores.
问题一: .NET 有针对ConnectionString 加密组件,VSS SQA Assets\Project Assets\...CryptoUtility.rar.
问题二: 专门对Cookie 进行保护的?https://msdn.microsoft.com/zh-cn/library/zdh19h94(v=vs.80).aspx
  A secure approach to exception management is identified. The application fails securely in the event of exceptions.
  The site has granular authorization checks for pages and directories.
  Web controls, user controls, and resource access code are all partitioned in their own assemblies for granular security.
   
应用条件分类  
   
  User input is validated for type, length, format, and range.Input is checked for known valid and safe data and then for malicious dangerous data. 
有效安全的输入, 需要注意的地方有: public 方法的参数(GL:?) 所有来自非信任源的输入字段应该用函数或者正则表达式来约束。
  String form field input is validated using regular expressions.
  Regular HTML controls, query string, cookies, and other forms of input are validated.
   
  The RequiredFieldVaildator control is used where data must be controls.
   
  Free form input is sanitized to clean malicious data.
For example, HttpUtility.HtmlEncode and HttpUtility.UrlEncode.
   
  Input file names are well formed and are verifiably valid within the application context.
   
  Output that includes input is encodeed with HtmleEncode and UrlEncode.
<%Response.Write(Server.HTMLEncode("..."))%>
  MapPath restricts cross-application mapping where appropriate. 如果我们使用MapPath将虚拟路径映射到一个物理路径,那么应当重载Request.MapPath.它接受一个布尔参数, 就可以避免交叉应用映射(corss-application mapping)。
  Character encoding is set by the server(ISO-8859-1 is recommended/UFT 8?)
   
  The ASP.Net Version1.1 validatedRequest option is enabled.
   
  URL Scan 需要安装到Web服务器。
   
  HttpOnly cookie的选项防止客户端跨站攻击(IE6.1 以上的版本才支持)
   
  SQL parameters are used in data access code to validate length and type of data and to help prevent SQL injection.
   
   
认证安全审查(适用于安全工程师)  
   
  Site is partitioned to restricted areas and public areas.
Web.config setting the access public pages and restricted pages. 
   
  Absolute URLs are used for navigation where the site is partitioned with secure and non-secure folders.
   
  Secure Sockets Layer(SSL) is used to proted credentials and authentication cookies.
   
  The slidingExpiration attribute is set to "false" and limited authentication cookie time-outs are used where the the cookie is not protected by using SSL.
   
  The forms authentication cookie is restricted to HTTPS connections by using the requireSSL attribute or the secure cookie property.
  在HTTPS 连接时使用reireSSL 属性或者安全cookie 属性来限制认证信息的cookie.
   
  The authentication cookie is encrypted and integrity checked(protection="All").
   
  Authentication cookies are not persisted.
   
  Application cookies have unique path/name combinations.
   
  Personalization cookies are separate from authentication cookies.
   
  Passwords are not stored directly in the user store; password digests with salt are stored instead.
   
  The impersonation credentials(if using a fixed identity) are encrypted in the configuration file by using Aspnet_setreg.exe
   
  Strong password policies are implemented for authentication. 例如:用户密码必须达到7个字符长度,同时应该至少包含数字和字符。
   
  The<credentials> element is not used inside<forms> element for Forms authetication(use it for testing only)
   
授权验证审查  
  URL authrization is used for page and directory access control.
  File authorization is used with Windows authentication.(使用Windows 认证方式时应该注意检查NTFS权限)
  Principal permission demand are used to secure access to classes and members. Explicit role checks are used if fine-grained authorization is required.
   
配置信息审查  
  Configuration file retrieval is blocked by using HttpForbiddenHandler
  A least-privileged account is used to run ASP.NET.
  Custom account credentials(if used) are encrypted on the <processModle> element by using Aspnet_setreg.exe
  To enforce machine-wide policy, Webconfig setting are locked by using allowOverride="false" in Machine.config.
  SSL is used to protect sensitive data on the wire.
  Sensitive data is not passed across pages; it is maintained using server-side state management.
  Sensitive data is not stored in cookies, hidden form fields, or query strings.
  Do not cache sensitive data. Output caching is offby default.
  Plain text passwords are avoided in Web.config and Machine.config files.(Aspnet_setreg.exe is used to encrypt credentials.)
   
会话状态的审查  
  The session cookie is protected using SSL on all pages that require authenticated access.
  Windows authertication is used to connect to Microsoft SQL ServerAtm state database.
  在SQL server限制对状态数据的访问
  Connection strings are encrypted by using Aspnet_setreg.exe
  The conmmunication channel to state store is encrypted(IPSec or SSL)
参数形式审核  
  View state is protected using message authentication codes(MACs)
  Query strings with server secrets are hashed.
  All input parameters are validated.
  Page.ViewStateUserKey is used to counter one-click attacks.
   
错误信息审核  
  Structured exception handling is used.
  Exception details are logged on the server.
  Generic error pages with harmless message are returned to the client.
  Page-level or application-level error handlers are implemented
  The application distinguishes between errors and exception conditions.
日志处理功能审核  
  配置ASP.NET进程, 以便允许在运行时新建事件源, 或在安装时创建应用程序事件源。
配置文件审核(适用于开发人员)  
  在生产服务器上禁用跟踪 <trace enabled ="false">
  通过设置debug="false",在生产服务器上禁用调试编译
  如果应用程序不使用查看状态, 应将enableViewState 设置为"false" 如果应用程序使用查看状态,应将enableViewState 设置为"true",并将 enableViewStateMac设置为"true"以便检测查看状态的篡改
  将自定义的错误页返回客户端,并通过设置mode="on",防止返回例外详细信息, 由defaultRedirect属性来指定一般错误页面。
  正确配置身份验证模式,以满足应用程序的要求。要强制使用特定的身份验证类型,可以使用带有allowOverride="false"的<location>元素
  对网站进行划分,以便进行公共的和受限制的访问 对身份验证cookie进行加密, 并检查其完整性 身份验证cookie 需要将SSL 状态设置为true 如果不使用SSL,则应将滑动期限设置为false 会话生存时间需要进行限制 cookie的名称和路径是惟一的。
  如果使用模拟标识, 可以通过使用Aspnet_setreg.exe在注册表中对其进行加密。 
  验证角色名称的格式是否正确
  在同一台Web服务器上部署多个ASP.NET web 应用程序时,应使用"Isolate.Apps"设置, 以确保为每个Web应用程序生成单独的密钥。
  如果mode="StateServer",凭据是以加密的形式存储在注册表中,如果mode="SQLServer",则使用Windows身份验证连接到状态存储数据库,并且凭据是以加密的形式存储在注册表中。
  将不用的文件类型映射到HttpForbiddenHandler, 防止通过HTTP方式检索文件,
  用最低权限的账户
  禁用不使用的协议
   
Web Farm审核  
  维护会话状态 会话状态的作用是为了避免服务器的相似性,应该在进程外维护ASPNET的会话状态。 比如, ASPNET SQL Server的状态数据库和远程计算机上的进程外状态服务中应该考虑维护会话状态。 
  加密和验证密钥
一机多用审核  
  使应用程序有独特的计算机密钥,使用<machineKey>上的IsolateApp或者每个应用程序的<machineKey>元素
  启用每个应用程序的表单身份验证Cookie的唯一路径/名称组合
  Web Farm中的所有服务器上的启用公共计算机密钥
  使用代码访问安全信任级别进行进程隔离,并限制对系统资源的访问。
ACL和Permiss ions权限审核  
  ASPNET临时目录,临时目录,.NET框架目录 .NET框架配置目录 网站根目录 系统根目录 全局程序集缓存 内容目录
应用程序BIN目录安全审核  
  配置IIS Web 权限 将执行权限设置为None 需要注意的是Bin目录没有读取,写入,或者目录浏览权限。
   
  为禁止用户访问,可以将关于身份验证的设置全部删除。
   

.NET安全审核检查表的更多相关文章

  1. 关于cnas培训

    关于cnas(2014-12-9----2014-12-12) 目的:完成内审相关知识培训,可以做一个合格的内审人员 过程: 1.为什么会存在实验室 2.iso9000是怎么产生的,以及存在的意义 3 ...

  2. PSP个人项目耗时对比记录表:四则运算

    Personal Software Process Stages Time(%) 计划 5    •估计这个任务需要多长时间 5 开发 60    •需求分析  5    •生成设计文档  5     ...

  3. SQL业务审核与优化

    审核   什么是业务审核 类似与code review 评审业务Schema和SQL设计 偏重关注性能 是业务优化的主要入口之一           审核提前发现问题,进行优化           上 ...

  4. 告别被拒,如何提升iOS审核通过率(上篇)

    iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...

  5. 用php做注册审核

    做注册审核就像前面讲的注册登录一样,也是要连接数据库 首先在数据库内要做这样一张表: 表名为users表 里面的列名分别为用户名,密码,姓名,性别,生日,账户的状态,照片 然后就可以写代码了,要注册的 ...

  6. iOS审核这些坑,腾讯游戏也踩过

    作者:Jamie,专项技术测试工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. WeTest 导读 在App上架苹果应用商店的过程中,相信大多数iOS开 ...

  7. php注册审核

    通过注册审核,判断刚创建的账户是否可以使用. 后台管理员审核通过后,账号可以使用. 通过session 设置只能通过登录入口进入网页. 原理:通过数据库设置账号的一个字段状态,例: isok:1, i ...

  8. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  9. iOS提交AppStore后申请加急审核

    提交审核后进去下面链接申请加急审核链接:https://developer.apple.com/appstore/contact/appreviewteam/index.html 在I would l ...

随机推荐

  1. RunLoop的深入了解

    RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...

  2. c# 获取iis地址

    using System;using System.Collections.Generic;using System.DirectoryServices;using System.Linq;using ...

  3. C#版 Socket编程(最简单的Socket通信功能)

    示例程序是同步套接字程序,功能很简单,只是客户端发给服务器一条信息,服务器向客户端返回一条信息:这里只是一个简单的示例,是一个最基本的socket编程流程,在接下来的文章中,会依次记录套接字的同步和异 ...

  4. 细说new与malloc的10点区别

    前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答new从自由存储区上分配内存,malloc从堆上分配内存:new/de ...

  5. log4j属性详解

    Log4j有三个主要的组件:Loggers(记录器),Appenders  (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻 ...

  6. 常见Android Native崩溃及错误原因

    http://www.droidsec.cn/%E5%B8%B8%E8%A7%81android-native%E5%B4%A9%E6%BA%83%E5%8F%8A%E9%94%99%E8%AF%AF ...

  7. 《JavaScript权威指南》学习笔记 第五天 window对象的方法。

    前天和昨天大致浏览了犀牛书的函数.类与模块.正则表达式.JavaScript扩展.以及服务端的js.这些方面对于我目前的水平来说比较难,一些最基本的概念都不能领会.不过最复杂的知识占用平时使用的20% ...

  8. 算法与设计模式系列1之Python实现常见算法

    preface 常见的算法包括: 递归算法 二分法查找算法 冒泡算法 插入排序 快速排序 二叉树排序 下面就开始挨个挨个的说说原理,然后用Python去实现: 递归算法 一个函数(或者程序)直接或者间 ...

  9. 初识PHP

    初识PHP 虽然是做前端的,可是平时看书.做项目都会与后端PHP相关,但却不是很了解,并经常听PHP大神说:PHP是世界上最好的语言!因此,通过这篇博文学习.总结PHP,来认识认识这个“世界上最好的语 ...

  10. juqery 实现商城循环倒计时

    <html> <hand> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jqu ...