删除URL中的特殊字符

时间:2020-08-22 作者:Karthick

我需要帮助以防止URL中出现特殊字符(&a);如果有人专门输入字符,它应该重定向到404错误页。我试过几种方法.htaccess 但没有一个奏效。

预期URL:

http://www.example.com/ar/shop-listing/health-beauty/
但如果我像这样输入,我仍然可以看到页面

http://www.example.com/ar/shop-listing/health-beauty~@/#$&&&%%$%3Cscript%3E/
有人能提出解决这个问题的办法吗?

1 个回复
SO网友:MrWhite

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的查询字符串部分。

相关推荐

WordPress如何在不使用.htaccess的情况下进行重定向?

如前所述here, WordPress具有自动URL重定向。然而not 基于。WordPress保留的htaccessto a minimum.假设您的“siteurl”设置(在GUI中)包含“www.”。如果访问者没有使用“www”,WordPress如何以及在哪个文件中检测并相应地重定向?