首页 > 解决方案 > 清理输入数据以避免脚本执行的最佳方法

问题描述

背景资料

我是 Laravel 社区的新手,最近我尝试构建一个小应用程序。在安全测试期间,我发现任何带有 Script 元素的表单输入实际上都是实时执行的。

例子

以下是我迄今为止尝试过的输入组合。

<input type="text" name="name">

这是一个安全问题,我正在寻找解决此问题的可能性。我确信输入数据库之前的任何数据都会被清理,但问题在于 HTML 显示。

标签: phplaravel

解决方案


htmlspecialchars 修剪 带斜杠

在发送查询之前,您可以清除输入值:

function clear($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
}

clear($_POST['name']);

如果你想使用Laravel 验证

public function store(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|max:255',
        'body' => 'required',
    ]);

}

仅使用 loop on 可以在视图上显示的错误$errors

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

或者

@error('name')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror

推荐阅读