1

首先,感谢您的宝贵时间。就像主题说的......我正在做一个登录页面,但每次搜索都会将我发送到相同的代码:

use posted user & pass
connect to mysql
search for the user & pass posted
if returns records then ok 
else bad access

但我正在这样做(我希望有人能告诉我我是否做错了以及为什么)

session_start();
$user=$_POST['user'];
$pass=$_POST['password'];
$link=mysql_connect('localhost',$user,$pass);
if(!link){
   echo "Access denied";
}else{
   echo "Access OK";
   $_SESSION['user']=$user;
   $_SESSION['password']=$password;
}

每次我需要验证用户是否登录时,我都会做同样的连接到 mysql。这里有代码注入的可能性吗?(如 Sql 注入、PHP 脚本或其他任何东西)这是一种不好的做法吗?有风险吗?

顺便说一句,这对我来说很好,但我想把它放在互联网上,我不想被黑客入侵。谢谢

4

2 回答 2

3

尽管其他答案说了什么,但您的代码不会受到 SQL 注入的影响。原因是您严重滥用 SQL。

您的数据库凭据和用户的凭据应该是一回事。您的数据库用户名/密码应该是您的 PHP 脚本和数据库之间共享的秘密。通常,您会users数据库中创建一个表,并将您的用户记录存储在那里。这就是为什么您在教程中提到用户记录并比较密码的原因-数据库中存储了多个用户记录作为表中的数据。select

对于您当前的系统,您必须为系统的每个用户创建一个新的数据库用户。这将是一场管理噩梦,并带来一大堆新的安全问题。

于 2011-08-10T05:49:26.923 回答
-2

而不是 $_POST['password'] 你应该写 mysql_real_escape_string ($_POST['password']) 和同样明智的所有 post 变量以避免 sql 注入和 strip_tags($_POST['password']) 剥离所有 html 标签和php标签..

通过这个你可以加强你的安全..

于 2011-08-10T05:42:12.320 回答