2011-06-02 200 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)來生成密碼哈希和轉移它,而不是密碼。雖然,重做整個系統以避免它是更好的。

雖然這種解決方法不能解決您的問題。