代码之家  ›  专栏  ›  技术社区  ›  Quentamia

如果调用者不使用HTTPS,如何防止访问PHP文件?

  •  6
  • Quentamia  · 技术社区  · 14 年前

    我已经编写了几个PHP web服务,通过URL传递参数。为了防止未经授权的访问,我将唯一密钥作为参数之一传入。我通过HTTPS调用PHP文件,我想知道是否有一种方法可以阻止脚本在不使用HTTPS的情况下运行。

    5 回复  |  直到 14 年前
        1
  •  8
  •   Bruno    14 年前

    有点离题,但如果您将PHP与Apache Httpd和 mod_ssl SSLRequireSSL 中的指令 .htaccess 或者在目录配置中。

        2
  •  3
  •   Paolo Bergantino    14 年前
    if(empty($_SERVER['HTTPS'])) {
        // ....
        exit;
    }
    
        3
  •  1
  •   NikiC    14 年前

    澄清一下:您希望客户端不会通过非加密连接调用包含秘密令牌的url,对吗?如果是这样,那么问题主要不在您身上,而是在客户端的浏览器上。如果客户端还没有使用安全连接,您可以将其重定向到安全连接,但即使您这样做了 到你的服务器,在他被重定向之前!

    Strict-Transport-Security 头,它将阻止随后的未加密访问(尽管很明显,在发送头之前,仍然可能发生未加密访问)

    Further reading at hacks.mozilla.org

        4
  •  0
  •   letronje    14 年前

    如果您使用的是Apache,那么可以使用mod\u rewrite将http请求重定向为https请求。

    RewriteCond %{HTTPS} !=on
    RewriteRule ^account(.*) https://%{SERVER_NAME}/account$1   [R=301,L]
    

    这将重定向 http://domain/account https://domain/account

        5
  •  0
  •   Tgr    14 年前

    :visited CSS伪类。总而言之,这是一个非常可怕的想法-您最好只使用SSL cookies。