B/S开发安全开发手册
目录
一、 输入验证 3
1. 什么是输入 3
2. 输入验证的必要性 3
3. 输入验证技术 3
主要防御方式 3
辅助防御方式 5
二、 输出编码 8
1. 输出的种类 8
2. 输出编码的必要性 8
3. 输出编码 8
4. 常用测试输出方法 11
三、 防止SQL注入 12
1. 什么是SQL注入 12
2. SQL注入的种类 12
3. 如何防止SQL注入 12
SQL注入产生的原因 12
12
辅助防御方式 15
四、 跨站脚本攻击 17
1. 什么是跨站脚本攻击 17
2. 跨站脚本攻击的危害 17
3. 如何防止跨站脚本攻击 17
主要防御方式 17
辅助防御方式 18
19
五、 跨站请求伪造 21
1. 什么是跨站请求伪造 21
2. 跨站请求伪造的危害 21
3. 如何防止跨站请求伪造 21
21
23
六、 越权操作 24
1. 什么是越权操作 24
2. 越权操作的危害 24
3. 如何防止越权操作 24
七、 IO操作安全 25
八、 缓存泄漏 26
26
26
九、 系统加密 27
1. 主要防御方式 27
十、 信息泄露 29
十一、 日志和监测 31
十二、 32
32
节点 32
节点 32
节点 33
十三、 综合实例讲解 34
参考资料 40
一、 输入验证
1. 什么是输入
输入是编译时以外的全部数据交换。WEB应用程序从各种来源获取输入,例如所有用户发送的,或者应用程序运行的往返数据(用户提交的数据、视图状态、 cookie、查询字符串参数等),以及后台数据(数据库、配置数据和其他数据来源)。所有输入的数据都会在某种情况下影响请求的处理。[1]
2. 输入验证的必要性
为什么输入验证如此重要?第一个原因非常明显:用户都不希望使用虚假的数据。应用程序会处理这些数据,根据它们得出结果,并最终存储到后台数据存储中。网络上的其他应用程序有可能在某种情况下需要这些数据,这些程序可能依赖于数据的正确性。(如果这些数据没有经过验证,就有可能会带来麻烦。)[1]
一切从外部获取的数据都可能是恶意的,如果缺少对数据的验证,将会带来很多安全问题。如EMAIL 验证、用户名验证等。如:缺少对EMAIL的长度验证,在存储EMAIL时将出现数据库溢出错误。缺少对EMAIL的格式验证,在发送邮件时将会给程序带来错误等。
3. 输入验证技术
主要防御方式
防御手段一:验证控件验证
保护级别:★★★★☆
描述:
对于表现层, 可以利用验证控件,对用户输入的数据进行类型、大小、范围的验证。
验证控件必须做到在客户端和服务端同时验证,客户端的验证可以减轻对服务端请求的次数和用户操作的方便性。服务端验证确保数据的正确性,同时也防止用户伪造请求绕过客户端的验证。
优点: 验证简单有效,可重复使用,通常应用于客户端验证较多。
缺点: 验证不完整,有些验证用户可以绕过。
应用举例:
动易SiteFactory系统中,除了使用VS自带的验证控件外,还扩展了和增加了部份验证控件,在 命名空间下,可以看到扩展的RequiredFieldValidator 控件,邮箱验证控件EmailValidator等。具体可以查看文件夹 Core Items 。这些控
网站安全手册 来自淘豆网m.daumloan.com转载请标明出处.