2010-11-26 58 views
1

安全角度來看get方法顯示數據庫值是一種不好的做法嗎?例如: : - 'http://example.com/user/id/10'其中10從數據庫中獲取價值。編碼和解碼算法php

請任何人都可以給我一個標準的編碼和解碼算法,它需要兩個參數(編碼和解碼),以便一個可以作爲變量存儲在PHP文件(或數據庫)中,另一個參數是一個字符串被編碼或解碼。

預先感謝您

+0

有沒有安全隱患如此。用戶可以用「10」做什麼?這取決於你的應用程序的其餘部分是否會打開任何安全漏洞。在URL中編碼值通常是解決可能存在或可能不存在的安全問題的錯誤方法。 – deceze 2010-11-26 07:23:36

回答

0

我會回答你的問題的第一部分:

是一個不好的做法,顯示出GET方法數據庫 值安全 的觀點?例如: - 'http://example.com/user/id/10'其中 10從數據庫中獲取價值。

不是真的,這取決於'頁面'是用id/10做什麼的。如果您只是顯示用戶信息(配置文件),有什麼危害?但是,如果你想掩蓋你的URL,完全取決於你。我已經看到使用加密掩蔽,但我很好奇你爲什麼認爲URL會「有害」?你只是不想讓用戶看到id = 10?我會專注於在該頁面上使我的php/sql查詢安全,而不是增加額外的開銷來加密無害的東西(從我的角度來看)。

編輯:

爲了方便起見,你可以利用PHP函數base64_encode和解碼:http://us.php.net/manual/en/function.base64-encode.php

這應該給你足夠的。但是我真的會考慮爲什麼要將它隱藏起來,通常'易於閱讀'的網址總是一個獎金,尤其是當涉及到搜索引擎優化時。

+1

對於任何曾經見過它的人來說,base64是非常明顯的,所以它在我看來就是讓URL更長。否則同意。 – 2010-11-26 07:34:25

+0

感謝您的回覆。我只是想知道爲什麼CakePHP這樣的框架採用加密的'salt'值。 Dosen看起來很愚蠢,我顯示所有用戶的ID(這是數據庫的主鍵)?我只需要掩蓋算法。 bur base64編碼只有一個參數?你能告訴我一個嗎? – 2010-11-26 07:36:07

0

唯一的風險是如果您沒有正確地設置您的網站權限安全設置。通過數據庫ID匹配你的數據是好的,這很容易理解。如果有人想要抓取所有數據,他們只需增加網址即可。

如果您不希望人們能夠訪問某些「ID」,只需確保他們具有正確的登錄憑據即可查看該頁面。

現在,如果要加密/解密容易,考慮使用MD5哈希值:http://php.net/manual/en/function.md5.php