Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Spatie软件包如何管理用户输入验证和消毒


Spatie软件包如何管理用户输入验证和消毒


SPATIE软件包主要通过一组自定义的Laravel验证规则来管理用户输入验证,并与Laravel的验证系统集成,并在处理或保存之前提供了一种结构化且可扩展的方法来验证数据。

Spatie软件包中的验证管理

###自定义验证规则
Spatie提供了一系列有用的验证规则,这些规则扩展了Laravel的本地验证功能。这些规则可以以Laravel表单请求或直接在控制器验证逻辑中使用。示例包括:

- 授权规则:验证是否通过检查策略(例如匹配用户ID [1])来验证登录用户是否有权在模型实例上执行特定操作。
- 货币规则:验证给定输入是有效的货币代码,支持ISO 3166标准[1]。
- 枚举规则:验证输入值属于预定义的枚举值集,可用于强键入数据[1]。
- ModelSexist规则:检查数组中的所有值是否作为指定模型中的属性存在,以确保参考完整性[1]。
- 界定规则:验证包含划界值的字符串(例如,逗号分隔的电子邮件),包括设置最小/最大项目的选项,允许重复和自定义分隔符[1]。

这些规则与Laravel的验证系统无缝集成,使开发人员可以在“规则()”的“形式请求”或“内联验证阵列”中定义它们。

spatie laravel数据包中的验证

Spatie Laravel数据包通过在创建数据对象之前验证数据来增强验证。验证会自动发生:

- 从请求注入数据对象。
- 带有请求数据的数据对象上的“从“方法”调用``方法。

您还可以通过``validate'or of validate()`or`or`palitateAtaTeanDcreate()'手动触发验证。该软件包支持配置验证策略,例如始终验证或禁用验证,在验证发生时提供精细的控制[4]。

###两步验证
Spatie正在探索一种两步验证方法:

- 第一步应用基本规则,以确保数据结构是正确的,并防止PHP错误。
- 第二步应用了更复杂的验证规则。

这种方法可以通过尽早发现错误并提供更清晰的验证反馈来改善鲁棒性[7]。

##消毒
尽管Spatie的软件包主要集中于验证,但Laravel本身通过验证和数据绑定隐式处理消毒。例如,Laravel的表单请求在应用程序中使用之前验证和过滤数据,自动对输入进行消毒。 Spatie的验证规则通过确保数据符合特定业务规则或格式来补充这一点。

开发人员可以通过创建自定义验证属性或根据需要在验证之前或之后手动消毒输入来扩展消毒[3]。

## 概括
- Spatie为常见和复杂验证方案提供了丰富的Laravel验证规则,例如授权检查,枚举验证,存在检查和界定输入验证[1]。
- Spatie的Laravel数据包在对象创建之前验证了数据,并具有用于手动或自动验证和可配置验证策略的选项[4]。
- 正在开发一个两步验证过程以增强验证鲁棒性[7]。
- 通常通过Laravel的验证和输入处理机制来处理消毒,而Spatie的工具专注于验证正确性和可扩展性[3]。

这种方法可确保在处理前根据应用程序特定规则对用户输入进行严格验证,减少错误并提高安全性。

引用:
[1] https://github.com/spatie/laravel-validation-rules
[2] https://zapkit.dev/blog/ultimate-guide-to-validate-and-sanitize-http-requests in-laravel
[3] https://spatie.be/docs/laravel-data/v4/validation/using-validation-attributes
[4] https://spatie.be/docs/laravel-data/v4/validation/introduction
[5] https://escape.tech/blog/laravel-sql-indoction/
[6] https://www.youtube.com/watch?v=sw1ddj5pcam
[7] https://github.com/spatie/laravel-data/discussions/470
[8] https://stackoverflow.com/questions/72186973/checking-for-user-permissions-with-spatie-package-fails-in-Routes-in-Routes-in-Routes-in-Control
[9] https://spatie.be/docs/laravel-model-states/v2/request-validation/01-state-validation-rule