本文实例讲述了Laravel5中防止XSS跨站攻击的方法。分享给大家供大家参考,具体如下:

Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HTMLPurifier 防止 XSS 跨站攻击。

1、安装

HTMLPurifier 是基于 PHP 编写的富文本 HTML 过滤器,通常我们可以使用它来防止 XSS 跨站攻击,更多关于 HTMLPurifier的详情请参考其官网:http://htmlpurifier.org/。Purifier 是在 Laravel 5 中集成 HTMLPurifier 的扩展包,我们可以通过 Composer 来安装这个扩展包:

  1. composer require mews/purifier

安装完成后,在配置文件config/app.php的providers中注册HTMLPurifier服务提供者:

  1. 'providers' => [
  2. // ...
  3. Mews\Purifier\PurifierServiceProvider::class,
  4. ]
  5. 然后在aliases中注册Purifier门面:
  6. 'aliases' => [
  7. // ...
  8. 'Purifier' => Mews\Purifier\Facades\Purifier::class,
  9. ]

2、配置

要使用自定义的配置,发布配置文件到config目录:

  1. php artisan vendor:publish

这样会在config目录下生成一个purifier.php文件:

  1. return [
  2. 'encoding' => 'UTF-8',
  3. 'finalize' => true,
  4. 'preload' => false,
  5. 'cachePath' => null,
  6. 'settings' => [
  7. 'default' => [
  8. 'HTML.Doctype' => 'XHTML 1.0 Strict',
  9. 'HTML.Allowed' => 'div,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]',
  10. 'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align',
  11. 'AutoFormat.AutoParagraph' => true,
  12. 'AutoFormat.RemoveEmpty' => true
  13. ],
  14. 'test' => [
  15. 'Attr.EnableID' => true
  16. ],
  17. "youtube" => [
  18. "HTML.SafeIframe" => 'true',
  19. "URI.SafeIframeRegexp" => "%^(http://|https://|//)(www.youtube.com/embed/|player.vimeo.com/video/)%",
  20. ],
  21. ],
  22. ];

3、使用示例

可以使用辅助函数clean:

  1. clean(Input::get('inputname'));

或者使用Purifier门面提供的clean方法:

  1. Purifier::clean(Input::get('inputname'));

还可以在应用中进行动态配置:

  1. clean('This is my H1 title', 'titles');
  2. clean('This is my H1 title', array('Attr.EnableID' => true));

或者你也可以使用Purifier门面提供的方法:

  1. Purifier::clean('This is my H1 title', 'titles');
  2. Purifier::clean('This is my H1 title', array('Attr.EnableID' => true));

php防止xss攻击

  1. <?PHP
  2. function clean_xss(&$string, $low = False)
  3. {
  4. if (! is_array ( $string ))
  5. {
  6. $string = trim ( $string );
  7. $string = strip_tags ( $string );
  8. $string = htmlspecialchars ( $string );
  9. if ($low)
  10. {
  11. return True;
  12. }
  13. $string = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $string );
  14. $no = '/%0[0-8bcef]/';
  15. $string = preg_replace ( $no, '', $string );
  16. $no = '/%1[0-9a-f]/';
  17. $string = preg_replace ( $no, '', $string );
  18. $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
  19. $string = preg_replace ( $no, '', $string );
  20. return True;
  21. }
  22. $keys = array_keys ( $string );
  23. foreach ( $keys as $key )
  24. {
  25. clean_xss ( $string [$key] );
  26. }
  27. }
  28. //just a test
  29. $str = 'bitsCN.com<meta http-equiv="refresh" content="0;">';
  30. clean_xss($str); //如果你把这个注释掉,你就知道xss攻击的厉害了
  31. echo $str;
  32. ?>

