xss 与 Laravel 5.1

问题描述 投票:0回答:3

我正在使用 Laravel 5.1

我使用此代码将帖子保存到数据库

 Auth::User()->posts()->save(Blog::create($request->all()));

当我用此代码显示帖子时,一些文本和图像我想清理 javascript 和危险代码!

<p>this is text</p>

<p>&nbsp;</p>

<p><img alt="" src="link" style="height:227px; width:342px" /></p>

<script>
alert("this is js");
</script>

{!! $post->内容!!}

this is result

当我使用时

{{ $post->content }}

this is result

我想要显示图像并防止危险代码任何解决方案

php laravel-5 xss
3个回答
2
投票

我不知道它是否适用于 laravel 5.1,但在 5.0 上,你可以使用这个:

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class XSSProtection
{
/**
* The following method loops through all request input and strips out all tags from
* the request. This to ensure that users are unable to set ANY HTML within the form
* submissions, but also cleans up input.
*
* @param Request $request
* @param callable $next
* @return mixed
*/
public function handle(Request $request, \Closure $next)
{
    if (!in_array(strtolower($request->method()), ['put', 'post'])) {
        return $next($request);
    }

    $input = $request->all();

    array_walk_recursive($input, function(&$input) {
        $input = strip_tags($input);
    });

    $request->merge($input);

    return $next($request);
}
}

并将其添加到Kernel.php

protected $middleware = [
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
    'Illuminate\Cookie\Middleware\EncryptCookies',
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
    'Illuminate\Session\Middleware\StartSession',
    'Illuminate\View\Middleware\ShareErrorsFromSession',
    'App\Http\Middleware\VerifyCsrfToken',
    'App\Http\Middleware\XSSProtection',
    ];

感谢 kirkbushell :http://laravel-tricks.com/tricks/laravel-5-xss-middleware


0
投票

尝试

{{{ }}}
这将转义用户输入,您可以在将其存储到数据库之前使用它来敏感化,因此请检查这些函数
HTML::entities();
e()


0
投票

您允许 html 代码进入我们的数据库是错误的做法。 话虽这么说,请确保在保存内容和输出时清理输入(使用 e($data['example'])) - 通过使用 {{ }} 或 {{{ }}} 至于图像,创建一个仅包含图像名称的表。使用控制器处理其余部分(图像位置和其他内容)。

好主意是创建名为帖子 ID 的子目录,然后在其中存储图像。

例如帖子 ID 7 将具有数据库中的 dir -> images/7/imagename。

© www.soinside.com 2019 - 2024. All rights reserved.