💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# CSRF ## CSRF是什么? 英文全名是 cross-site request forgery,中文全称是跨站请求伪造。 ## CSRF可以干什么? 攻击者以受害者的名义请求网站。 ## CSRF的原理 ![](https://box.kancloud.cn/02f816e42d067ae5f5e199938d47f5a9_968x545.png) 从上图可以发现,完成一次CSRF攻击至少要满足两点 1. 受害者登陆了安全网站A 2. 未退出A的情况下访问危险网站B ### 示例1 * 银行网站A,通过GET请求来完成转账操作,如:http://www.mybank.com/Transfer.php?toBankId=11&money=1000 * 危险网站B,有一段HTML代码如下: ``` <img src="http://www.mybank.com/Transfer.php?toBankId=11&money=1000"> ``` 首先你登陆了银行网站A,然后访问危险网站B,然后你会发现自己的银行账户上少了1000元。 原因如下,首先银行网站A违反了HTTP规范,使用GET请求更新数据。 ### 示例2 为了解决示例1的问题,银行网站改用POST转账。 同时,危险网站B也进行了改版,通过隐藏的 iframe 提交POST请求。 用户未退出银行网站A的情况下访问危险网站B还是丢失了1000. ### 小结 ``` 示例1攻击成本低,只需要通过<img> 标签发起get请求,通过在后端添加请求限制,修改数据支持post来解决。 示例2通过js发起post请求,在提交数据时新增字段token(一次性使用),后端接受数据时验证token。 ``` ## CSRF的防御 每次刷新页面生成随机token并下发到前端页面,后端接受表单时验证token。 ***** # XSS ## XSS是什么? 英文全称是 Cross Site Scripting,中文名称是跨站脚本攻击。 ## XSS可以干什么? 用户输入的内容被直接展示在页面上,内容中包含脚本时会被浏览器执行。