Skip to main content

Module guard

Module guard 

Source
Expand description

防全表 UPDATE/DELETE 攻击守卫(Safe SQL Guard)

对应文档 6.8 节改进项 26(防全表 UPDATE/DELETE 攻击拦截)。

§核心概念

  • GuardPolicy:守卫策略,配置是否允许无 WHERE 子句的 UPDATE/DELETE
  • SafeSqlGuard:守卫实例,对 SQL 进行检查并拦截危险操作
  • GuardError:守卫错误类型

§设计灵感

  • MyBatis-Plus block-attack-inner-interceptor(阻止全表更新/删除)
  • MySQL --safe-updates 模式
  • Hibernate hibernate.query.mutation_strategy

§使用示例

use sz_orm_core::guard::{SafeSqlGuard, GuardPolicy};

let guard = SafeSqlGuard::new(GuardPolicy::Strict);
// 拦截无 WHERE 子句的 UPDATE
assert!(guard.check("UPDATE users SET name = 'a'").is_err());
// 拦截无 WHERE 子句的 DELETE
assert!(guard.check("DELETE FROM users").is_err());
// 允许带 WHERE 子句的 UPDATE
assert!(guard.check("UPDATE users SET name = 'a' WHERE id = 1").is_ok());

Structs§

SafeSqlGuard
防全表 UPDATE/DELETE 攻击守卫

Enums§

GuardError
守卫错误类型
GuardPolicy
守卫策略

Type Aliases§

GuardResult
守卫结果