为了应对 AJAX 调用的同源策略,我希望允许 mod_rewrite 和 mod_proxy 以类似方式处理这些调用,如另一个答案:
rewriteEngine on
rewriteRule proxy/(.+)$ http://api.example.com/$1 [P]
然而,我在网上看到,使用 mod_proxy 可能是一件有风险的事情。
所以我的问题是:启用 mod_proxy 并以上述方式使用它是否存在任何安全问题?如果是这样,我应该选择哪种配置才能安全地使用 mod_proxy 网关?
谢谢,任何帮助我都会感激。
PS:是的,我知道 CORS 是解决同源问题的更合理方法,但是我正在处理的远程站点不太愿意支持 CORS,所以我不得不寻找替代方案。
答案1
一定要ProxyRequests Off
防止滥用你的服务器作为开放代理;从文档:
ProxyRequests Directive
Description: Enables forward (standard) proxy requests
Syntax: ProxyRequests On|Off
Default: ProxyRequests Off
Context: server config, virtual host
This allows or prevents Apache from functioning
as a forward proxy server. (Setting ProxyRequests to Off
does not disable use of the ProxyPass directive.)
In a typical reverse proxy or gateway configuration,
this option should be set to Off.
关于安全问题:您会在日志中看到所有请求,因此请确保它们受到保护并且不包含可能用于获取未经授权访问的“有趣”信息,如令牌或其他内容。