学习笔记: 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注入

文件上传漏洞