Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用SSL在PHP中加密提交的表单数据吗?_Php_Ssl_Encryption - Fatal编程技术网

我可以使用SSL在PHP中加密提交的表单数据吗?

我可以使用SSL在PHP中加密提交的表单数据吗?,php,ssl,encryption,Php,Ssl,Encryption,若我为我的站点购买SSL证书,我可以在PHP中手动加密提交的表单数据,然后将其存储到数据库中吗 请解释一下ssl是做什么的 例如: 网站访问者输入用户名和密码,我可以用SSL在php中加密这两个数据吗 像这样 $u_name = verisign_ssl_encryption($_POST['username']); $pass = verisign_ssl_encryption($_POST['password']); mysql_query('insert into table (user

若我为我的站点购买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可以以多种方式使用,但我认为您的意思是,您的网站将需要SSL支持。使用apache,您可以使用modssl实现这一点


您应该咨询您的主机提供商,以便为您的网站配置ssl支持。

是的,您可以这样做,但不需要购买证书即可使用ssl加密。任何自签名证书都将用于加密服务器上的数据

请注意,如果黑客能够访问您的代码,他们很可能能够访问您的私钥,并且仍然能够访问您的数据库

此外,即使加密了数据,也应该(用salt)散列密码


请参阅和相关函数。

如果您不想购买SSL证书,请使用
base64
SSL代表安全套接字层对提交的数据进行加密,并且基本上为web浏览器和web服务器提供了交换信息的安全通道。基本上,通过互联网发送的任何带有SSL的东西都是安全的,但是一旦服务器收到用户名或密码,SSL实际上与加密它们没有任何关系

基本上,如果要确保服务器和浏览器之间的连接是安全的,首先要测试是否正在使用SSL(https),如果没有,则重定向到同一页面,但从“https://”开始,而不是标准的“http://”

将此代码放在页面顶部,它将重定向用户的浏览器以使用安全连接。使用“exit()”将确保脚本不会向浏览器发送任何内容,除非($\u SERVER['HTTPS']=='on')

如果您想在服务器收到用户名/密码后保护它们,比如说添加到数据库,那么应该使用salted散列。基本上,salted散列将计算一个不能反转的散列代码来确定原始密码。这样,如果有人入侵你的数据库,他们将无法窃取任何密码

salt散列中的“salt”只是一个随机单词或序列,这使得字典攻击更加困难。一个简单的函数,它将返回字符串的salt散列:

function getSaltedHash($string){
    $salted = "SaLtStRiNg" . $string;
    $hash   = md5($salted);
    return $hash;
}
此函数的输出将是一个长的十六进制字符串(如:23fds327de345ad7839d9799a9b),您应该将此数字作为密码存储在数据库中,当您需要验证密码时,只需计算用户发送的密码的哈希代码(通过使用相同的哈希函数)使用存储在数据库中的哈希代码

如果您需要实际加密数据以放入数据库(哈希与加密不同),那么您需要查看PHP的一些加密包,或者如果verisign为您提供了加密/解密API,那么就使用它


在任何情况下,您都不应该尝试设计自己的加密方案,并且绝对不要使用模糊处理(如BASE64或ROT13),这些都不会保护您的数据,任何有能力的黑客都可以非常轻松地解码模糊数据。

“请解释一下ssl的作用?”Google和Wikipedia今天都被一些重大灾难破坏了吗?更重要的是防止SQL注入和散列密码。请注意,有两个非常不同的事情:通过签名SSL证书加密流量和加密存储的数据。第一个要求(如果您不想看到浏览器警告)某种受信任的权威机构来签署您的证书(大多数需要付费),并作为web服务器的一部分安装。这对于保护网络流量非常重要。第二个对于保护您存储的私有数据很重要,尽管它并不像您预期的那样具有故障安全性(因为私钥也可能被盗)。Base64是一种安全的加密方法,并且不是SSL加密的替代方法。很好的提示,但是md5不是最好的哈希函数。另外,添加用户名会使不同用户中相同密码的哈希看起来不同。@NickSoft单独使用用户名作为salt不是一个好主意。您可以将用户名/电子邮件与salt混合,并对其应用哈希函数<代码>$salted=“SaLtStRiNg”$字符串。“用户名/电子邮件”$散列=md5($salt)@Rao好吧,如果他们得到了密码,他们就很有可能得到了算法,因此在散列中添加更多的东西(但仍然是一件好事)不会有什么安全改进。我没有提到它,因为如果我提到,我将不得不写一篇完整的文章。例如,应用哈希函数1000到100000次以增加破解时间,将每个用户的授权限制为每1-2秒一次,将每个ip的错误身份验证次数限制为每小时10次。。。
function getSaltedHash($string){
    $salted = "SaLtStRiNg" . $string;
    $hash   = md5($salted);
    return $hash;
}