学习笔记: http://www.imooc.com/video/9054
XSS攻击 (Cross Site Scripting)
账号盗取:
document.cookie
index.php如何处理cookie值
httponly: cookie被标记为httponly,js代码无法读取cookie。阻止xss攻击
非法转账:
以支付宝的转账界面为例,可以结合console测试:
document.getElementById('ipt-search-key').value = "user@xx.com"
document.getElementById('amount').value = '100';
document.getElementById('reason').value = "劫富济贫";
document.getElementById('ui-button-text')[0].click();
再考虑如何实现注,
反射型xss: www.xx.com/web/index.php?r=article/post&name=<script>alert(''hello word)</script>
如果获取参数,然后执行类似echo Yii:$app->request->get('name')
的操作,就会执行代码,实现反射。 chrome会自动过滤,除非服务端添加响应头X-XSS-Protection
值设为'0'
CSRF
get请求更容易遭到CSRF攻击。
post:常用伪造form表单的方式进行CSRF攻击。
避免:
- 验证码
- 请求头中的Referer头,服务器通过它知道从哪跳转的。(但是不是所有的请求都有Referer头)
- 防伪标志,提交表单时进行验证。(wordpress:文章表单隐藏字段,浏览器随机分配值,提交时进行验证)
- yii:
//controller文件
...
$csrfToken = Yii:$app->request->csrcToken;
return $this->renderPartial('test',['csfToken'=>$csrfToken]);
//view文件
<input type='hidden' name="_csrf" value='<?=$csrfToken;?>'>
SQL注入
文件上传漏洞