我一直在尝试为我正在开发的网站进行安全登录.
我只是不能让它工作,我使用MySQL的MySQL数据库.
我可以使表单将用户及其信息添加到数据库,但我似乎无法使其与登录一起工作.
HTML使用什么类型的加密<input type="password">?
如何在用户访问我的网站时保持用户登录?
我如何安全地检查它是否是与用户名匹配的正确密码?
我已经做了PHP一年了,我还没学会这个部分,所以很高兴知道.
我正在尝试在未安装TYPO3的外部网站上为TYPO3创建自定义注册组件(我只使用其数据库).问题是我没有使用TYPO3的经验.我想知道是否有人知道如何为TYPO3创建正确的密码加密?密码如下所示:
$ P $ CEO/XYcbzRH9nLpCwKdp1HhsJGwJum0
我正在寻找一个PHP代码来创建相同的加密并检查密码.我有安装工具的加密密钥(我相信)用于盐析.
或者是否有可能只将密码保存为MD5?不是最好的选择,但我可能是唯一剩下的选择.
我找到了这个网址:http: //srv123.typo3.org/TYPO3/Extensions/saltedpasswords/4.6/#compatibility-of-other-extensions-with-salted-user-password-hashes
但我不知道如何在我自己的脚本中实现它.
我一直在研究如何正确地散列/加密密码并将其存储在数据库中.我知道Salt和Hashing所以我环顾四周,PBKDF2似乎是一个不错的选择.所以我发现这个网站提供了一个很好的教程,以及适用于PHP的PBKDF2(这是我用于我的网站).
所以我设置我的网站使用这些函数来生成/创建密码,但正如您在以下代码中看到的那样:
Run Code Online (Sandbox Code Playgroud)function create_hash($password) { // format: algorithm:iterations:salt:hash $salt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTES, MCRYPT_DEV_URANDOM)); return PBKDF2_HASH_ALGORITHM . ":" . PBKDF2_ITERATIONS . ":" . $salt . ":" . base64_encode(pbkdf2( PBKDF2_HASH_ALGORITHM, $password, $salt, PBKDF2_ITERATIONS, PBKDF2_HASH_BYTES, true )); }
salt在create_hash函数中生成,并存储在生成的哈希中,最终看起来像sha256:1000:salt:hashed_password.这是我必须存储在我的数据库中,并且由于salt包含在生成的哈希中,我不需要将它添加到我的数据库中.但是,在用这个生成一些测试用户之后,我想知道在数据库中使用哈希密码进行PBKDF2设置实际上是一件好事.他们的方式我的新手自己看到它是一个黑客,破解我的数据库后,会看到这些sha256:1000:盐:密码的东西,并弄清楚每个部分将代表什么,这将有助于他在他的尝试,不?
所以我修改了一下我生成并存储在我的数据库中的外部盐,并在通过PBKDF2运行之前在密码中包含salt.然后我做同样的事情来比较给定的密码和我在我的数据库中用于登录,它的工作原理.我唯一担心的是,使用128位盐,生成的密码哈希长度只有50个字符,这对我来说似乎不对.
这是我目前的代码:
define("PBKDF2_HASH_ALGORITHM", "sha256");
define("PBKDF2_ITERATIONS", 10000);
define("PBKDF2_SALT_BYTES", 128);
define("PBKDF2_HASH_BYTES", 24);
define("HASH_SECTIONS", 4);
define("HASH_ALGORITHM_INDEX", 0);
define("HASH_ITERATION_INDEX", 1);
define("HASH_SALT_INDEX", 2);
define("HASH_PBKDF2_INDEX", 3);
function create_hash($password, $salt)
{
// format: salthash
return
base64_encode(pbkdf2(
PBKDF2_HASH_ALGORITHM,
$password,
$salt,
PBKDF2_ITERATIONS,
PBKDF2_HASH_BYTES,
true
));
}
function validate_password($password, $salt, $good_hash)
{
$pbkdf2 …Run Code Online (Sandbox Code Playgroud) 我通常非常有资源自己寻找信息,但是当谈到这个问题时,那里的东西确实令人生畏.我收到了一些信息超载.
我已经找到了几十篇关于个人安全主题的文章,但我无法理解大局以及它们在实践中如何融合在一起.
我需要看一个鸟瞰路线图.拿这个假设的例子:
一个简单的假设"评论"部分:
注册:创建一个密码/用户名组合,安全地存储在MySQL表中.
登录.
发表评论.
这个最基本的案例将遵循什么是"安全路线图"?
这个星球上的每本教程和PHP书都使用MySQL扩展没有帮助,如果我理解正确的话,这是一个坏主意吗?
我习惯使用md5(),我知道它已经过时了,我听说sha1()也是不安全的.那么,考虑到安全性,这几天在数据库中存储和检索密码的最佳方法是什么?如果你能提供一个小例子,我会很高兴.
谢谢!
我有一个login.html网页,允许用户输入他的用户名和密码.当他点击提交时,我使用Javascript收集输入的值,然后对php文件进行Ajax POST调用并发送用户名和密码.
我担心的是,这是一种安全的方式来发送用户名和密码吗?如果不能如何保护这个从html文件发送数据的事务到运行后端的php?
php文件然后连接到MySql Db并检查用户是否退出以及密码是否正确如果是,它只是将有效文本发送回javascript函数的ajax调用,如果不是我确定它是无效用户?
我对这个逻辑不太满意吗?有没有更好的方法来实现这个过程?由于我将我的代码投入生产,我希望尽可能地保护它.
下面的代码工作正常我只需要提示来保护它.
的login.html
<div>
<h3>Login information</h3>
<input type="text" name="user" id="usrnm" placeholder="Username/Email">
<input type="password" name="pswdlogin" id="pswdlogin" placeholder="Password">
<input type="checkbox" name="keepmeloggedin" id="keepmeloggedin" value="1" data-mini="true">
<input type="submit" data-inline="false" onclick="logmein()" value="Log in">
<div id="loginstatus"> </div>
</div>
Run Code Online (Sandbox Code Playgroud)
logmein.js
function logmein() {
var usrnm = document.getElementById("usrnm").value;
var pswdlogin = document.getElementById("pswdlogin").value;
$.post("http://xyz/mobile/php/logmein.php",
{
usrnm: usrnm,
pswdlogin: pswdlogin
},
function(data, status) {
if (data == 'Valid') {
window.open("http://xyz/mobile/home.html?email=" + usrnm + "", "_parent");
} else {
alert(data);
document.getElementById("loginstatus").innerHTML = data;
}
});
} …Run Code Online (Sandbox Code Playgroud) 我有一个项目,显然软件的设计者没有考虑安全性.
密码以纯文本格式存储,并通过纯文本传输.所以我有责任解决这个问题.
我的安全性有点生疏,所以我的问题是:对于在线用户密码验证,最好使用散列/腌制技术,还是使用AES加密更好?我可以有利有弊吗?
以某种方式使用ASP.NET成员资格提供程序会更好吗?这会容易吗?我以前用过它,但是软件会调用它自己的表,所以我不确定那里是否有更多麻烦.
如果这已经得到回答,有人可以指示我,因为我没有找到比较.
我使用简单的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) 我在数据库上有一个带有salt的PHP登录脚本,但在我的注册脚本中,我看到:
$qry = "INSERT INTO accounts(username, firstname, lastname, password) " .
VALUES('$username','$fname','$lname','" . md5($_POST['password']) . "')";
Run Code Online (Sandbox Code Playgroud)
并登录:
$qry="SELECT * FROM accounts WHERE username='$username' AND password='" .
md5($_POST['password']) . "'";
Run Code Online (Sandbox Code Playgroud)
是否有一些代码可以取代MD5?更安全的东西?
我听说过SHA1之类的东西.
我正在使用登录功能.
但是当我从我的网站更改页面时,我必须再次登录.
当我更改页面时,如何让用户登录?
这是我的代码:
<?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)