簡體   English   中英

我可以使用 SSL 加密 PHP 中提交的表單數據嗎?

[英]Can i Encrypt submitted form data in PHP by using SSL?

如果我為我的站點購買 SSL 證書,我可以在 PHP 中手動加密提交的表單數據,然后將其存儲到數據庫嗎?

請解釋一下 ssl 做了什么?

例子:

該站點的訪問者輸入用戶名和密碼,我可以使用 SSL 加密 php 中的兩個數據嗎?

像這樣。

$u_name = verisign_ssl_encryption($_POST['username']);
$pass = verisign_ssl_encryption($_POST['password']);

mysql_query('insert into table (username,password) values ("'.$u_name.'", "'.$pass.'")';

我可以像這樣使用相同的 SSL 從表中解密檢索到的加密數據嗎

$row = mysql_fetch_array(mysql_query('select * from table where u_id = 1'));
$user_card_no = verisign_ssl_decrypt($row['card_no']);
echo $user_card_no;

或 SSL 與此不同?

提前感謝您的回答!

是的,您可以這樣做,但您無需購買證書即可使用 SSL 加密。 任何自簽名證書都可以加密您服務器上的數據。

請注意,如果黑客可以訪問您的代碼,他們很可能可以訪問您的私鑰,並且他們仍然能夠訪問您的數據庫。

此外,即使您加密數據,您也應該 hash 密碼(帶鹽)。

請參閱openssl_encrypt()和相關函數。

SSL 代表 Secure Sockets 層,基本上為 web 瀏覽器和 Z2567A5EC9705EB7AC2ZC9 交換信息提供了一個安全通道。 基本上,使用 SSL 通過 Internet 發送的任何內容都是安全的,但 SSL 與服務器收到用戶名或密碼后的加密沒有任何關系。

基本上,如果您想確保服務器和瀏覽器之間的連接是安全的,您首先測試是否使用了 SSL (https),如果沒有,則重定向到同一頁面,但以“https://”開頭標准的“http://”

 if($_SERVER['HTTPS'] != 'on') {
     header('HTTP/1.1 301 Moved Permanently');
     header('Location: "https://" ' . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]);
     exit();
 }

將此代碼放在頁面頂部,它將重定向用戶的瀏覽器以使用安全連接。 使用“exit()”將確保您的腳本不會向瀏覽器發送任何內容,除非 ($_SERVER['HTTPS'] == 'on')。

如果你想在服務器收到用戶名/密碼后保護它們,比如添加到數據庫,你應該使用加鹽的 hash。 基本上,一個加鹽的 hash 將計算一個 hash 代碼,該代碼無法反轉以確定原始密碼。 這樣,如果有人入侵您的數據庫,他們將無法竊取任何密碼。

鹽漬 hash 中的“鹽”只是一個隨機單詞或序列,這使得字典攻擊更加困難。 一個簡單的 function 將返回一個字符串的鹽漬 hash:

function getSaltedHash($string){
    $salted = "SaLtStRiNg" . $string;
    $hash   = md5($salted);
    return $hash;
}

這個 function 的 output 將是一個長的十六進制字符串(如:23fds327de345ad7839d9799a9b),您應該將此數字作為密碼存儲在數據庫中,並且當您需要驗證用戶已發送密碼的密碼時,計算密碼(通過使用相同的哈希函數)與您存儲在數據庫中的哈希碼。

如果您需要實際加密數據以放入數據庫(散列與加密不同),那么您需要查看一些 PHP 的加密包,或者如果威瑞信為您提供了加密/解密 API,然后使用它.

在任何情況下,您都不應嘗試使用您自己的加密方案 devise,並且絕對不要使用混淆(如 BASE64 或 ROT13),這些對保護您的數據沒有任何作用,任何有能力的黑客都可以很容易地解碼混淆數據。

SSL 可以以多種方式使用,但我認為您的意思是您的網站需要 ssl 支持。 使用 apache 您可以使用 modssl http://www.modssl.org/執行此操作。

您應該咨詢您的托管服務提供商以使用 ssl 支持來配置您的網站。

如果您不想購買 SSL 證書,請使用base64加密您提交的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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