Laravel 5 带laravel 5.1的xss

Laravel 5 带laravel 5.1的xss,laravel-5,xss,Laravel 5,Xss,我使用的是laravel 5.1 我使用此代码将帖子保存到db Auth::User()->posts()->save(Blog::create($request->all())); 当我用这些代码显示post时,我想清除javascript和危险代码 <p>this is text</p> <p>&nbsp;</p> <p><img alt="" src="link" style="height

我使用的是laravel 5.1

我使用此代码将帖子保存到db

 Auth::User()->posts()->save(Blog::create($request->all()));
当我用这些代码显示post时,我想清除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>


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

尝试
{{{}}
这将逃避用户输入,您可以在将其存储在数据库中之前使用它进行敏感化,因此请检查这些函数
HTML::entities()
e()

我不知道它是否适用于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);
}
}

感谢kirkbushell:

您允许html代码进入我们的数据库,这是一件错误的事情。 也就是说,在保存内容和输出时,一定要清理输入(使用e($data['example']),方法是使用{{{}}或{{{}} 对于图像,创建一个只包含图像名称的表。通过使用控制器(图像位置和其他内容)处理其余部分

好主意是创建名为post ID的子目录,然后将图像存储在那个里


例如,post ID 7将有来自数据库的dir->images/7/imagename。

您将危险代码称为什么?如果您允许用户运行js,那么代码将如何处理现在哪些是坏的,哪些不是?。。您需要了解xss以及blade{{}如何处理代码。这对你来说更有意义哦,我明白了,你只想要html,但不允许js?阅读关于我不想任何用户在我的网站上玩这是件坏事,所以如果你想让他们插入html,但不是js而不是htmlpurifier.org,不要让他们插入html。冷静点,你想让用户插入html,防止他们插入坏代码,对吗?这很难做到,所以有些人为你做这件事,他们免费给你这些代码,例如有一个htmlpurifier包,可以删除坏代码
<?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);
}
}
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',
    ];