Laravel5中防止XSS跨站攻击的方法
本文实例讲述了Laravel5中防止XSS跨站攻击的方法。分享给大家供大家参考,具体如下:
Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HTMLPurifier 防止 XSS 跨站攻击。
1、安装
HTMLPurifier 是基于 PHP 编写的富文本 HTML 过滤器,通常我们可以使用它来防止 XSS 跨站攻击,更多关于 HTMLPurifier的详情请参考其官网:http://htmlpurifier.org/。Purifier 是在 Laravel 5 中集成 HTMLPurifier 的扩展包,我们可以通过 Composer 来安装这个扩展包:
- composer require mews/purifier
安装完成后,在配置文件config/app.php的providers中注册HTMLPurifier服务提供者:
- 'providers' => [
- // ...
- Mews\Purifier\PurifierServiceProvider::class,
- ]
- 然后在aliases中注册Purifier门面:
- 'aliases' => [
- // ...
- 'Purifier' => Mews\Purifier\Facades\Purifier::class,
- ]
2、配置
要使用自定义的配置,发布配置文件到config目录:
- php artisan vendor:publish
这样会在config目录下生成一个purifier.php文件:
- return [
- 'encoding' => 'UTF-8',
- 'finalize' => true,
- 'preload' => false,
- 'cachePath' => null,
- 'settings' => [
- 'default' => [
- 'HTML.Doctype' => 'XHTML 1.0 Strict',
- 'HTML.Allowed' => 'div,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]',
- 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align',
- 'AutoFormat.AutoParagraph' => true,
- 'AutoFormat.RemoveEmpty' => true
- ],
- 'test' => [
- 'Attr.EnableID' => true
- ],
- "youtube" => [
- "HTML.SafeIframe" => 'true',
- "URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%",
- ],
- ],
- ];
3、使用示例
可以使用辅助函数clean:
- clean(Input::get('inputname'));
或者使用Purifier门面提供的clean方法:
- Purifier::clean(Input::get('inputname'));
还可以在应用中进行动态配置:
- clean('This is my H1 title', 'titles');
- clean('This is my H1 title', array('Attr.EnableID' => true));
或者你也可以使用Purifier门面提供的方法:
- Purifier::clean('This is my H1 title', 'titles');
- Purifier::clean('This is my H1 title', array('Attr.EnableID' => true));
php防止xss攻击
- <?PHP
- function clean_xss(&$string, $low = False)
- {
- if (! is_array ( $string ))
- {
- $string = trim ( $string );
- $string = strip_tags ( $string );
- $string = htmlspecialchars ( $string );
- if ($low)
- {
- return True;
- }
- $string = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $string );
- $no = '/%0[0-8bcef]/';
- $string = preg_replace ( $no, '', $string );
- $no = '/%1[0-9a-f]/';
- $string = preg_replace ( $no, '', $string );
- $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
- $string = preg_replace ( $no, '', $string );
- return True;
- }
- $keys = array_keys ( $string );
- foreach ( $keys as $key )
- {
- clean_xss ( $string [$key] );
- }
- }
- //just a test
- $str = 'bitsCN.com<meta http-equiv="refresh" content="0;">';
- clean_xss($str); //如果你把这个注释掉,你就知道xss攻击的厉害了
- echo $str;
- ?>
Laravel5中防止XSS跨站攻击的方法的更多相关文章
- XSS跨站攻击
目录 1 XSS跨站攻击简介 1 1.1 什么是XSS 1 1.2 XSS的分类 1 1.3 XSS的危害 1 2 XSS的攻击原理 1 2.1 本地式漏洞攻击 1 2.2 存储式漏洞攻击 2 2.3 ...
- 云锁Linux服务器安全软件安装及防护webshell、CC、XSS跨站攻击设置
无论我们在使用电脑,还是使用VPS/服务器的时候,最为担心的就是服务器是否有安全问题,尤其是网站服务器再遭受攻击的时候如何得到防护.对于大 部分站长用户来说,我们可能只会使用基础的环境,如果真遇到问题 ...
- 用shell脚本批量进行xss跨站攻击请求
由于执行的xss攻击请求他多了,初步估计要执行83次,而且还要执行3篇,如果手工一个一个去执行,说出去,我还配叫自动化大师吗: 有鉴于此,边打算自己编写一个脚本进行批量执行: 而短脚本的编写,非she ...
- DDOS、CC、sql注入,跨站攻击防御方法
web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...
- Cross-Site Scripting XSS 跨站攻击全攻略 分类: 系统架构 2015-07-08 12:25 21人阅读 评论(2) 收藏
原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/ 题记:这是我在<黑客X档案>08年第5期发表的一篇文章, ...
- 应用安全-Web安全-XSS(跨站攻击)攻防整理
分类 反射型 存储型 DOM型 XSF(Flash XSS) PDFXSS MHTML协议跨站(MHTML,data) 字符编码(UTF-7 XSS) 富文本编辑器测试 - 输入框 <img S ...
- web安全性测试——XSS跨站攻击
1.跨站攻击含义 XSS:(Cross-site scripting)全称"跨站脚本",是注入攻击的一种.其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布 ...
- 宽字节XSS跨站攻击
简介 宽字节跨站漏洞多发生在GB系统编码. 对于GBK编码,字符是由两个字节构成,在%df遇到%5c时,由于%df的ascii大于128,所以会自动拼接%5c,吃掉反斜线.而%27 %20小于asci ...
- XSS跨站攻击靶场-通关笔记
XSS攻击是Web攻击中最常见的攻击手法之一,XSS中文名跨站脚本攻击,该攻击是指攻击者在网页中嵌入恶意的客户端脚本,通常是使用JS编写的恶意代码,当正常用户访问被嵌入代码的页面时,恶意代码将会在用户 ...
随机推荐
- MySQL基础笔记(二) 完整性约束
我们知道,一种数据模型必须包含三个基本的部分: 构造机制(数据结构):主要描述数据的类型.内容.性质以及数据间的联系等. 运算机制(数据操作):主要描述在相应的数据结构上的操作类型和操作方式. 约束机 ...
- Mac 使用smb协议连接FTPserver
在Mac中,能够通过smb协议作为client连接到server,比如一个FTPserver,然后获取上面的共享文件. 方法: 1.在Finder菜单中点击前往 -- 连接server. 也能够Com ...
- Vue调试工具 vue-devtools
vue-devtools是一款基于chrome浏览器的插件,可以帮我们快速调试vue项目 vue-devtools手动安装: 第一步:找到vue-devtools的github项目(https://g ...
- webstorm 6.0 注册码
User Name: EMBRACE License Key: ===== LICENSE BEGIN ===== 24718-12042010 00001h6wzKLpfo3gmjJ8xoTPw ...
- 基于开源项目的在线网络视频直播项目---pc端的推流
https://github.com/winlinvip/simple-rtmp-server/issues/66 https://github.com/justinmakaila/iOS-Frame ...
- 【iOS系列】- UITableView的使用技巧
[iOS系列]- UITableView的使用 UITableView的常用属性 indexpath.row:行 indexpath.section:组 separatorColor:分割线的颜色 s ...
- UESTC 982质因子分解
读入一个自然数,将nn分解为质因子连乘的形式输出. Input 有多组测试数据.输入的第一行是整数TT(0<T≤10000),表示测试数据的组数.每一组测试数据只有一行,包含待分解的自然数nn. ...
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX【转】
本文转载自:http://www.cnblogs.com/52php/p/5681751.html 四.更好一点的Hello World 没有最好,只有更好 从本小节开始,后面所有的构建我们都将采用 ...
- ubuntu LNMP环境下安装Redis,以及php的redis扩展
1.下载 sudo wget http://download.redis.io/releases/redis-4.0.9.tar.gz 2.解压 sudo tar zvxf redis-4.0.9.t ...
- echo 到 stderr
This question is old, but you could do this, which facilitates reading: >&2 echo "error& ...