web服务安全 之 应用程序威胁与对策

   

          应用程序威胁与对策
分析应用程序级威胁的较好方法就是根据应用程序缺陷类别来组织它们。
1:输入验证
 缓冲区溢出,跨站点脚本编写,SQL 注入,标准化
防止缓冲区溢出的对策:
  (1) 执行完全的输入验证。这是防护缓冲区溢出的首要对策。尽管您的应用程序中可能存在一个错误,它允许期望的输入超出容器的边界,但意外的输入仍是引起缺陷的主要原因。通过验证输入的类型、长度、格式和范围,对输入进行 约束。
   (2)如果有可能,限制您的应用程序使用非托管代码,并彻底检查非托管 API,确保输入得到正确验证。
   (3)检查调用非托管 API 的托管代码,确保只有适当的数值才能作为参数传递给非托管 API

防止跨站点脚本的对策
   (1)执行完全的输入验证。您的应用程序必须确保来自查询字符串、窗体字段和 cookie 的输入对于应用程序来说是合法的。将所有的用户输入都认为可能是恶意的,筛选或者清理下游代码的上下文。验证所有的输入是否为已知的有效值,然后拒绝其他所有的输入。用正则表达式验证通过 HTML 窗体字段、cookie 和查询字符串而接收到的输入数据
   (2)执行完全的输入验证。您的应用程序必须确保来自查询字符串、窗体字段和 cookie 的输入对于应用程序来说是合法的。将所有的用户输入都认为可能是恶意的,筛选或者清理下游代码的上下文。验证所有的输入是否为已知的有效值,然后拒绝其他所有的输入。用正则表达式验证通过 HTML 窗体字段、cookie 和查询字符串而接收到的输入数据
   (3)利用 HTMLEncodeURLEncode 函数对包括用户输入在内的任何输出进行编码。这就将可执行脚本转换成无害的 HTML 

防止 SQL 注入的对策包括:
  (1)执行完全的输入验证。应用程序在将请求发送给数据库之前要对输入进行验证
  (2)利用参数化存储过程来访问数据库,确保不会将输入字符串看作是可执行语句。如果不能使用存储过程,在构建 SQL 命令时要利用 SQL 参数
  (3)利用最低特权帐户来与数据库连接

针对标准化问题的对策包括:
 (1)尽可能避免将文件名称作为输入,而是使用最终用户不能更改的绝对文件路径
 (2)确信文件名称格式正确(如果必须接受将文件名称作为输入的话),并且要在应用程序上下文内对其进行验证。例如,检查它们是否在您的应用程序的目录层次结构内
 (3)确保字符编码设置正确,以限制输入的表示方法。检查您的应用程序的 Web.config 是否已经在 <globalization> 元素中设置了 requestEncodingresponseEncoding 属性

你可能感兴趣的:(应用程序)