簡體   English   中英

PHP使隱藏字段篡改證明?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM