这是关于字符串操作的问题,而不是关于数据库安全性的问题。我完全了解PDO和准备好的声明。
我想要防止'#34; UNION"从插入我的数据库。它不是唯一的,有一个列表:" EXECUTE"," DROP"等等我使用" UNION&#34 ;举个例子。
我的计划是对任何给定的字符串使用str_replace()(包括完整的SQL语句,而不仅仅是值)并转换任何出现的" UNION"到其他一些仲裁字符串然后将结果插入数据库。例如。 "我的工会要求投票"将成为"我的#noinu#称为投票"。
当从数据库中提取内容以显示在前端时,出现任何" #noinu#"将替换为" union"。
要替换的单词是SQL关键字,无论大小写都可以使用,所以我没有大小写匹配。
问题在于,当有人进入时,例如,"工会联盟" (关于第一个词的大写字母U)最终打印出来的结果是"工会联盟"用小写字母。
如果我试图考虑大写,小写和正确的情况,那么我仍然会错过这样的例子," uNiOn"它仍将在MySQL中运行。
我认为某种正则表达式将成为解决方案的一部分,然后我画一个空白。
如何识别单词的大小写变体(无需手动定义所有组合),用它自己的自定义替换替换每个变体,然后将其替换回来?