我不时听到"使用bcrypt在PHP中存储密码,bcrypt规则"的建议.
但是什么bcrypt呢?PHP没有提供任何此类功能,维基百科关于文件加密实用程序的唠叨和Web搜索只是揭示了不同语言的Blowfish的一些实现.现在Blowfish也可以通过PHP获得mcrypt,但是如何帮助存储密码?Blowfish是一种通用密码,它有两种工作方式.如果它可以加密,则可以解密.密码需要单向散列函数.
解释是什么?
即使使用mysql_real_escape_string()函数,是否存在SQL注入的可能性?
考虑这个示例情况.SQL是用PHP构造的,如下所示:
$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));
$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
Run Code Online (Sandbox Code Playgroud)
我听过很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()函数也可以破解.但我想不出任何可能的漏洞?
像这样的经典注射:
aaa' OR 1=1 --
Run Code Online (Sandbox Code Playgroud)
不工作.
你知道任何可能通过上面的PHP代码注入的注入吗?
最近我一直试图在我在互联网上偶然发现的登录脚本中实现我自己的安全性.在努力学习如何制作我自己的脚本为每个用户生成一个盐之后,我偶然发现了password_hash.
根据我的理解(基于本页的阅读:http://php.net/manual/en/faq.passwords.php),当您使用password_hash时,已经在行中生成了salt.这是真的?
我的另一个问题是,含有2种盐是不是很聪明?一个直接在文件中,一个在DB中?这样,如果有人在数据库中泄露了你的盐,你仍然直接在文件中?我在这里读到,存储盐绝不是一个明智的想法,但它总是让我困惑的是人们的意思.
我试图将MySQLi查询错误转换为异常,但不能 - 只有在连接数据库失败时才会抛出mysqli_sql_exception.
我使用mysqli_report(MYSQLI_REPORT_STRICT)和程序化的MySQLi函数嵌入到自定义包装类中.
前代码:
public function mysqlQuery($SQL) {
$this->Result = mysqli_query($this->DBlink, $SQL);
if($this->Result === false)
throw new MySQLiQueryException($SQL, mysqli_error($this->DBlink), mysqli_errno($this->DBlink));
return $this->Result;
}
Run Code Online (Sandbox Code Playgroud)
问题:是否正常没有警告,查询失败时也不会抛出异常,所以我必须检查mysqli_query()是否返回false?
我有一个表单,其中包含名称属性username的文本框和另一个名称为attribute password的表单.我还有一个名为user和pass的数据库.当我的用户注册时,它将用户列的用户名和密码添加到传递列.
我如何制作一个MySQL查询来检查表单是否提交了正确的用户名和密码,然后如果它确实有一个分支让我输入代码,如果它成功了?
我真的需要一些代码,这一点并不顺利我知道它应该是类似的东西SELECT * FROM table WHERE username == $username AND...然后我被卡住了因为我在数据库中有一个MD5密码,并且第一位可能是错误的.请帮忙.:)
谢谢