http://www.example.com/ar/shop-listing/health-beauty~@/#$&&&%%$%3Cscript%3E/
在这个特定的URL中
#
(hash)是片段标识符,浏览器不会将其发送到服务器,因此无法在中阻止服务器端
.htaccess
.
服务器只能看到:
/ar/shop-listing/health-beauty~@/
如果
#
如果要从此URL中删除,则这将是一个完全无效的URL(因为编码不正确
%
chars),服务器将以“响应”;400错误请求;。
旁白:不知道为什么WordPress仍然会将此URL解析为;“正确”;URL?这在技术上是一个不同的URL。
与阻止特殊字符相比,允许URL路径中的字符白名单可能要容易得多。大多数URL路径将仅由小写字母组成a-z
, -
(连字符)和/
(斜杠-路径分隔符),因此如果URL路径中存在任何其他字符,我们可以简单地阻止请求。这可以使用下面的mod\\u rewrite指令来实现.htaccess
现有WordPress指令之前的文件:
RewriteRule [^a-z/-] - [R=404]
如果URL路径包含除上述字符以外的任何字符,则将触发404。
请注意,这只检查URL路径,而不是URL的查询字符串部分。