因为业主方那边没有域名可以提供,然后又被公安扫出了 “域名访问限制不严格”的漏洞,所以被迫要搞一个只允许使用指定IP地址访问站点的办法。

    情况1:开发人员在开发中写死域名 Host 以后修改比较麻烦,所以采用 request.getHeader("Host"); 方式获取Host

    情况2(XSS攻击):有些网站会用Http的 Host 头来拼接资源路径,比如 <link rel="stylesheet" type="text/css" href="http://{$_SERVER['HTTP_HOST']}?id=111111" /> 。此时我修改了 Host ,并在本地假设一个对应 Host 的服务器返回恶意的资源,就会被这些网站载入。

    虽然我的网站都使用的 IP 访问,可以确定即使被篡改也没啥关系,但是为了响应公安,所以还是得补上这个漏洞。通过编辑 conf/extra/httpd-vhosts.conf 文件:

    1. <VirtualHost *:99>
    2. DocumentRoot "${INSTDIR}/wwwroot/reform_declare/public"
    3. ServerName 你的IP地址
    4. <Directory "${INSTDIR}/wwwroot/reform_declare/public">
    5. # 如果请求的HOST和你的IP地址不匹配,就设置BAD_REQ变量
    6. # 注意,如果要使用正则表达式,不要用双引号包裹
    7. # 如果仅仅是字符串,可以直接双引号包裹
    8. SetEnvIfNoCase Host "你的IP地址" BAD_REQ
    9. Options FollowSymLinks ExecCGI
    10. AllowOverride All
    11. Order deny,allow
    12. <RequireAll>
    13. Require all granted
    14. Require env BAD_REQ
    15. </RequireAll>
    16. </Directory>
    17. </VirtualHost>

    这样子就能确保只能用“你的IP地址”访问网站啦~