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出于性能提升或用户体验等原因,将其做在客户端完成, ...
随机推荐
- 【jzoj6.24模拟B】
这场真是无聊,搬远古原题…… xjb做了做,(居然没AK真是身败名裂) A.教主的花园 答案明显具有可二分性,二分答案判定下就行. #include<bits/stdc++.h> #def ...
- 1833: [ZJOI2010]count 数字计数——数位dp
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1833 省选之前来切一道裸的数位dp.. 题意 统计[a,b]中0~9每个数字出现的次数(不算 ...
- hive-group by的时候把两个字段变成map
源表结构: pcgid string mobilegid string value double 测试数据如下: p1 m1 ...
- 八:Zookeeper开源客户端Curator的api测试
curator是Netflix公司开源的一套ZooKeeper客户端,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作.包括连接重连,反复注册Watcher等.实现了Fluent ...
- WordPress主循环(The Loop)函数have_posts(),the_post()详解
WordPress中调用文章标题是the_title();调用文章内容时用到the_content();调用文章的作者时用到the_author();等等这些函数,都需要在主循环中使用,下面就介绍一下 ...
- AC日记——[HNOI2014]世界树 bzoj 3572
3572 思路: 虚树+乱搞: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300005 #define ...
- 使用vue2.0 vue-router vuex 模拟ios7操作
其实你也可以,甚至做得更好... 首先看一下效果:用vue2.0实现SPA:模拟ios7操作 与 通讯录实现 github地址是:https://github.com/QRL909109/ios7 如 ...
- LR运行场景时出现的error
LR运行场景时出现的error 1.Action.c(24): Error -27740: Overlapped transmission of request to "home.asiai ...
- LoadRunner11破解方法
前期准备:LoadRunner11 下载LoadRunner破解文件 下载LoadRunner注册表清理工具 下载 LoadRunner11破解方法:一.覆盖破解文件首先请下载LoadRunner破解 ...
- Spark streaming技术内幕6 : Job动态生成原理与源码解析
原创文章,转载请注明:转载自 周岳飞博客(http://www.cnblogs.com/zhouyf/) Spark streaming 程序的运行过程是将DStream的操作转化成RDD的操作,S ...