Laravel5中防止XSS跨站攻击的方法的更多相关文章

  1. 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 ...

  2. 云锁Linux服务器安全软件安装及防护webshell、CC、XSS跨站攻击设置

    无论我们在使用电脑,还是使用VPS/服务器的时候,最为担心的就是服务器是否有安全问题,尤其是网站服务器再遭受攻击的时候如何得到防护.对于大 部分站长用户来说,我们可能只会使用基础的环境,如果真遇到问题 ...

  3. 用shell脚本批量进行xss跨站攻击请求

    由于执行的xss攻击请求他多了,初步估计要执行83次,而且还要执行3篇,如果手工一个一个去执行,说出去,我还配叫自动化大师吗: 有鉴于此,边打算自己编写一个脚本进行批量执行: 而短脚本的编写,非she ...

  4. DDOS、CC、sql注入,跨站攻击防御方法

    web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...

  5. Cross-Site Scripting XSS 跨站攻击全攻略 分类: 系统架构 2015-07-08 12:25 21人阅读 评论(2) 收藏

    原文:http://a1pass.blog.163.com/blog/static/2971373220087295449497/ 题记:这是我在<黑客X档案>08年第5期发表的一篇文章, ...

  6. 应用安全-Web安全-XSS(跨站攻击)攻防整理

    分类 反射型 存储型 DOM型 XSF(Flash XSS) PDFXSS MHTML协议跨站(MHTML,data) 字符编码(UTF-7 XSS) 富文本编辑器测试 - 输入框 <img S ...

  7. web安全性测试——XSS跨站攻击

    1.跨站攻击含义 XSS:(Cross-site scripting)全称"跨站脚本",是注入攻击的一种.其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布 ...

  8. 宽字节XSS跨站攻击

    简介 宽字节跨站漏洞多发生在GB系统编码. 对于GBK编码,字符是由两个字节构成,在%df遇到%5c时,由于%df的ascii大于128,所以会自动拼接%5c,吃掉反斜线.而%27 %20小于asci ...

  9. XSS跨站攻击靶场-通关笔记

    XSS攻击是Web攻击中最常见的攻击手法之一,XSS中文名跨站脚本攻击,该攻击是指攻击者在网页中嵌入恶意的客户端脚本,通常是使用JS编写的恶意代码,当正常用户访问被嵌入代码的页面时,恶意代码将会在用户 ...

随机推荐

  1. MySQL基础笔记(二) 完整性约束

    我们知道,一种数据模型必须包含三个基本的部分: 构造机制(数据结构):主要描述数据的类型.内容.性质以及数据间的联系等. 运算机制(数据操作):主要描述在相应的数据结构上的操作类型和操作方式. 约束机 ...

  2. Mac 使用smb协议连接FTPserver

    在Mac中,能够通过smb协议作为client连接到server,比如一个FTPserver,然后获取上面的共享文件. 方法: 1.在Finder菜单中点击前往 -- 连接server. 也能够Com ...

  3. Vue调试工具 vue-devtools

    vue-devtools是一款基于chrome浏览器的插件,可以帮我们快速调试vue项目 vue-devtools手动安装: 第一步:找到vue-devtools的github项目(https://g ...

  4. webstorm 6.0 注册码

    User Name: EMBRACE   License Key: ===== LICENSE BEGIN ===== 24718-12042010 00001h6wzKLpfo3gmjJ8xoTPw ...

  5. 基于开源项目的在线网络视频直播项目---pc端的推流

    https://github.com/winlinvip/simple-rtmp-server/issues/66 https://github.com/justinmakaila/iOS-Frame ...

  6. 【iOS系列】- UITableView的使用技巧

    [iOS系列]- UITableView的使用 UITableView的常用属性 indexpath.row:行 indexpath.section:组 separatorColor:分割线的颜色 s ...

  7. UESTC 982质因子分解

    读入一个自然数,将nn分解为质因子连乘的形式输出. Input 有多组测试数据.输入的第一行是整数TT(0<T≤10000),表示测试数据的组数.每一组测试数据只有一行,包含待分解的自然数nn. ...

  8. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX【转】

    本文转载自:http://www.cnblogs.com/52php/p/5681751.html 四.更好一点的Hello World 没有最好,只有更好 从本小节开始,后面所有的构建我们都将采用  ...

  9. 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 ...

  10. echo 到 stderr

    This question is old, but you could do this, which facilitates reading: >&2 echo "error& ...