我使用简单的md5($password);格式,但我想添加盐,所以我怎么能这样做?
这是我的代码:
if($success)
{
$data['firstname'] = $firstname;
$data['lastname'] = $lastname;
$data['username'] = $username;
$data['password'] = md5($password);
$data['email'] = $email;
$newUser = new User($data);
$newUser->save(true);
$Newuser->login($username, $password);
header("Location: welcome.php");
}
Run Code Online (Sandbox Code Playgroud) 我正在使用登录功能.
但是当我从我的网站更改页面时,我必须再次登录.
当我更改页面时,如何让用户登录?
这是我的代码:
<?php
error_reporting(0);
if($_POST['login']=="") {
?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<label><a>Utilizador</a><input type="text" name="login" id="s-user"></label>
<label><a>Senha</a><input type="text" name="password" id="s-pass"></label>
<input type="submit" class="submit" value="Entrar">
</form>
<?php
}
else {
?>
<?php
include("classes/Utilizadores/Cliente.class.php");
if($_REQUEST['login']!="") {
if($_REQUEST['password']!="") {
$clientes = new Cliente();
if($clientes->verificarCliente($_REQUEST['login'], $_REQUEST['password'])) {
echo "<br>";
} else {
echo "<br><a>Login ou senha errados, caso não tenha, <a href='criarconta.php'> registre-se</a>, <a>ou</a> <a href='index.php'>volte a tentar.</a></a><br>";
}
$clientes->endCliente();
} else {
echo "ERRO: Deve introduzir a sua password...<br>"; …Run Code Online (Sandbox Code Playgroud) 在提出问题之前,请尝试搜索StackOverflow.许多问题已经得到解答.例如:
你好
我希望即使在数据库中也没有人能看到我的密码..
所以我使用了这样的哈希函数
$passowrd_hash=hash('shal',$_POST['password']);
Run Code Online (Sandbox Code Playgroud)
现在我可以轻松地将此password_hash值存储到数据库中.这将是加密形式的东西.
现在用户知道其原始密码,他不知道这个加密密码.
现在如果他尝试登录这个原始密码......他无法登录.
那么有没有任何方法可以解密,用户可以登录.所以他既可以实现密码的安全性,也可以再次登录.
这该怎么做?
我刚刚启动PHP和mySQL,需要知道这是否"安全".登录信息通过AJAX(jQuery)传递到以下PHP文件中.
jQuery AJAX
$("#login_form").submit(function(){
$.post("login.php",{user:$('#username').val(),pass:$('#password').val()} ,function(data)
Run Code Online (Sandbox Code Playgroud)
PHP
ob_start();
mysql_connect("-", "-", "-") or die("ERROR. Could not connect to Database.");
mysql_select_db("-")or die("ERROR. Could not select Database.");
//Get Username and Password, md5 the password then protect from injection.
$pass = md5($pass);
$user = stripslashes($user);
$pass = stripslashes($pass);
$user = mysql_real_escape_string($user);
$pass = mysql_real_escape_string($pass);
//See if the Username exists.
$user_result=mysql_query("SELECT * FROM users WHERE username='$user'");
$user_count=mysql_num_rows($user_result);
if($user_count==1){
if($pass_length==0){ echo "userVALID"; }
else{
$pass_result=mysql_query("SELECT * FROM users WHERE username='$user' and password='$pass'");
$pass_count=mysql_num_rows($pass_result);
if($pass_count==1){
session_register("user");
session_register("pass"); …Run Code Online (Sandbox Code Playgroud) 我有一个人们可以注册的网站,我需要加密他们的密码.我研究了它,但我发现任何方法都不会受到现代GPU的强大影响.
所以我来向StackOverflow的优秀人士询问,最强大的加密方法是什么,我已尽力阻止人们掌握数据库,但我希望尽可能确保他们的数据是如果数据库以某种方式被盗,那很好.
我想知道的其他事情是,以某种方式随机化密码中的字符会更安全,但是你可以将它们再次随机化以便登录吗?
编辑: 我已经使用了Andrew Moore的bcrypt实现(如何在PHP中使用bcrypt进行散列密码?)并想出这个:
public static function Encrypt($Str,$Salt)
{
$bcrypt = new \bcrypt();
return $bcrypt->hash(SERVER_SALT . md5($Str) . $Salt);
}
Run Code Online (Sandbox Code Playgroud)
如果有人发现任何错误或任何弱点,请告诉我.
可能重复:
PHP密码的安全散列和盐
这是加密密码以存储在mysql数据库中的安全方法:
md5(sha1($password))
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个简单的注册脚本在PHP完成,我只是好奇,如果我这样做的方式足够安全,以存储用户密码.我正在生成一个32位随机盐并将其附加到sha1哈希密码.
//create new validator object
$validator = new data_validation();
//validate user input
$firstName = $validator->validate_fname($firstName); //is the first name a string?
$lastName = $validator->validate_lname($lastName); // is the last name a string?
$username = $validator->validate_username($username); // is the username a string?
$email = $validator->validate_email($email); //is the email in valid format?
//make sure there isn't duplicate emails
$valQuery = $link->query("SELECT email FROM users WHERE email = '" .$email. "'");
if ($valQuery->num_rows == 1) {
echo "An email is already registered with that …Run Code Online (Sandbox Code Playgroud) SHA-3已经选择了哈希算法竞赛的获胜者.获胜者的算法是Keccak.
我使用Blowfish并且非常喜欢它,但据说Keccak更好.是否值得使用它在我的网站上存储用户的密码?
如果是,是否有任何用于Web编程的PHP,Python,Ruby或任何其他语言的Keccak实现?
我希望这个问题也能帮助其他人.谢谢!
我在标题中提到了警告,我的代码在这里:
<?php
require_once 'conn.php';
require_once 'http.php';
if (isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'Login':
if (isset($_POST['email'])
and isset($_POST['passwd']))
{
$sql = "SELECT user_id, access_lvl,name "."FROM cms_users"."WHERE email='" . $_POST['email'] . "' " .
"AND passwd='" . $_POST['passwd'] . "'";
$result = mysqli_query($sql, $conn) or die('Could not look up user information; ' . mysql_error());
Run Code Online (Sandbox Code Playgroud) 我尝试使用password_hash() PHP函数来哈希用户密码.但是,它的功能是工作哈希,而不是常量.
<?php
echo password_hash('a',PASSWORD_BCRYPT,array(
'cost' => 12
));
?>
Run Code Online (Sandbox Code Playgroud)
1. $2y$12$SRmipqM7AsYkx3Xc8QGHNex69rGXeVyWGTYrh9T8sh1cP3UrdjfQi
2. $2y$12$zx.GUgtcake3wMfl3/YXXeG1.8mmHKyRruL3nWj8OmA.RbEYqeW6u
3. $2y$12$XQtmFplcehkgWLbGrOUsNOlXDU/NGrwZlt3HM88hLbUHXhjXNF4km
4. $2y$12$q9/OSZdDJw7af4Hw4MGlHeY7UMtWr9/Cj0nj/N6PaoilNoUBePt7O
Run Code Online (Sandbox Code Playgroud)