直到現在我一直在使用窗體中的隱藏字段來傳遞數據到動作php。但是,我意識到這是一個巨大的安全風險的應用程序,並希望受到教育最好的方法,目前從隱藏的領域在PHP中傳遞表單數據?安全地傳遞ID來形成動作?
<input type="hidden" value="sensitive_info">
亞歷
直到現在我一直在使用窗體中的隱藏字段來傳遞數據到動作php。但是,我意識到這是一個巨大的安全風險的應用程序,並希望受到教育最好的方法,目前從隱藏的領域在PHP中傳遞表單數據?安全地傳遞ID來形成動作?
<input type="hidden" value="sensitive_info">
亞歷
我認爲會議可能是你在找什麼。
請參閱http://www.w3schools.com/php/php_sessions.asp瞭解使用它們的簡單指南。
你在你的PHP腳本的最頂部需要session_start();
,然後你可以存儲信息,像這樣:
$_SESSION["stuff"] = "sensitive info";
然後簡單地訪問下一頁:
$stuff = $_SESSION["stuff"];
簡單:)
PS確保session_start();
位於使用會話變量的每個php腳本的頂部。
我從來沒有真正想過表單數據的會話,是最好的方法嗎? – Elevant
這是將某些內容從前端頁面傳遞到非用戶輸入的後端的最安全方式,是的。請記住,如果它類似於您想要傳遞的IP地址,或者使用PHP生成的內容,則只需在後端使用$ _SERVER或其他任何內容,而不是使用會話或隱藏元素。 –
如果因某種原因無法使用會話,則始終可以加密該ID。這可能不是超安全的,但會阻止除了最堅定的東西之外的所有東西。
<?php
define("KEY", "Something much more random than this");
function encrypt($key, $plaintext)
{
$iv_size = openssl_cipher_iv_length('AES-256-CBC');
$iv = openssl_random_pseudo_bytes($iv_size);
$ciphertext = openssl_encrypt($plaintext, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $ciphertext);
}
function decrypt($key, $ciphertext)
{
$iv_size = openssl_cipher_iv_length('AES-256-CBC');
$ciphertext = base64_decode($ciphertext);
$iv = substr($ciphertext, 0, $iv_size);
return openssl_decrypt(substr($ciphertext, $iv_size), 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
}
$encrypted_id = encrypt(KEY, $database_id);
?>
<input name="foo" type="hidden" value="<?php echo $encrypted_id?>"/>
它取決於數據,你的方法可能沒問題,但**會議**想到。 –
除非您希望客戶端能夠更改數據,否則不要使用隱藏的輸入。請將這些信息保留在服務器上。順便說一下,除非你使用我推薦的AJAX,否則你的輸入必須有一個'name'屬性來與PHP一起工作。 – PHPglue