[英]php make hidden fields tamper proof ?
當此項目中只有一個需要驗證的值時,我不想使用框架,但是我想確保所使用的方法相當安全和理智!
我在網絡根目錄之外的包含中設置了$ secret值
表單看起來像這樣($ salt是一個隨機整數,每個表單都有一個新整數)
<form name="deleteform" action="#" method="get">
<input type="hidden" name="check" value="<?=sha1($salt.$secret.$songid)?>"/>
<input type="hidden" name="songid" value="<?=$songid?>"/>
<input type="hidden" name="salt" value="<?=$salt?>"/>
<input type="hidden" name="action" value="delete"/>
<input type="submit" value="Delete"/></form>
當返回表單時,我使用$ salt $ songid和$ secret的返回值來計算新的sha1並將其與$ check比較
如果它們相等,我假設返回的$ songid未被篡改
使用$ _SESSIONS是可行的方法。 即使您仍然想做防篡改隱藏字段的想法。 為了防止篡改,您必須在點擊提交后在服務器端設置該值。 您可以使用jQuery的.preventDefault()
進行此操作,在該位置設置隱藏字段的值,然后繼續提交。 但是為什么要采取額外的步驟呢?
只需從一開始就使用會話,例如:
session_start();
$_SESSION['name'] = value;
echo $_SESSION['name'];
$ _SESSION是必經之路...您的設計的缺點是,您仍然可以通過簡單地復制/粘貼值來修改表單。
同樣,如果他們知道您在進行哪種檢查,絕對沒有阻止他們放入自己的songid,計算自己的sha1哈希並將其填充到您的檢查字段中的任何方法。
會議簡介:
session_start();
$_SESSION['songid']=your song id;
並且您已經完成了……現在,songid值存儲在服務器上,除了您之外,沒有任何東西可以篡改它……除非openSSL再次中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.