2009-09-16 48 views
0

我有一个4步形式的过程。我的表单是否安全?

  1. form.php的
  2. validation.php
  3. review.php
  4. complete.php

form.php的职位,以validate.php这取决于验证重定向或者回form.php或review.php。最后一步是complete.php

每个页面都使用HTTPS调用,除了validate.php,这是创建SESSION变量的位置,然后重定向回form.php或review.php,调用https。

浏览器上的锁永远不会消失,但我被告知是否发布到相对路径(不明确调用https)表单不安全。

这是真的吗?我安全吗?有没有办法检查或证明表单过程是否安全?

有人告诉我这是安全的,但我只是想确保我不承担责任。

我在表单帖子上使用相对路径,因为当使用HTTPS明确调用页面时,不会创建SESSION变量。如果任何人有一个可能的解决方案,那也会很棒。

回答

6

尽管没有明确发布到例如https://your-server.com/validate.php,但您使用相对链接(例如action =“validate.php”)的事实意味着它仍然在使用HTTPS的每一步。

简答 - 协议在相对链接上不会更改。因此,如果form.php不是HTTPS,表单变量将不会通过相对链接安全地提交。

1

可以使用相对路径。确保您可以使用网络数据包查看器应用程序来查看内容是否被加密。然而,有一件事关乎你的代码,你是否在会话变量中存储了验证的数据?如果是这样,你确定没有人可以访问除root用户和php以外的会话值。我建议将验证值存储在数据库中,以防万一,您可以使用crontab删除过时的记录。

+0

我将敏感信息存储在SESSION变量中,直到complete.php存储在数据库中。我怎么能确定只有root和php可以访问变量? – chris 2009-09-16 12:43:44

+0

您可以检查访问权限,但是允许PHP(实际上是用户Apache)进入该目录将允许某些脚本访问这些文件;除非PHP有一些非常严格的安全措施。我使用数据库只是为了确保使用seLinux阻止访问除/ var/www/html之外的任何目录。由于seLinux对于远程访问权限(与文件系统访问权限分开)非常热心,因此这是一种可行的方法。 – 2009-09-16 13:31:59

2

在浏览器上的锁从来没有消失 但如果你张贴到相对 路径(没有要求HTTPS明确)的 形式不保证有人告诉我。

这是垃圾。相对URI是相对URI,不会导致协议发生变化。

如果通过HTTPS请求页面且URI是相对的,则下一个请求也将使用HTTPS。

我使用的,因为会话变量的arent创建 网页时使用HTTPS

您必须误诊的问题,明确呼吁表单提交 的相对路径。浏览器在内部将相对URI解析为绝对URI。发送的数据没有差异。

+0

我的意思是,我本来想发帖的形式是行动=“https://site.com/validate.php”和什么也没有发生。更改为action =“validate.php”修复了它,但我无法确定我是否保持安全。 – chris 2009-09-16 12:47:55

+0

堆栈切割http部分,但是。任何想法为什么在表单动作中使用绝对路径会导致问题? – chris 2009-09-16 12:59:40

1

如果你有数据发布到或者信息发送回正在使用以完成从validate.php交易并没有使用HTTPS的数据浏览器,那么你必须在你的应用程序一个潜在的漏洞。如果使用相对路径调用validate.php,则从通过HTTPS加载的页面调用它,则默认情况下它将使用HTTPS - 如果未明确指定,则相对路径会继承协议,主机名和端口。

这并不意味着您的页面是安全的。这意味着正在发送的数据正在加密。您还可以有几个问题(弱密码,SQL注入,跨站脚本等),您需要处理使用HTTPS,即使传输数据。如果您至少使用HTTPS,那么您的数据传输将更难拦截或欺骗。