| |
|
|
| | Уважаемые, проверьте, пожалуйста, скрипт! Безопасно ли так писать? И правильно ли?
<?
$login=$_POST['login'];
$pass=$_POST['pass'];
if($login=="" && $pass==""){
echo "Не введён пароль и логин";
return;
}
if($login==""){
echo "Не введён логин";
return;
}
if($pass==""){
echo "Не введёт пароль";
return;
}
require_once("sql.class.php");
$my = new class_sql;
$my->sql_connect();
$my->sql_query="select * from autt where login='".$login."'";
$my->sql_query="select * from autt where pass='".$pass."'";
$my->sql_execute();
if (@mysql_num_rows($my->sql_res)==0)
$login2='Вы не зарегестрированы!';
else
{
for ($data1=array(); $row1=mysql_fetch_assoc($my->sql_res); $data1[]=$row1);
foreach ($data1 as $element1)
{
$login2=$element1['login'];
}
}
echo("Добрый день ");echo($login2);
?>
|
| |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 20:40)
| | | Оба ответа: нет.
<?
$login=$_POST['login']; $pass=$_POST['pass'];
if(get_magic_quotes_gpc())
$pass = stripslashes($pass);
else $login = addslashes($login);
$hash = md5($pass);
require_once("sql.class.php");
$my = new class_sql;
$my->sql_connect();
$my->sql_query="select count(login) from autt where login='$login' and pass = '$hash'";
$my->sql_execute();
if (@mysql_num_rows($my->sql_res)!=1)
$login2='Вы не зарегестрированы!';
else
$login2=echo(htmlspecialchars($_POST['login']);
echo "Добрый день, $login2";
?>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(27.06.2006 в 21:20)
| | | А пояснить! Почему? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 20:40)
| | | 1) Проверяй все данные $_POST
2) Не храни пароли в открытом виде в БД | |
| |
|
|
| |
|
|
| |
для: Boss
(27.06.2006 в 23:02)
| | | 1. я не хранил пароль в открытом виде, просто так написал, для примера!
2. Можите пояснить, что вот это такое?
if(get_magic_quotes_gpc())
$pass = stripslashes($pass);
else $login = addslashes($login);
|
| |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 23:30)
| | | Выдаёт ошибку в 19 строке!
$login2=echo(htmlspecialchars($_POST['login']);
|
И ещё одно, как проверять все данные $_POST? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 23:35)
| | | 1. Наверное имелось ввиду $login2 = htmlspecialchars($_POST['login']);
2. Скобка не закрыта и сама конструкция не правильна. | |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 23:35)
| | | И ещё одно, как проверять все данные $_POST?
По очереди каждую посыламую с формы переменную.. | |
| |
|
|
| |
|
|
| |
для: Unkind™
(28.06.2006 в 00:11)
| | | Можете ещё включить magic_quotes | |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 23:30)
| | |
if(get_magic_quotes_gpc())
$pass = stripslashes($pass);
else $login = addslashes($login);
|
Это значит если пхп както пытается обезопасить ваш код: вырубить безопасность.
Если нет - то можно чтото там поделать для безопасности | |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 23:30)
| | | 1) И не надо =)
2) http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=19948 | |
| |
|
|
| |
|
|
| |
для: Boss
(28.06.2006 в 00:34)
| | | 1. Даже если я введу не верный пароль, то авторизует.
2. Если ввести любой логин и любой пароль, всё равно авторизует.
3. А куда подевалась проверка на введён или нет пароль и логин?
[поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: Diablo_
(28.06.2006 в 01:02)
| | | Так его делать то? в Чём ошибка? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(28.06.2006 в 08:54)
| | | Пардон. Наврал слегка. Сейчас исправлю.
<?
$login=$_POST['login']; $pass=$_POST['pass'];
if(get_magic_quotes_gpc())
$pass = stripslashes($pass);
else $login = addslashes($login);
$hash = md5($pass);
require_once("sql.class.php");
$my = new class_sql;
$my->sql_connect();
$my->sql_query="select count(login) from autt where login='$login' and pass = '$hash'";
$my->sql_execute();
if (@mysql_result($my->sql_res,0)!=1)
$login2='Вы не зарегестрированы!';
else
$login2=echo(htmlspecialchars($_POST['login']));
echo "Добрый день, $login2";
?>
|
| |
| |
|
|
| |
|
|
| |
для: Diablo_
(28.06.2006 в 01:02)
| | | >3. А куда подевалась проверка на введён или нет пароль и
>логин?
а зачем она нужна? | |
| |
|
|
| |
|
|
| |
для: Diablo_
(27.06.2006 в 23:30)
| | | >1. я не хранил пароль в открытом виде, просто так написал,
>для примера!
>2. Можите пояснить, что вот это такое?
>>if(get_magic_quotes_gpc())
> $pass = stripslashes($pass);
>else $login = addslashes($login);
Строка логина преобразуется в литеральную константу SQL, для сравнения с полем из таблицы в БД. Путем экранирования спецсимволов. Если она еще не преобразована механизмом магических кавычек.
Если этого не сделать, в скрипте окажется дыра SQL-инъекции, не говоря уже о том, что логины содержащие некотрые символы, не будут нормально обрабатываться.
Строка пароля, наоборот, должна быть чистой - по ней вычисляется хеш. И поэтому, если
механизм магических кавычек успел её "подправить", её нужно вернуть к исходному виду.
Иначе хеш не сойдется и пароль не будет опознан. | |
| |
|
|
| |
|
|
| |
для: Trianon
(28.06.2006 в 10:17)
| | | Тоесть вы хотите сказать что когда пользователь проходит регистрацию, хостер нагло отключаеть magic_quotes
но вот когда он авторизируется.. На зло включает.. | |
| |
|
|
| |
|
|
| |
для: valenok
(28.06.2006 в 10:25)
| | | Мне все говорили, что проверку на введенияч пароля, нужно делать обязательно! | |
| |
|
|
| |
|
|
| |
для: Diablo_
(28.06.2006 в 11:29)
| | | если пароль хешируется то проверка бессмысленная. | |
| |
|
|
| |
|
|
| |
для: valenok
(28.06.2006 в 10:25)
| | | >Тоесть вы хотите сказать что когда пользователь проходит
>регистрацию, хостер нагло отключаеть magic_quotes
>но вот когда он авторизируется.. На зло включает..
Откуда такой вывод? | |
| |
|
|
| |
|
|
| |
для: Trianon
(28.06.2006 в 12:36)
| | | Не. Я решил что сказал ерунду какуюто.
Забыл что во второй раз при сверке пароль в базу не уходит | |
| |
|
|
| |
|
|
| |
для: valenok
(28.06.2006 в 12:38)
| | | Извините, что вновь поднимаю эту тему, но код не срабатывает! Постоянно пишит, что не зарегин.!
<?
$login=$_POST['login']; $pass=$_POST['pass'];
if(get_magic_quotes_gpc())
$pass = stripslashes($pass);
else $login = addslashes($login);
$hash = md5($pass);
require_once("sql.class.php");
$my = new class_sql;
$my->sql_connect();
$my->sql_query="select * from autt where login='$login' and pass = '$hash'";
$my->sql_execute();
if (@mysql_result($my->sql_res,0)!=1)
$login2='Вы не зарегестрированы!';
else
$login2=htmlspecialchars($_POST['login']);
echo "Добрый день, $login2";
?>
|
| |
| |
|
|
| |
|
|
| |
для: Diablo_
(28.06.2006 в 20:41)
| | |
Если Вы просите строки пользователей, то проверять надо число строк в запросе.
Если Вы просите число таких строк, то проверять надо сам результат.
<?
$my->sql_query="select count(login) from autt where login='$login' and pass = '$hash'";
$my->sql_execute();
if (@mysql_result($my->sql_res,0) != 1)
$login2='Вы не зарегестрированы!'
else
$login2=htmlspecialchars($_POST['login']);
?>
|
| |
| |
|
|