默认的公共搜索查询变量为s
但不是q
.
所以当你使用q
, 在vanilla WP安装上,没有按预期进行POST过滤。
对于默认的搜索查询,您不必考虑可能的SQL注入,因为它是由核心负责的。
下面是运行test OR 1=1
, 这个WHERE
生成的SQL搜索查询的一部分是:
AND
(
(
(wp_posts.post_title LIKE \'%test%\')
OR (wp_posts.post_excerpt LIKE \'%test%\')
OR (wp_posts.post_content LIKE \'%test%\')
)
AND
(
(wp_posts.post_title LIKE \'%1=1%\')
OR (wp_posts.post_excerpt LIKE \'%1=1%\')
OR (wp_posts.post_content LIKE \'%1=1%\')
)
)
对于这种情况,我们没有看到查询搜索字符串破坏SQL查询。
另一方面,如果您正在添加自己的搜索查询,例如通过修改WP_Query
然后,您需要小心可能的SQL注入。关于细节的问题很少,但我假设这里不是这样。