查询参数中的URL协议

时间:2014-08-12 16:50:07

标签: apache .htaccess cpanel

我正在使用oAuth尝试针对自定义集成对Magento进行验证,但是我遇到了一些身份验证问题,即/ oauth / initiate部分。

使用/ oauth / initiate向我的地址发送包含查询参数的GET请求时?ALL_OAUTH_PARAMS_HERE我遇到403禁止错误。

最初我认为这可能是由于我的服务器设置,即oauth未正确安装,MAGE auth.php处理程序与默认用户有问题,即'guest'不是'admin'以及所有类型的问题结果没结果。

我发现虽然将我的授权请求作为OAuth授权标头发送传入我的所有值都可以正常工作,但这很好,它提出了一个问题,为什么这不适用于查询参数方法。

现在经过一些试验和错误以及数小时的研究后,我发现当我通过GET请求发送任何包含带协议URL的查询参数时,我收到403禁止。

作为一个例子,这将导致403:

获取https://www.mysite.com/oAuth/initiate?callback_url=http://www.example.com 获取https://www.mysite.com/oAuth/initiate?callback_url=http%3A%2F%2Fwww.example.com

但这不会

获取https://www.mysite.com/oAuth/initiate?callback_url=www.example.com

我很有信心,因为我的环境在共享托管平台上,使用cPanel和Apache,这是一个mod_security问题,阻止协议在查询字符串中传递。

在HTACCESS文件中是否有任何可能导致此行为的内容我可以更改以防止此行为,或者我们是否都认为这只是托管服务提供商可能更改的内容。我已经看过我的HTACCESS并且没有任何明显的原因导致这种行为,所以我不知所措。

此外,有关在查询参数中使用协议有什么影响或安全问题,我不明白为什么会发明这条规则,但我可能是短视的。

1 个答案:

答案 0 :(得分:0)

如果你必须禁用mod_security,你可以这样做:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

但这是假设您的托管服务提供商编译了mod_security以允许htaccess覆盖。