我有一個站點可以接受來自多個站點的請求。有點像升級檢查。 這些網站會發送用戶名,密碼,應用版本等信息,然後我的網站會根據這個信息發送回覆。PHP - 將數據從一個站點安全地傳遞到另一個站點
基本上這是一個$_GET
要求,是這樣的:
http://www.mysite.com/?user=boo&password=foo&version=4
我在想,如果有會做這樣的東西任何安全問題。這個數據能夠以某種方式被「攔截」嗎?
我有一個站點可以接受來自多個站點的請求。有點像升級檢查。 這些網站會發送用戶名,密碼,應用版本等信息,然後我的網站會根據這個信息發送回覆。PHP - 將數據從一個站點安全地傳遞到另一個站點
基本上這是一個$_GET
要求,是這樣的:
http://www.mysite.com/?user=boo&password=foo&version=4
我在想,如果有會做這樣的東西任何安全問題。這個數據能夠以某種方式被「攔截」嗎?
那麼,我會強烈建議而不是在任何情況下(甚至當在SSL下)在純文本上發送用戶名/密碼。相反,我會建議使用摘要形式的身份驗證。相反,我會建議生成一個大的身份驗證令牌(一個大尺寸的隨機字符串,128個字符將工作)。然後,用戶將在他們的應用程序中安裝這個「令牌」。
現在,當應用程序檢查更新時,它會首先向您的服務器發出請求,要求提供摘要令牌。這是一個隨機的一次性使用令牌,僅用於一個請求。您的應用程序應該生成一個令牌,並將其以持久格式(文件,內存,數據庫等)與時間戳一起存儲,然後將其發回。
現在,您的應用程序會收到此摘要令牌(此處稱爲$dt
)。然後,使用已提供的預配置身份驗證令牌進行匹配。
$authBit = $username . ':' . $authToken;
$hash = hash_hmac('sha256', $authBit, $digestToken);
$authField = $username . ':' . $hash . ':' . $digestToken;
然後,您將$authField
發送到服務器。然後,服務器將拆分部分:現在
list ($user, $hash, $digestToken) = explode(':', $authField);
,首先查找用戶的身份驗證令牌在數據庫中,並存儲在$authToken
。然後,您查找$digestToken
以確保它存在並且創建時間不到60秒(如果太短,可以調整它,但不要太長)。無論哪種方式,在這一點上從數據庫中刪除它(以防止它被重用)。
現在,如果$digestToken
存在並且是有效的,你可以找到一個$authToken
,那麼就做以下檢查:
$stub = $user . ':' . $authToken;
if ($hash == hash_hmac('sha256', $stub, $digestToken)) {
//valid user
} else {
//Not valid
}
它改變了發送令牌每過一個HTTP請求的好處(任何閱讀請求流的人都將無法從請求中獲得任何敏感信息,除了您可以進一步屏蔽的用戶名外,如果您願意的話)...
使用.htaccess修改和隱藏你的網站的網址。 如:
www.mysite.com/index.php?cat=1234&foo=5678
會看起來像:
www.mysite.com/cat-1234-foo-5678-index.html
當u成功創建.htaccess文件,這兩個網址會採取同樣。
完美的問題類型,這不會增加任何有價值的保護,所有信息仍然可用。它可能稍微難以找到,但沒有真正的保護。 – Nico 2011-03-21 02:07:00
這只是一個演示夥伴。您可以根據所需的任何算法對值和變量進行編碼。 – 2011-03-21 02:11:52
這個url也可以這樣設計:http://www.mysite.com/dbu4321gpp8765cheapdata.html – 2011-03-21 02:12:37
Security trough obscurity不起作用,並且使用POST代替GET僅會使信息稍微難以抓取,如果您實際上正在看肩膀上的用戶。
這裏真正的問題是阻止人們攔截服務器之間的傳輸流量。解決這個問題的唯一方法就是加密,比如SSL。在傳輸密碼等敏感信息時,始終嘗試使用SSL是個不錯的主意。實施起來可能會稍微困難一點,但在安全性方面絕對值得。
但是,保持敏感數據不被抓起來的最好方法是首先不傳輸它。考慮是否讓應用程序檢查更新而不傳輸密碼。如果有更新可用,您可以使用HTTPS將用戶發送到網頁以下載更新,從而爲您節省了自行實施SSL的麻煩。
您可能會查看哈希/鹽。即,客戶端請求使用散列密碼,只有服務器知道使用鹽進行散列。 – 2011-03-21 01:41:16
這是對於http://area51.stackexchange.com/proposals/12123/webservice-apis – Cyclone 2011-03-21 02:23:55