php - 允许用户使用通配符的安全性

标签 php mysql

我需要让我的用户在搜索中使用星号 (*) 作为通配符。

将星号转换为 % 并在 sql 查询中使用 LIKE 是否安全。

我知道 user-regexp 会导致需要永远计算的常规表达式。 我认为在这种情况下我不可能,但这样做还有其他安全问题吗?

最佳答案

like 表达式中的通配符会导致查询执行发生变化,从而使 RDBMS 使用全表扫描而不是使用索引。当有大量数据时,这可能会减慢查询速度。我建议检查用户输入的第一个星号前至少有几个非通配符。

另请注意,如果将 * 转换为 %,并使用 LIKE,则需要注意 _ 也是如此,否则它将匹配任何单个字符,而不仅仅是下划线。

关于php - 允许用户使用通配符的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005760/

相关文章:

javascript - 如何显示上传带有不需要的扩展名的文件的错误?

php - 奇怪的 PHP 行为 : empty, !, and count

php - 更改 MySQL WHERE 参数

php - 如何使用SQl语法从MySQL表中的组中选择最新记录

php - 如何使用 brozot/Laravel-FCM 在推送通知上添加图像

php - Mysql - PHP - 创建触发器或事务? - 需要澄清

php - 用于大型数据库查询的数据表或 php 分页

mysql - 如何将 2 个表连接到另一个表中

php - heroku 上的 cURL 超时

php - 如何在存储过程中使用 MySQLi 准备语句