2012-11-14 71 views
-3

我有一個HTML代碼請求到PHP服務器。我只想參加我的HTML代碼的請求,而不是其他人。我認爲使用JavaScript來做一些事情就像一個令牌一樣,只是回答正確的令牌,但我遇到了一個問題:我使用MediaWiki,JavaScript代碼是「開放源碼」(是的,POST請求是從MediaWiki中完成的)。私人HTTP/POST

有誰知道如何做一個私人POST請求?

+0

除了您已經想到的令牌之外,您只能通過檢查'$ _SERVER ['HTTP_REFERRER']'來做到這一點,但這也是不可靠的。只要你的腳本沒有任何授權或IP限制,你就不能輕易阻止對它的請求。 –

+0

有什麼方法可以獲得有關請求的人的可靠*信息? – Doon

回答

0

生成隨機令牌像

$_SESSION['token']=sha1(uniqid(mt_rand(), true));

把令牌值在一個隱藏的輸入

<input type='hidden' name='token' value=$_SESSION['token'] />

然後,在你的PHP檢查,如果該令牌被送到

if($_REQUEST['token']!=$_SESSION['token']){ 
    syslog(LOG_ERR, "Request from other site ..."); 
    die("Request failed. (Disabled cookies?) Contact administrator: ..."); 
} 

看這個鏈接:http://en.wikipedia.org/wiki/Cross-site_request_forgery