正文:
从互联网诞生以来,网络安全威胁一直伴随着网站的发展,各种Web攻击和信息泄露也从未停止。2011年,中国互联网领域发生了两起较大规模的安全事故。其中一起是新浪微博遭受XSS攻击,另一起是以CSDN为代表的多个网站泄露了用户密码和个人信息。尤其是后者,由于影响范围广泛,部分受影响的网站涉及用户实体资产和交易安全,一时间成为了舆论关注的焦点。
一、XSS攻击
XSS攻击即跨站点脚本攻击(Cross Site Script),指黑客通过篡改网页,注入恶意HTML脚本并保存在网站的服务器上,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。
XSS攻击相对而言是一种“古老”的攻击手段,但却一直在不断变化和演进,攻击者不断创新出新的攻击方式。许多以前认为不可能被利用来进行攻击的漏洞也逐渐被攻击者所利用。因此,防范XSS攻击也变得非常复杂。主要的防御手段有以下两种。
1、过滤和消毒
XSS攻击者通常会通过在请求中插入恶意脚本来实施攻击。这些脚本通常是一般用户输入中不会使用的。如果对请求进行过滤和消毒处理,即对某些HTML危险字符进行转义,例如将”>”转义为”>”,”<"转义为"<"等,就可以防止大部分攻击。为了避免对不必要的内容错误转义,例如在文本匹配后再转义类似于"3<5"中的"<",只有在上下文中出现类似于"< img src="的情况下才进行转义。实际上,消毒几乎是所有网站最重要的XSS防御手段。
2、HttpOnly
HttpOnly是由微软提出的一项安全措施,它禁止页面的JavaScript访问带有HttpOnly属性的Cookie。HttpOnly并不是直接对抗XSS攻击的,而是防止XSS攻击者窃取Cookie。对于存放敏感信息的Cookie,比如用户认证信息等,可以通过给该Cookie添加HttpOnly属性来避免被攻击脚本窃取。
二、注入攻击
注入攻击主要有两种形式,即SQL注入攻击和OS注入攻击。SQL注入攻击的原理如下:攻击者在HTTP请求中注入恶意SQL命令(例如drop table users;),当服务器使用请求参数构造数据库SQL命令时,恶意SQL命令会被一同构造并在数据库中执行。
Web攻击类型
SQL注入攻击需要攻击者对数据库结构有所了解才能进行,攻击者获取数据库表结构信息的手段有如下几种:例如网站使用了开源的组件、错误提示返回数据结构信息等。常用的防御方式有两种:
1、过滤
和防XSS攻击一样,请求参数消毒是一种比较简单粗暴又有效的手段。通过正则匹配,过滤请求数据中可能注入的SQL,例如”drop table”、”\b(?:updatelb.*?\bset|delete\b\W*?\bfrom)b”等。
2、参数绑定
使用预编译手段,绑定参数是最好的防SQL注入方法。目前许多数据访问层框架,例如IBatis、Hibernate等,都实现了SQL预编译和参数绑定,攻击者的恶意SQL会被当做SQL的参数,而不是被执行的SQL命令。
除了SQL注入,攻击者还可以根据具体应用注入OS命令、编程语言代码等,利用程序漏洞来达到攻击目的。
三、CSRF攻击
CSRF ( Cross Site Request Forgery,跨站点请求伪造),攻击者通过跨站请求,以合法用户的身份进行非法操作,如转账交易、发表评论等。CSRF的主要手法是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。其核心是利用了浏览器Cookie或服务器Session策略,盗取用户身份。
CSRF攻击
相应地,CSRF的防御手段主要是识别请求者身份。主要有下面几种方法。
1、表单token
CSRF是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才可以。表单Token通过在请求参数中增加随机数的办法来阻止攻击者获得所有请求参数:在页面表单中增加一个随机数作为Token,每次响应页面的Token都不相同,从正常页面提交的请求会包含该Token值,而伪造的请求无法获得该值,服务器检查请求参数中Token的值是否存在并且正确以确定请求提交者是否合法。
2、验证码
相对来说,验证码是一种更简单有效的方法,当用户提交请求时,需要输入验证码以防止被攻击者伪造请求。然而,输入验证码会给用户带来糟糕的体验,因此只在必要的情况下使用,例如支付交易等关键页面。
3、Referer检查
HTTP请求头中的Referer字段记录了请求的来源,可以通过检查请求的来源来验证其合法性。许多网站使用这个功能来防止图片盗链(如果图片的访问来源不是自己网站的页面,则拒绝访问)。
三、其他攻击和漏洞
上述只是列举了常见的三种方法,还有其他一些方法也经常被黑客利用,例如直接返回敏感信息的错误堆栈信息,包含敏感信息的HTML注释,没有限制文件类型的文件上传(黑客上传恶意脚本),以及路径遍历等。
转载请注明:汇站网 » Web网站常见应用攻击类型与防御措施


相关文章
- 禁止用户访问网站地图,但允许搜索引擎爬虫访问的代码 2023-09-22
- 如何利用HTML代码来优化SEO效果 2023-09-21
- 保障网站安全,采用HTTPS加密 2023-09-20
- 响应式/自适应网站在百度友好的优化方面发挥着重要作用 2023-09-20
- 宝塔迁移网站时出现错误:404,您所请求的文件不存在! 2023-09-15
- 使用PHP代码限制只允许国内IP地址访问网站 2023-09-15
- 宝塔面板(BT)安全:优化网站访问速度和简单实施CC防护措施 2023-09-14
- Web网站常见应用攻击类型与防御措施 2023-09-13
- 如何关闭Mysql打开的3306端口以防止系统遭到入侵 2023-09-13
- nginx下配置网站防盗链教程 2023-09-02