【问题标题】:MySQL wildcards workaround needed需要 MySQL 通配符解决方法
【发布时间】:2012-05-11 14:13:33
【问题描述】:

好的,所以主要问题是设计不佳的 php 脚本..但我现在对此无能为力..

所以我向你寻求帮助! :)

我想列出所有以“a%”开头的项目.. 简单!.. 不在这里.. 默认情况下,搜索使用通配符“%string%”。

SELECT DISTINCT `Select2` FROM `items` WHERE `Select2` LIKE "%a%"

而且我无法更改搜索脚本...:/

你有什么办法可以让我解决这个问题吗?

【问题讨论】:

  • 如果搜索查询受到 SQL 注入的影响,您可以绕过它,但这显然是一个非常糟糕的主意。我认为你是 SOL。
  • 我对 SQL 很陌生..你能解释一下吗? “受到 SQL 注入的影响”?
  • 您希望在不更改查询的情况下更改 SQL 查询返回的结果。我想即使是 SQL 新手也能看出这种方法的缺陷。我正在努力弄清楚 RedFilter 的狡猾计划是什么(实际上我可以想出几种方法来更改结果而不更改查询 - 但没有一种方法可以解决这里提出的具体问题,而且所有这些都非常复杂)。顺便说一句,Mackelito,如果您负责此站点上运行的代码,那么您应该开始学习一些有关网站安全的知识; www.owasp.org 是一个很好的起点。
  • 如果您在使用包含单个撇号的搜索字符串进行搜索时服务器抛出错误(或者可能是空白屏幕),则它受SQL injection 的约束。这意味着您可以操纵被执行的 SQL 命令,并做坏事。
  • 如果你不能改变脚本,这不是开发者论坛的问题,而是这个应用程序用户的论坛......

标签: mysql sql wildcard


【解决方案1】:

没有办法绕过这样的硬编码。但是,由于结果将包括您要查找的结果以及子字符串匹配项,您可以在应用程序端过滤掉子字符串匹配项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-07
    • 2014-03-21
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    相关资源
    最近更新 更多