我想创建具有安全管理/结帐部分的 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 重定向)。我还想在网站的每个页面上都有登录表单,包括非安全页面。现在我的问题是:
- 如果我在非安全页面上有表单,例如 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 内容,用户将收到警告消息。
关于您的具体问题
否 - 数据是否加密取决于数据的去向,而不是数据的来源
是 - 但前提是您不设置 secure_only cookie 标志 - 请注意,如果您遵循我上面的建议,您还需要确保将 cookie 路径设置为“/”
<处理用户名和密码的页面必须是安全的。如果不是,那么您将暴露您的客户端身份验证详细信息(大多数人对他们访问的所有网站使用相同的密码)并且任何运行网络嗅探器或代理的人都可以访问。
你的编辑让我有点困惑。 SSL 的计算成本高且速度慢 - 所以你想尽量减少它的使用 - 但你需要在这与用户对安全的看法之间取得平衡 - 不要一直从 SSL 切换到非 SSL,尽管它对用户输入他们的信息非常安全由发送到 SSL 页面的非 SSL 提供的页面的详细信息,用户可能不理解这种区别。
- 请参阅上面我回答的第一部分。
C.
关于http - 具有安全部分、 session 和相关问题的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815627/