1、数据验证

4.1、输入数据验证安全规则

1

数据验证必须放在服务器端进行。

2

至少对输入数据的数据类型、数据范围和数据长度进行验证。

3

所有来自不可信数据源(比如网络、用户命令、数据库和文件系统等)的数据都要进行有效验证(参考11.7 ESAPI方案)。

4

来自客户端的所有参数的数据都要进行验证,比如HTTP header的键值对。

5

数据验证不通过时应默认拒绝处理该请求。

6

应尽可能地使用“白名单”而非“黑名单”的方式对数据进行验证。

4.2、输出数据编码安全规则

数据编码必须放在服务器端进行。

系统应依据上下文环境对自非信任域的数据进行输出编码后再返回给客户端,html编码就是一个很好的例子,但不适用于所有上下文环境,详情请参考【反射型、存储型XSS安全规则】。

 

4.3、反射型、存储型XSS安全规则

将用户数据输出到html body某处时,必须经过html转义,比如:

<body>...【用户数据】...</body>

<div>...【用户数据】...</div>

以及其它普通的html标签,比如p, b, td等等。

ESAPI sample:

String safe =

ESAPI.encoder().encodeForHTML( request.getParameter( "input" ) );

将用户数据输出到html 标签的属性时,必须经过标签属性的转义。

注意:不包含条规则定义的安全上下文以外,其它上下文都是无法安全地转义的,应避免出现,比如:

<script>...【用户数据】...</script>  //直接输出到js标签内

<!--...【用户数据】...-->           //直接输出到注释内

<div ... 【用户数据】...=test />     //直接输出到标签属性名

<..【用户数据】... href="/test" />   //作为标签名使用

<style>...【用户数据】...</style>    //直接输出到CSS

……

 

4.4DOM型XSS安全规则

简要描述

一种基于DOM的跨站,这是客户端脚本自身解析不正确导致的安全问题。

解决方案

在输出到DOM前必须确定插入HTML的位置,根据上面的反射型、存储型XSS安全规则进行过滤。

备注

纯DOM跨站,可以不用与服务器发生数据交互。

4.5、Flash型XSS安全规则

简要描述

通过Flash执行javascript

解决方案

把Flash的参数”allowScriptAccess”置为”never”;

把Flash的参数”allowNetworking”置为”none”或”internal”;

使用navigateToURL(as3)或getURL(as2)时必须验证link

参数,不得含有伪协议(详见XSS安全规则)

如果Flash中有使用ExternalInterface.call,必须过滤该函数的所有参数(详见XSS安全规则)

如果Flash中有使用ExternalInterface.addCallback,必须过滤该函数的第一个参数(详见XSS安全规则)

备注

注意设置网站根目录下的crossdomain.xml

4.6、SQL注入

简要描述

当应用程序使用用户输入数据来构造动态sql语句以访问数据库时,就会发生sql注入攻击。

解决方案

1、  使用参数化查询(预编译语句)【参考附录11.1.1】。

2、  安全地使用存储过程【参考附录11.1.2】。

3、  转义用户输入【不建议,参考11.1.3】。

备注

请参考附录11.1的SQL注入防范代码样例

 

注:如果IE浏览器显示格式不正确,请使用chrome浏览器

Web安全开发指南--数据验证的更多相关文章

  1. axis1,xfire,jUnit 测试案列+开Web Service开发指南+axis1.jar下载 代码

    axis1,xfire,jUnit 测试案列+Web Service开发指南(中).pdf+axis1.jar下载    代码 项目和资源文档+jar 下载:http://download.csdn. ...

  2. 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)

    版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...

  3. Web安全开发指南--文件系统

    6.1.上传文件功能 简要描述 文件上传漏洞是由于文件上传功能实现代码没有对用户上传的文件进行正确处理,导致允许攻击者向服务某个目录上传文件. 解决方案 上传文件功能只对登录用户开放: 同时通过文件头 ...

  4. Web安全开发指南--异常错误处理与日志审计

    1.异常错误处理与日志审计 5.1.日志审计系统安全规则 1 日志系统能够记录特定事件的执行结果(比如 成功或失败). 确保日志系统包含如下重要日志信息: 1.  日志发生的时间: 2.  事件的严重 ...

  5. Web安全开发指南--会话管理

    1.会话管理 3.1.会话管理安全规则 1 避免在URL携带session id. 2 使用SSL加密通道来传输cookie. 3 避免在错误信息和调试日志中记录session id. 4 使用框架自 ...

  6. web安全开发指南--权限管理

    2.1               访问控制安全规则 1 访问控制必须只能在服务器端执行. 2 只通过session来判定用户的真实身份,避免使用其它数据域的参数(比如来自cookie.hidden域 ...

  7. web安全开发指南--认证

    1.认证 1.1.       认证和密码管理安全规则 1 认证控制必须只能在服务器端执行. 2 除了指定为公开的资源,对所有其它资源的访问都必须先经过认证. 3 为所有关键凭证实施防"暴力 ...

  8. Lightning Web Components 开发指南(二)

    Lightning Web Components 是自定义元素使用html 以及现代javascript进行构建. Lightning Web Components UI 框架使用web compon ...

  9. 移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)

    1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP出于性能提升或用户体验等原因,将其做在客户端完成, ...

随机推荐

  1. 【Android XML】Android XML 转 Java Code 系列之 Selector(2)

    今天我们要把drawable下的selector的XML文件转换成Java代码.(打包进jar,不依赖apk) 在转换工具中的代码为: https://github.com/SickWorm/Andr ...

  2. 判断cookie创建的时间是否已经24小时

    def read_cookie(self): cookiesfilepath="cookies%s" % self.uid if os.path.exists(cookiesfil ...

  3. 2015多校第9场 HDU 5405 Sometimes Naive 树链剖分

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5405 题意: 给你一棵n个节点的树,有点权.        要求支持两种操作: 操作1:更改某个节点的 ...

  4. C中级 消息队列设计

    引言  - 补充好开始 消息队列在游戏服务器层应用非常广泛. 应用于各种耗时的IO操作业务上.消息队列可以简单理解为 [消息队列 = 队列 + 线程安全]本文参照思路如下, 最后献上一个大神们斗法的场 ...

  5. LeetCode解题报告—— Combination Sum & Combination Sum II & Multiply Strings

    1. Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T) ...

  6. redis之(十三)redis的三种启动方式

    Part I. 直接启动 下载 官网下载 安装 tar zxvf redis-2.8.9.tar.gz cd redis-2.8.9 #直接make 编译 make #可使用root用户执行`make ...

  7. 596. Classes More Than 5 Students

    There is a table courses with columns: student and class Please list out all classes which have more ...

  8. javascript大神修炼记(5)——OOP思想(封装)

    读者朋友们好,前面我们已经讲解了有关javascript的基础,从今天的内容开始,我们就要开始讲有关封装的内容了,这里,我们就一点一点地接触到OOP(面向对象编程)了,如果作为一门语言使用的程序员连O ...

  9. cssBase.css你应该有一个

    @charset "utf-8"; /*! * @名称:base.css * @功能:1.重设浏览器默认样式 * 2.设置通用原子类 */ /* 防止用户自定义背景颜色对网页的影响 ...

  10. bzoj 2938 AC自动机 + dfs判环

    #include<bits/stdc++.h> #define LL long long #define ll long long #define fi first #define se ...