http - 具有安全部分、 session 和相关问题的 Web 应用程序

标签 http session ssl https

我想创建具有安全管理/结帐部分的 Web 应用程序。假设我为 subdomain.mydomain.com 设置了 SSL,我想确保所有绝密内容 ;) 像结帐页面和管理部分一样安全传输。可以按如下方式构建我的应用程序吗?

subdomain.mydomain.com
    adminSectionFolder
        adminPage1.php
        adminPage2.php
    checkoutPagesFolder
        checkoutPage1.php
        checkoutPage2.php
        checkoutPage3.php
    homepage.php
    loginPage.php
    someOtherPage.php
    someNonSecureFolder
        nonSecurePage1.php
        nonSecurePage2.php
        nonSecurePage3.php
    imagesFolder
        image1.jpg
        image2.jpg
        image3.jpg

用户将通过 http 访问我的 Web 应用程序,因为主页和类似网站不需要 SSL。结帐/管理页面必须通过 https 访问(我将确保通过 .htaccess 重定向)。我还想在网站的每个页面上都有登录表单,包括非安全页面。现在我的问题是:

  1. 如果我在非安全页面上有表单,例如 http://subdomain.mydomain.com/homepage.php并且该表单将数据发送到 https://subdomain.mydomain.com/loginPage.php,数据是否被加密发送,就好像它是从 https://subdomain.mydomain.com/homepage.php 发送的一样?我知道用户不会看到挂锁,但浏览器仍应对其进行加密,对吗?

编辑:我很抱歉..上面用粗体显示我最初输入的是http但意思是https,我的错

2.如果在安全页面 loginPage.php(或任何其他通过 https 访问的那个实例)上我创建了 session ,将分配 session ID,如果是我的网络应用程序。类似于登录用户的用户名。我可以从 http://subdomain.mydomain.com/homepage.php 访问这些 session 变量吗?例如显示问候语?如果 session ID 存储在 cookie 中,那么我认为会很麻烦,但是有人可以阐明应该如何完成吗?通过 SSL 发送用户名和密码似乎很重要。

3. 与上述问题相关,我认为.. 通过 SSL 保护登录是否真的有意义,这样用户名/密码将被安全传输,然后 session ID 在没有 SSL 的情况下被传输?我的意思是,如果有人发现正在传输用户名和密码,或者发现 session ID,那真的不一样吗?如果我在这里说得通,请告诉我,因为我觉得我遗漏了一些重要的东西。

编辑:我想出了一个主意,但如果可行,请再次告诉我。综上所述,假设 http 和 https 之间的共享 session 与用户通过纯 http(而非 https)登录一样安全,我想在所有非安全页面上,如主页等。我可以检查用户是否已经登录,并且如果是,则从 php 重定向到同一页面的 https 版本。所以用户从 homepage.php 填写登录表单,通过 ssl 详细信息发送到后端,所以可能 https://.../homepage.php .正在尝试访问 http://.../someOtherPage.php脚本将始终检查 session 是否已创建,如果已创建,则将用户重定向到此页面的 https 版本,因此 https://.../someOtherPage.php .那行得通吗?

4.为了避免浏览器弹出消息“此页面包含不安全的项目...”我链接到 css、图像和所有 Assets ,例如如果是 http://subdomain.mydomain.com/checkoutPage1.php应该是绝对的“/images/image1.jpg”还是相对的“../images/image1.jpg”?我想其中之一必须起作用:)

哇,好长的帖子,感谢您的耐心等待,如果您得到了那么多答案,谢谢 :) 哦,是的,我在共享主机上使用 php/apache

最佳答案

如果 SSL 终止是在网络服务器本身上,那么您可能需要为安全和非安全部分配置单独的文档根目录 - 虽然您可以指定它们都引用相同的物理目录,但您将在零件之间切换打结。同样,如果您的 SSL 终止在网络服务器之前,您就没有安全和非安全部分的系统分离。

将安全和非安全部分分离到单独的树中要整洁得多 - 请注意,如果您在安全页面上有非 SSL 内容,用户将收到警告消息。

关于您的具体问题

  1. 否 - 数据是否加密取决于数据的去向,而不是数据的来源

  2. 是 - 但前提是您不设置 secure_only cookie 标志 - 请注意,如果您遵循我上面的建议,您还需要确保将 cookie 路径设置为“/”

    <
  3. 处理用户名和密码的页面必须是安全的。如果不是,那么您将暴露您的客户端身份验证详细信息(大多数人对他们访问的所有网站使用相同的密码)并且任何运行网络嗅探器或代理的人都可以访问。

你的编辑让我有点困惑。 SSL 的计算成本高且速度慢 - 所以你想尽量减少它的使用 - 但你需要在这与用户对安全的看法之间取得平衡 - 不要一直从 SSL 切换到非 SSL,尽管它对用户输入他们的信息非常安全由发送到 SSL 页面的非 SSL 提供的页面的详细信息,用户可能不理解这种区别。

  1. 请参阅上面我回答的第一部分。

C.

关于http - 具有安全部分、 session 和相关问题的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815627/

相关文章:

javascript - 增加并发 HTTP 调用

session - Gorilla Web Toolkit session Memcache 实现

php - 从1个表中获取一个userId并将其写入另一个表中

Magento 函数未给出 Magento SSL 链接

json - Http GET 方法到 Https?

java - 在java中传递XML请求时出现问题

node.js - nginx 位置指令不起作用

http - tcp 和 http 连接监听器是否可以相互交互?

c# - Roslyn,通过 hostObject 传递值

security - 安全问题是否通过 https 有效地使用 GET 请求发送密码?