Я делаю страницу входа в PHP, принимаю опубликованные переменные и вставляю параметры mysql_connect. Это плохая практика? - PullRequest
1 голос
/ 10 августа 2011

прежде всего, спасибо за ваше время. Как говорит субъект ... я делаю страницу входа, но каждый поиск отправляет мне один и тот же код:

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 Injection, PHP-скрипт или что-то еще) Это плохая практика? есть ли риск?

Кстати, это прекрасно работает для меня, но я хочу выложить его в интернет, и я не хочу, чтобы меня взломали. Спасибо

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Ваш код в его нынешнем виде не уязвим для внедрения SQL, несмотря на то, что говорят другие ответы.Причина в том, что вы серьезно злоупотребляете SQL.

Ваши учетные данные базы данных и учетные данные вашего пользователя должны , а не быть одним и тем же.Имя пользователя и пароль вашей базы данных должны быть секретными для вашего PHP-скрипта и вашей базы данных.Обычно вы создаете users таблицу в базе данных и сохраняете там свои пользовательские записи.Вот почему в уроках вы упоминаете select запись пользователя и сравниваете пароль - в базе данных хранится несколько записей пользователя в виде данных в таблице.

В вашей текущей системе вам придется создатьновый пользователь базы данных для каждого пользователя вашей системы.Это будет административный кошмар и вызовет массу проблем с безопасностью.

0 голосов
/ 10 августа 2011

вместо $ _POST ['password'] вы должны написать mysql_real_escape_string ($ _POST ['password']) и, как и для всех пост-переменных, избегать SQL-инъекций и strip_tags ($ _ POST ['password']) для удаленияhtml тэги и php тэги ..

этим вы можете повысить свою безопасность ..

...