2011-06-02 168 views
2

我正在向php页面发出ajax请求,例如page1.php。在page1.php中,我有一个header("Location:page2.php?password=1234")代码,它将密码重定向到page2.php作为GET参数。 page2.php给出了一个json响应。 问题是,当我执行检查元素并检查Safari浏览器中的资源时,我能够在响应头部分中看到位置page2.php?password = 1234“ 这是一个安全问题。我发送JSON响应?我使用PHP 5.2.6时删除响应标题。如何在php中发送json响应时删除响应头?

+0

该密码的用途是什么?你为什么要重定向呢? – Gumbo 2011-06-02 11:29:10

+0

这是寻找不正确的方式进行身份验证? – NAVEED 2011-06-02 11:36:09

+0

“将密码作为GET参数”请告诉我,它不是纯文本格式,而是您使用的是SSL。 – DanMan 2011-06-02 11:42:07

回答

0

为什么就是不为登录的用户?还是朴素简单的Cookie使用会话?

+0

我无法使用会话。我需要一种方法来删除响应头中的位置。 – Sangam254 2011-06-02 11:41:37

+0

@sangman:如果你需要重定向,你有3种方式:位置,meta-referh,javascript解决方案。随你便。 – dynamic 2011-06-02 11:42:21

0

而不是重定向到第二页,你可以从第一页查询它,并显示它的输出

假设你的设置支持它,最简单的方法可能包括以下内容page1.php

readfile('http://yoursite.org/page2.php?password=1234'); 
+0

这是一个要求。我必须有一个中间页面 – Sangam254 2011-06-02 11:39:18

+0

那么,在这种情况下,你仍然有一个中间页面,但它隐藏了它使用来自客户端的page2.php的事实。尽管如此,没有办法从javascript中获得这个设置。任何人都可以阅读javascript源代码,并看到ajax调用是对page1.php进行的。然后,他们可以在浏览器中访问该页面,然后转发到page2.php?password = 1234,然后查看密码。 – 2011-06-02 11:48:58

+0

我在page1.php中获取密码作为POST,然后将它附加到page2.php?password = $ _ POST ['passwd']。我需要一种方法来删除响应头中的位置 – Sangam254 2011-06-02 12:00:29

0

为穷人辩护,你可以使用某种隐窝功能(MD5,SHA1,CRC32)来生成密码哈希和转移它,而不是密码。虽然,重做整个系统以避免它是更好的。

虽然这种解决方法不能解决您的问题。