【发布时间】:2020-12-14 18:01:14
【问题描述】:
我是 Laravel 7 的新手,想知道是否有一个开箱即用的优雅解决方案来清理 HTML 表单输入?或者我可以下载您推荐的受信任的第三方软件包?这是用于我将存储在数据库中的数据。感谢您的帮助。
【问题讨论】:
标签: laravel forms laravel-7 sanitization sanitize
我是 Laravel 7 的新手,想知道是否有一个开箱即用的优雅解决方案来清理 HTML 表单输入?或者我可以下载您推荐的受信任的第三方软件包?这是用于我将存储在数据库中的数据。感谢您的帮助。
【问题讨论】:
标签: laravel forms laravel-7 sanitization sanitize
一种推荐的开箱即用的数据清理方法是使用 PHP 附带的 filter_var 函数和不同的 sanitize filters。顺便说一句,这也是验证输入的一种很酷的方法,请查看types of filters 了解更多信息。
在 Laravel 项目中工作时,我喜欢使用 voku/portable-ascii library,因为它已经是一个框架依赖项。清理输入、删除不可打印字符以及将任何输入通常转换为 ASCII 以及音译和诸如此类的功能,这是一个很好的分类。它并不总是完美的,但通常足够好并且可以完成工作。
这始终取决于您要消毒的内容、方式和原因。在许多情况下,如果您坚持最佳实践,则根本不需要清理输入。使用 Eloquent 或查询生成器时,当您输出数据时,您的数据会自动转义和检索,例如通过{{ $data }},它们也将被正确转义。
在某些情况下您应该更加谨慎,尤其是当您自己处理原始用户输入并可能以命令行参数、文件名等形式将其传递给系统时。在这些情况下,尽可能限制和必要时允许通常是一个好主意。有时,一个好的旧preg_replace('/[^0-9A-Z_-]/i', '', $subject) 是正确的选择。如果您想尽可能宽容,请尝试上述建议。
【讨论】:
preg_replace('/[^0-9\(\)\- ]/', '', $number) 应该会处理大部分内容。此外,您还可以使用 HTML5 表单验证,请参阅 developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email 或 tel 等。有关验证请查看 laravel.com/docs/7.x/validation。