本文实例讲述了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攻击

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 = 'jb51.net';

clean_xss($str); //如果你把这个注释掉,你就知道xss攻击的厉害了

echo $str;

?>

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

php mysql可以跨站_Laravel5中防止XSS跨站攻击的方法相关推荐

  1. mysql limit 动态参数_MySQL中limit使用动态参数的解决方法(拼接SQL字符串语句来执行SQL)...

    官方好像说过limit已经在5.6版本上支持了动态参数,但是测试时依然还是不行. 那么要解决limit动态参数唯一能做的就是使用字符串SQL拼接的形式,然后再进行执行. 一般有以下方式解决: 1.存储 ...

  2. 苹果ajax跨域,vue中解决axios跨域问题【ajax在vue中的应用】

    兴冲冲的开始用vue封装组件.自定义指令之后,开始实战.诶,等等,貌似少了--ajax交互? 好吧大致研究了一下axios,但是存在以下两个问题: 1.跨域问题 2.数据格式问题 跨域信息示例: Fa ...

  3. axios代理跨域 cli4_vuecli 3.0之跨域请求代理配置及axios路径配置 莫小龙

    vue-cli 3.0之跨域请求代理配置及axios路径配置 问题:在前后端分离的跨域请求中,报跨域问题 配置: vue.config.js: module.exports = { runtimeCo ...

  4. mysql单台跨数据库查询_在MySQL中怎样进行跨库查询?

    在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...

  5. flask内容学习第三天(flak中的csrf跨站请求)

    问题一:什么是csrf? 英文全称Cross Site Request Forgery(跨站请求伪造): 通俗来讲就是攻击者盗用你的身份,冒用你的名义发出恶意请求,包括发送邮件,电话信息,甚至于转账或 ...

  6. 在MySQL中怎样进行跨库查询?

    在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联 ...

  7. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理...

    通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...

  8. Web漏洞-Xss跨站

    25.Xss跨站之原理分类及攻击方法 原理 XSS 跨站漏洞产生原理,危害,特点? 本质,产生层面,函数类,漏洞操作对应层,危害影响,浏览器内核版本等 本质 跨站脚本攻击是指攻击者往Web页面里插入恶 ...

  9. 跨境电商如何搭建独立站?

    商品的流通推动经济的发展,近些年来国家致力发展跨境电商,国家为何致力发展跨境电商呢?那是因为要建立一种全新的消费观念,跨境电商利润高,与国内消费观念不同,国外消费者对于价格敏感度较低,赚的是汇率差,利 ...

最新文章

  1. [BZOJ2527]Meteors
  2. select into from 用法_年轻同事不讲武德,直接怼上MySQL常见SQL的七大错误用法
  3. blazor wasm开发chrome插件
  4. aws消息服务器,经验分享:我们如何使用AWS构建无服务器架构 - hypertrack
  5. MathType几个常用字体的名称
  6. 二、常量、变量和基本数据类型
  7. GitChat · 安全 | 揭秘我国的电子取证技术
  8. cadz轴归零命令_CAD中所有图形实现统一标高(Z轴归零)的方法,统一标高的快捷键命令...
  9. 计算机博士专业目录,tsinghua计算机博士专业目录
  10. LeetCode1436. 旅行终点站(Java)
  11. Unity 游戏框架搭建 2018(八)小结
  12. ArcGIS系列(一):DEM数字高程模型数据的生成
  13. IdentityHashMap 源代码
  14. linux简易教程 莫烦,安装 Ubuntu 17.10
  15. c语言如何画出多个散点图,如何制作多参数散点图
  16. 【思维导图怎么画】万彩脑图大师教程 | 添加主题与线条
  17. python 多态app_python 多态实例
  18. 极客时间——数据结构与算法(39) 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
  19. Telegram 群组创建机器人bot
  20. Markdown技术

热门文章

  1. Google play billing(Google play 内支付) 上篇
  2. vue 验证公民身份证号 并 自动 获取 性别、年龄、生日
  3. ADAS——高级驾驶辅助系统介绍
  4. l130 华大低功耗mcu_HC32L130国产超低功耗华大MCU芯片介绍
  5. STM32F4应用-GPIO
  6. 云呐机房动环FSU监控系统,fsu监控设备怎么调
  7. tilemap软件使用_使用Tilemap的等距2D环境
  8. 【Python学习】程序练习《购物车程序》
  9. 想在社会上混 就记住这20句
  10. 机器人碰撞检测——生成无碰撞轨迹