作为一个资深的、又比较老的开发人员至少也得碰到被别人进行JavaScript攻击过的情景。
JSONP导致被攻击的情况
jsonp是一种前端ajax请求,后端支持一下就可以达到跨域的情况;当然这个只能支持Get。那么这个攻击是怎么由来的呢?我们看一下后端的代码:
<code>/<code>
前台访问http://xxx.com/test.php?callback=callback
回显:callback({"test":"test"})
那么这时候如果明白前端html的执行过程就可以在这个时间进行构造了。
http://xxx.com/test.php?callback=
用上面的连接打开之后。咚,一个小框就出来了...
搜索框
都知道搜索框是由一个input框组成的,当然高级的也有。本次案例就是拿简单的input框吧。
<code><
input
type
="text"
value
="xxx"
name
="keyword"
/><
button
>搜索button
>/<code>
这时候输入test,点击提交之后URL地址:http://xxx.com/test.php?keyword=test
我们这时候再查看源代码:
<code><input
type
="text"
value="test"
name="keyword"
/>/<code>
ok,那我们输入 "
http://xxx.com/test.php?keyword="
那么这时候的源代码:
<code><input
type
="text"
value=""
" name="
keyword"/>
/<code>
咚,又一个小框框。
比较鸡肋的Self-XSS
从单词上就可以理解,self自己,也就是自己x自己。其实这个构造起来比较简单,也容易触发,但是构不成危害,所以self-xss,各大src也不收,毕竟x自己...
反射XSS只是弹框吗?
从上面案例中看只是弹一个框,真的只是一个弹框的危害吗?
xss是可以在用户侧去执行恶意构造的js脚本,那么我们都知道javascript是可以获取到cookie,页面等信息的。那么我构造一个payload,专门用于去获取cookie,再把cookie回传回来这时候是不是就可以拿cookie直接登录别人的账号了...
不要去攻击别人,但是要知道这个攻击的原理和危害。
防护
针对用户的输入,会部做转义处理,谨记一点,用户所有输入不可信,即使是在页面选择的!!!