Web安全开发指南--数据验证
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.4、DOM型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安全开发指南--数据验证的更多相关文章
- axis1,xfire,jUnit 测试案列+开Web Service开发指南+axis1.jar下载 代码
axis1,xfire,jUnit 测试案列+Web Service开发指南(中).pdf+axis1.jar下载 代码 项目和资源文档+jar 下载:http://download.csdn. ...
- 【web开发 | 移动APP开发】 Web 移动开发指南(2017.01.05更新)
版本记录 - 版本1.0 创建文章(2016.12.30) - 版本1.1 更正了hybird相关知识:增加了参考文章(2017.01.05): + Web APP更正为响应式移动站点与页面,简称响应 ...
- Web安全开发指南--文件系统
6.1.上传文件功能 简要描述 文件上传漏洞是由于文件上传功能实现代码没有对用户上传的文件进行正确处理,导致允许攻击者向服务某个目录上传文件. 解决方案 上传文件功能只对登录用户开放: 同时通过文件头 ...
- Web安全开发指南--异常错误处理与日志审计
1.异常错误处理与日志审计 5.1.日志审计系统安全规则 1 日志系统能够记录特定事件的执行结果(比如 成功或失败). 确保日志系统包含如下重要日志信息: 1. 日志发生的时间: 2. 事件的严重 ...
- Web安全开发指南--会话管理
1.会话管理 3.1.会话管理安全规则 1 避免在URL携带session id. 2 使用SSL加密通道来传输cookie. 3 避免在错误信息和调试日志中记录session id. 4 使用框架自 ...
- web安全开发指南--权限管理
2.1 访问控制安全规则 1 访问控制必须只能在服务器端执行. 2 只通过session来判定用户的真实身份,避免使用其它数据域的参数(比如来自cookie.hidden域 ...
- web安全开发指南--认证
1.认证 1.1. 认证和密码管理安全规则 1 认证控制必须只能在服务器端执行. 2 除了指定为公开的资源,对所有其它资源的访问都必须先经过认证. 3 为所有关键凭证实施防"暴力 ...
- Lightning Web Components 开发指南(二)
Lightning Web Components 是自定义元素使用html 以及现代javascript进行构建. Lightning Web Components UI 框架使用web compon ...
- 移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)
1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP出于性能提升或用户体验等原因,将其做在客户端完成, ...
随机推荐
- LINUX内核面试题摘选
转载:http://blog.csdn.net/zm1_1zm/article/details/77231197 1) Linux中主要有哪几种内核锁? 答:Linux的同步机制从2.0到2.6以来不 ...
- 一个无线通信类投稿的期刊list
转载一个,但是有些期刊的影响因子不是很对,要投的时候还是再到期刊主页上面看一看吧~ 期刊缩写 期刊全名 近年影响因子 P IEEE Proceedings Of The IEEE 3.686 IEEE ...
- python基础===Excel处理库openpyxl
openpyxl是一个第三方库,可以处理xlsx格式的Excel文件. 安装: pip install openpyxl 对如下excel进行读取操作,如图: from openpyxl import ...
- 从LFS官方文档构建完整Linux系统
从LFS官方文档构建完整Linux系统 http://www.cnblogs.com/sonofdark/p/4962609.html 这不是新手教程!!! Parallels Desktop (为防 ...
- MySQL的sql_mode解析与设置
https://blog.csdn.net/hhq163/article/details/54140286 https://blog.csdn.net/ccccalculator/article/de ...
- [ python ] hasattr()、getattr()、setattr() 三者关系及运用
hasattr(object, name) 判断一个对象(object)是否存在name属性或方法,返回boolean值,有name属性返回True, 否则返回False In [1]: class ...
- java之基本数据类型与引用数据类型
基本数据类型 需要注意的是字符是基本数据类型,但是字符串不是基本数据类型. 引用数据类型 类.接口类型.数组类型.枚举类型.注解类型. (上面说的字符串String属于引用数据类型中“类”的范畴) 两 ...
- ZOJ-3314
CAPTCHA Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %lld , %llu Java class ...
- 【转载】PDB命令行调试Python代码
转载自这里. (博主按:PDB调试python代码和用GDB调试c++代码很类似) 你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多.然而, ...
- 支持flv的播放神器
h1:让浏览器支持flv去https://github.com/Bilibili/flv.js h2:让手机电脑都支持mp4使用: <link rel="stylesheet" ...