【问题标题】:php, how to send form data in a secure way?php,如何以安全的方式发送表单数据?
【发布时间】:2012-02-10 21:41:44
【问题描述】:

我的网站有一个简单的登录表单。

表格发到login.php

在login.php 中,我检查用户名和密码并重定向到特定页面。

一切都很好,直到我遇到安全问题。从 PCI 合规性我得到这个:

所有包含敏感信息的 Web 应用程序通信都应使用 SSL/TLS (HTTPS) 传输。如果使用从 HTTP 到 HTTPS 的重定向来尝试纠正此发现,请确保此类重定向发生在系统的服务器端(例如通过使用 HTTP“Location”标头元素)并且重定向不依赖于客户端(浏览器)端。

然后我进入login.php 并在顶部添加此代码:

if (!isset($_SERVER['HTTPS']) || !$_SERVER['HTTPS']) {
    header("Location: https://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]);
}

如果我在此更改后尝试登录,则登录过程似乎正常,但我不确定这是否解决了问题。

注意事项:
我不能将网站设置为:https://www.website.com,因为这会引发安全警告。不过我确实有有效的证书。

有什么想法可以解决这个问题吗?

谢谢

编辑:

安全警告是关于访问不安全的网站,红色矩形询问我是否确定要访问该网站,我可以将其添加到例外列表中

如果我在例外列表下添加证书,则此警报仅发生一次

【问题讨论】:

  • 安全警告是什么??
  • 安全警告说什么?
  • 如果没有警告,这里就没有什么可做的了,页面上是否还有关于您有不安全信息的警告?还是 SSL 证书未正确签名?或者是其他东西。更多信息将帮助每个人为您提供帮助
  • @Patrioticcow 听起来像是关于“未知”或无效 SSL 证书的 IE 浏览器警告。谁提供证书,它对您请求的域有效?
  • 在安全警告方面,您可能需要确保没有使用不安全的绝对 url 调用依赖文件(js、css、图像等)(即它们不应以'http')

标签: php forms https secure-coding


【解决方案1】:

您的证书可能有效,但浏览器不认为它是安全的。您需要找出浏览器说它无效的原因。通常它是由公司使用浏览器无法识别的根证书生成的。您可能需要切换证书才能摆脱“红色矩形”。

【讨论】:

  • 我明白你在说什么,但是不使用 https 作为主要 index.php 怎么办?出于某些 SEO 目的,我也尽量远离它
  • 您可以这样做,但我不知道您的合规部门对此有何看法。 ;) 即使您不在索引上使用它,当您希望他们登录时,您的用户仍将面临那个“错误”页面。我的建议是,如果您认为该证书确实应该有效,请与您的证书提供商讨论重新颁发。如果它是一家自行颁发的证书或 rinky-dink 公司,我会选择 Verisign、Thawte 等行业认可的证书
【解决方案2】:

您确定您的页面不包含通过 http 传输的内容,例如 jpg 或嵌入对象。您可以告诉浏览器对页面使用 https,但如果页面调用 jpgs 或其他脚本或其他内容,您可以使用 http 调用它们。然后浏览器认为该页面具有安全和不安全的对象,这可能是一个问题。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2016-01-30
    • 2019-12-23
    • 1970-01-01
    相关资源
    最近更新 更多