2012-05-18 31 views
0

機智關於Best way to use PHP to encrypt and decrypt passwords?PHP - 通過困難的加密字符串傳遞加密字符串到另一個頁面

我遇到的問題經過加密的字符串到另一個頁面。

在我的情況

,我想註冊鏈接發送給用戶,例如

www.xyz.com/reg.php?x=xxxxxxxxxxx

其中XXXXXXX包含電子郵件地址和用戶的全名信息以加密的串行化數組作爲字符串。

但是,當用戶單擊鏈接時,解密的字符串與加密前的原始字符串不同。

有時信息部分解密,其餘部分是垃圾。

任何人都可以解釋爲什麼會發生這種情況?

在此先感謝。

+0

而不是所有的信息,你應該傳遞一個令牌沿着這個映射返回到你的數據庫中的信息。 – Corbin

回答

2

您正在使用URL不安全字符,如+(來自base64)。您需要urlencode()/urldecode()您的參數。

+0

嗯我不知道這個..也許這是我需要的。謝謝您的幫助。 – Melvin

1

個人信息不應該在URL中傳遞,有散列函數和其他更安全的方法。你描述的這種情況是錯誤的嘗試尋求安全標準是如何正確的方式傳遞url參數。

此外還有很多與傳遞URL參數有關的漏洞,如參數污染。

+0

現在我想發送一個鏈接,自動填充用戶端的電子郵件地址和收件人的名稱文本框..之後,用戶只需點擊註冊併發送。我的第一個想法是,我將這些電子郵件地址和全名插入到數據庫中,並分配一個映射的標記,就像你說的那樣。然而,我正在嘗試懶惰的方法,我不知道通過電子郵件地址(即使加密)不是正確的做法..無論如何..感謝您的建議 – Melvin

+0

,但你說:「n其中xxxxxxx包含電子郵件地址和用戶的全名信息以加密的串行化數組作爲字符串。「 – badc0re

+0

我做了..一旦我序列化數組,我加密它..但是,作爲jimpic說,我沒有使用urlencode,並可能有不安全的字符在加密的字符串..這會導致問題。這也許可以解釋爲什麼20個加密字符串中的1個可以被解密,其餘的都不行。 – Melvin

0

我想你在數據庫中創建一個字段,如act_key .. 當你生成URL像(www.xyz.com/reg.php?x=xxxxxxxxxxx)這裏你可以用數字生成一個隨機字符串,也可以存儲這個在act_key場... 好

當激活鏈接的用戶點擊你首先檢查並符合本act_key .. 如果匹配或找到那麼你得到電子郵件ID或其他詳細信息... 和處理未來科技諮詢