在将值插入SQL查询之前使用哈希值来防止sql注入,甚至不必使用mysql_real_escape_string?(假设您要为整个网站执行此操作)
编辑:具体来说,目的是从用户获取密钥并在将其与我表中的其他散列列进行比较之前对其进行哈希处理,然后检索哈希匹配的另一个列值.很抱歉没有说明
有人可以为我确认以下内容:
在将密码保存到数据库时加密密码的重点是,如果数据库被黑客入侵,那么黑客将无法知道实际的密码,除非他/她有算法和盐等来解密它,因此赢了能够使用相同的密码破坏此帐户或其他帐户?
但我的主要问题是:大概是密码是加密的,例如,将密码保存到数据库中的PHP脚本,因此在该脚本中清除密码的算法是明确的.因此,如果黑客入侵到网站的服务器或内容管理系统,他/她将能够访问该脚本并解密密码,这是正确的吗?
所以基本上加密只与你的在线CMS或服务器的登录信息相关性很强?
提前致谢!
目前我有一个存储了md5密码的数据库,几年前这被认为比现在更加安全,并且它已经达到了密码需要更加安全的程度.
我读了很多关于这里的职位crypt,md5,hash,bcrypt,等,并已经开始考虑使用的东西大致如下,以"安全"的密码比他们现在的线路.
我将使用hash("sha512"两种盐的组合,第一种盐将是存储在诸如.htaccess的文件中的全站点盐,并且将为每个用户创建第二种盐.
这里有一个例子大意就是我此刻的测试:
的.htaccess
SetEnv SITEWIDE_SALT NeZa5Edabex?26Y#j5pr7VASpu$8UheVaREj$yA*59t*A$EdRUqer_prazepreTr
Run Code Online (Sandbox Code Playgroud)
使用example.php
$currentpassword = //get password
$pepper = getenv('SITEWIDE_SALT');
$salt = microtime().ip2long($_SERVER['REMOTE_ADDR']);
$saltpepper = $salt.$pepper;
$password = hash("sha512", md5($currentpassword).$saltpepper);
Run Code Online (Sandbox Code Playgroud)
显然,盐需要存储在一个单独的表中,以便检查将来插入的登录密码,但用户永远无法看到.你认为这是一个充分的方法吗?
好吧,我知道这个主题在stackoverflow中提出了很多,但他们没有强调我正在寻找的答案.
我使用md5加密,我告诉(它是在不久之前,当我是一个菜鸟的菜鸟)是安全的,但如果你看起来好旧的谷歌它已加密和解密.
所以我开始寻找其他地方也在这里.
我已经听说过所有的加密方法,例如SHA-1,MD5,SHA-2,SHA-256,SHA-512等等.
很多人都说使用Bcrypt来看待它,它与SHA-512相比.
并且人们说使用随机盐并将其保存在您的数据库中这是愚蠢的,因为说黑客攻击您的数据库并获取所有密码的盐,因此它是一个小窗口,在黑客解密所有密码之前更改所有的盐并且去到其他地方,并尝试他们的例如Facebook,谷歌和stackoverflow
所以我的问题是这样做最安全的方式(加密(使用SHA-512)和使用随机盐也将存储在数据库中)或使用固定盐,这是固定的盐,硬连接到我的PHP代码,其中有与数据库随机盐相同的安全性.
我已经阅读了很多这方面的帖子,所以我想我知道我在说什么,我想无动于衷地说我已经阅读了很多关于这个约20的文章.
OH差点忘了,如果你多次加密密码或者只加密一次加密,它会更安全吗?
感谢您在书面文章上的帮助
我很抱歉让人混淆了一点,但我没有得到其他人的帖子,我开始谈论加密,但我在谈论哈希字符串.
对不起
我使用以下代码加密用户密码.
<cfset "EncryptedNewPass" = Encrypt(#HTMLCodeFormat(NewPass)#, Request.PasswordKey)>
Run Code Online (Sandbox Code Playgroud)
然后将它与存储在数据库中的值进行比较,它可以正常工作.但是,如果我从数据库中获取值并使用decrypt,如下所示
<cfset DecryptedPass = Decrypt(#getOrigPassFP.pass#, Request.PasswordKey)>
Run Code Online (Sandbox Code Playgroud)
并执行cfout,该值包含<pre> </pre>标记.我遇到的问题是因为我们也使用密码打开PDF文档,这是一个错误.我尝试使用replace来剥离标记,但是当它显示或传递给变量时,它仍然包含<pre>标记.
我正在参加之前的信息安全考试。
我正在研究与密码加密有关的加盐。我的问题是 - 如果 SHA 256 是一种单向加密,那么如何解密?
我只是想,当通过电子邮件发送消息时,它们会被加密和解密,以便可以访问消息或文件。
SHA 256 如何工作?如果加密无法解密,您如何查看您的消息或文件?或者它只是保护密码本身?
我目前正在研究这个(在大学),希望得到任何帮助。请原谅我的问题中的任何愚蠢错误,因为我仍在尝试了解这个主题。
谢谢。
我有一个由Django生成的密码哈希.我想使用Flask的密码哈希登录用户.如何在Flask中验证密码?
from django.contrib.auth import hashers
hash = hashers.make_password('pasword')
# pbkdf2_sha256$20000$3RFHVUvhZbu5$llCkkBhVqeh69KSETtH8gK5iTQVy2guwSSyTeGyguxE='
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher',
)
Run Code Online (Sandbox Code Playgroud) 我使用SHA1使用下面的代码加密了一个字符串(hello).请指导我解密这个字符串.
SHA1Managed sha1 = new SHA1Managed();
byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes("hello"));
StringBuilder sb = new StringBuilder(hash.Length * 2);
foreach( byte b in hash)
{
sb.Append(b.ToString("x2"));
}
string result = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
在互联网上搜索时,即使在MSDN中,我也没有使用SHA1进行解密.请指导我.
谁能向我解释 ApplePay 的工作原理?
我浏览了一些博客,但我仍然不清楚付款流程。
问题:
卡是如何添加的。
交易流程如何运作。
我的客户忘记密码登录由拒绝提供帮助的其他开发人员开发的网站后端.因此,我去了SQL数据库,看看我是否可以直接从那里检索密码,但似乎密码是加密的.见下文
3a0606b25e75eb6c1fed61886844832e
如果我知道密码是如何加密的话会更容易,这样我就可以加密新密码并添加到SQL中但是当我查看代码时(在密码更改PHP gile中)有一些名为salt_pass的东西可以加密这个网站的密码.见下面的代码:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$db = new database();
$option_uw = array(
"table" => "users",
"fields" => "password",
"condition" => "id='{$_POST['id']}'"
);
$query_uw = $db->select($option_uw);
$rs_uw = $db->get($query_uw);
if ($rs_uw['password'] == trim(salt_pass($_POST['oldpassword']))) {
$value_pw = array(
"password" => trim(salt_pass($_POST['pass']))
);
$query_pw = $db->update("users", $value_pw, "id='{$_POST['id']}'");
if ($query_pw == TRUE) {
header("location:" . $baseUrl . "/back/user");
}
}else{
$_SESSION[_ss . 'msg_result'] = TRUE;
header("location:" . $baseUrl . "/back/user/changepassword");
}
mysql_close();
}
Run Code Online (Sandbox Code Playgroud)
这是salt_pass功能
function salt_pass($pass) { …Run Code Online (Sandbox Code Playgroud)