sql注入关键字怎么处理

是的,防止SQL注入的关键是参数化查询,可以直接使用。

使用参数化查询,用户输入不会直接进入SQL语句,数据库会自动阻止恶意字符。

如果这不起作用,请使用过滤、避免特殊字符、限制输入类型的长度并使用白名单。

验证输入是否合法、权限是否最小化以及是否执行定期审核和渗透测试。

还使用了ORM框架、存储过程、WAF等以及多重锁。

简而言之,预防为主并持续维护,防止 SQL 注入很容易。
你自己看看吧。

SQL SELECT 如何处理字符串匹配复杂条件?

哎呀,让我告诉你一件事。
当我从事数据库工作时,字符串匹配确实是一个令人头疼的问题。
让我告诉你我曾经踩过的陷阱。

例如,在杭州时,我们的系统想要检查用户名中包含“啊”一词的用户。
起初我们使用%Ah%随机,但是搜索卡住了很长时间。
后来我才知道这个不能直接用。
您必须添加 LIKE 'Ah %' 并在其前面加上 Ah 前缀。
这个%是个麻烦制造者,需要用在正确的地方。

再举个例子,我想在某个活动中检查一个邮箱地址是否是QQ邮箱。
当时我写了LIKE'%@qq.com%',但是发现了一堆垃圾邮件地址,因为@qq.com可能隐藏在其他地方。
然后更改为 SUBSTRING_INDEX(email, '@', -1 ) = 'qq.com',这是正确的。
你看,函数有时比 % 强大得多。

最大的问题是正则表达式。
有一次我在深圳做项目的时候,需要查我的手机号码,所以我使用了REGEXP '^1 [3 -9 ]\d{9 }$'。
因此,PostgreSQL 无法识别 \d,必须将其写为 [0-9 ]。
这种跨数据库的陷阱确实很难防范。

还有合理的组合。
当我在南京做报道时,我想检查一下电子邮件地址是否不是测试用的,名字是“jun”还是“li”。
结果写入电子邮件 NOT LIKE '%test%' AND (name LIKE '%jun%' OR name LIKE '%丽%')。
结果是效率极低。
然后我改用 IN 语句,速度更快。

现在我想起来,索引很重要。
当我检查邮箱时,我在电子邮件字段中添加了索引,搜索速度提高了 1 0 倍。
还有数据清理。
有时必须使用TRIM去除空格,否则会出现乱码。

总之,字符串匹配必须一步步进行。
先用LIKE,不行再加上正则,最后结合条件。
不要一开始就盲目地写,因为这样很容易卡壳。
MySQL和PostgreSQL的数据库也是分开的,正则表达式也不同。

你看,你可以利用我当年踩过的陷阱。
能否顺利玩好这条SQL,就看你如何解决这些纠结了。