php - 清理输入数据以避免脚本执行的最佳方法
问题描述
背景资料
我是 Laravel 社区的新手,最近我尝试构建一个小应用程序。在安全测试期间,我发现任何带有 Script 元素的表单输入实际上都是实时执行的。
例子
以下是我迄今为止尝试过的输入组合。
- Foo(正常工作)
- Fooalert(1)(引发警报窗口)
<input type="text" name="name">
这是一个安全问题,我正在寻找解决此问题的可能性。我确信输入数据库之前的任何数据都会被清理,但问题在于 HTML 显示。
解决方案
在发送查询之前,您可以清除输入值:
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
推荐阅读
- javascript - AJAX 发送到 php 控制器在 javascript 中不起作用
- google-cloud-platform - 创建一个实例,执行一个长脚本然后杀死它
- c++ - 我可以用多少种不同的方式调用一个函数
- python - 从 tac_plus 文件中获取用户和组
- react-native - 如何在拍照后立即将照片传输到 x-www-form-urlencoded EXPO
- java - 在 Jersey-2 中应该如何使用 @DeclareRoles?
- r - 关于如何获取固定网络图
- laravel - 如何组合 Laravel 集合
- c++ - 如何在 C++ 中获取非英文字符
- r - 如何计算R中一系列样本中两个线向量之间的角度列表?