<?php
class test_class {
public function __construct() {
}
public function doLogin($username,$password) {
include("connection.php");
$query = "SELECT *
FROM users
WHERE username = '".mysql_escape_string($username)."'
AND password = '".mysql_escape_string($password)."'";
$result = mysql_fetch_array(mysql_query($query));
if(!$result) {
return 'no';
}
else
{
return 'yes';
}
}
}
?>上面的代码可以工作,但有点担心它是否安全。
注意:我没有使用POST方法,所以我必须在函数中接收它作为参数,并且我不能使用。
if (isset($_POST['username']) && isset($_POST['password']))
{
$username= $_POST['username'];
$password= $_POST['password'];发布于 2009-05-27 10:49:07
代码可能是安全的,但实现不是很好。你永远不应该以明文形式存储身份验证密码。你应该对它进行加密和散列。
我可以花一个小时解释原因,但你会做得更好just reading this。
发布于 2009-05-27 10:49:12
查询本身看起来是安全的,但如果使用支持参数绑定的DB接口,比如PDO或Zend_Db,就不必如此紧张地仔细检查每条SQL语句。
此外,mysql-*函数几乎已被弃用;您应该改为使用mysqli-*函数。
顺便说一下,空的构造函数没有意义,我建议返回布尔值true或false,而不是字符串值。
最后,正如前面提到的,存储明文密码不是一个好主意。
发布于 2009-05-27 10:47:14
嗯..。你在存储明文密码?这肯定是不安全的。密码应该使用类似于sha256的盐进行散列。存储明文密码从来都不是一个好主意。
https://stackoverflow.com/questions/915057
复制相似问题