|
|
|
| Скрипт авторизации через сравнение логина и пароля из базы.
<?php
//начинаю сессию
session_start();
//избавляюсь от тегов (не уверен нужно ли здесь это, потому как не вижу возможности через тэги в этих полях сделать что-то плохое)
$login = htmlspecialchars($_POST['login']);
$password = htmlspecialchars($_POST['password']);
//достаю пароль из базы данных
mysql_connect('localhost', 'root', 'password') or die ("No connection");
mysql_select_db("database") or die ("No base");
$query = "SELECT password FROM users WHERE login='$login'";
$result = mysql_query($query);
$rightpassword = mysql_result($result,0,"password");
if($_POST['submit'])
//сравниваю пароли
{
if($password=$rightpassword)
{
$logged_user = $login;
$_SESSION['logged_user']='logged_user';
header("Location: SECRET_PLACE.php");
}
elseif($password!=$result)
{
header("Location: ACCESS_DENIED_MESSAGE.php");
}
exit;
}
?>
|
| |
|
|
|
|
|
|
|
для: amitiresome
(12.06.2005 в 05:14)
| | Можно считать, что скрипт взломан с помощью SQL-инъекции http://www.softtime.ru/info/articlephp.php?id_article=35. Для того, что защитить его от этого, требуется прогнать $login через функцию mysql_escape_string()
<?php
if (!get_magic_quotes_gpc())
{
$login = mysql_escape_string($login);
$password = mysql_escape_string($password);
}
?>
|
| |
|
|
|
|
|
|
|
для: amitiresome
(12.06.2005 в 05:14)
| | Нашел 2 ляпа.
1)
if($password=$rightpassword)
|
Тут идет присваивание, а не сравнение. И почти всегда срабатывает.
2)
Не проверяется информация от базы данных. Если передать не существующего user’a и указать пустой пароль (или скажем "0") то мы попадем в SECRET_PLACE, так как null == "0" | |
|
|
|
|
|
|
|
для: Artem S.
(12.06.2005 в 12:47)
| | не подскажите как исправить? буду признателен | |
|
|
|
|
автор: Ащьф (13.06.2005 в 17:03) |
|
|
для: amitiresome
(13.06.2005 в 16:57)
| | По моему скромному опыту следует просто проверить поля на наличие в них текста... (хотя не уверен - слишком мало опыта...)ТИпа:
if (empty($_POST['Login']) || empty($_POST['pass']))
{
//Выводишь поле для ввода, иначе кидаешь куда надо
}
|
| |
|
|
|