xss 跨站点脚本攻击
web服务页面里有恶意代码,当用户使用浏览器访问这个页面时,恶意代码被执行。
xss属于针对客户端的攻击,受害者最终是用户,网站管理员也属于用户之一,攻击者可以通过xss假冒管理者身份对网站实施攻击。
危害
盗取用户cookie,假冒用户
修改网页内容
上传木马
判断是否存在漏洞:输入一段JavaScript的代码观察是否可以被执行
<script>alert('hi')</script>
黑客输入的数据在浏览器上被执行
xss分类
1.反射型
特点:反射型也称非持久型,这种类型无法将恶意代码保存到网站中,只能当前的url生效,因此它需要用户自行去触发,通常出现在网站的搜索栏、用户登入口等地方。
2.存储型
特点:也称持久型,这种类型的可以将恶意代码保存到网站中,在用户进入网站后自动执行代码。通常出现在网页的留言板中,网页中可以保存内容的地方。
xss反射型
low
直接输入判断语句,直接出结果
medium
相比于low多了一个函数语句,str_replace( '<script>', '', $_GET[ 'name' ] )
,作用是将标签去掉,但它不区分大小写,而且只去掉了一次,我们可以把标签写为<SCRIPT>
,或者写为<scri<scrip>rip>
,依旧留下了标签。
high
high级别换了个过滤字符的方法preg_replace
后面跟着一个类似于正则表达式的东西,将符合此类型的字符串过滤掉。那么当我们想要绕过这个漏洞时就不用之前的方法,换一个,改为<img src=1 onerror=alert('hi')>
就可以绕过过滤。
如何防御xss:
利用strip_tags()函数过滤字符串中的HTML标签或者利用htmlspecalchars()函数对敏感字符进行转换,使得不在转义。主要是对输入和输出过滤,在这里加各种条件。