|
|
|
| Посмотрите пожалуйста код авторизации и все ли здесь правильно?
Спасибо!
login_form- html форма авторизации
<?php
session_start();
require_once("db_fns.php");
$get_login=$HTTP_POST_VARS["login"];
$get_passwd=$HTTP_POST_VARS["password"];
if(!isset($get_login)||!isset($get_passwd))
{
login_form("Sorry enter your login and password");
exit;
}
if(isset($get_login)&& isset($get_passwd)){
if(!db_connect()){
login_form("Извините возникли технические неполадки <br>попробуйте зайти позже");
exit;
}
else{
$query="select * from users where login='$get_login' and passwd=password('$get_passwd')";
$results=mysql_query($query);
if (mysql_numrows($results)>0){
list($id_user, $first_name, $second_name)=mysql_fetch_row($results);
$_SESSION['valid_user']=$first_name;
dispaly_index_page($header_1,$main_menu,$footer);
}
else {
login_form("Извините но пользователь с таким именем и паролем не существует");
}
}
}
else login_form("Could not log you in");
?>
|
| |
|
|
|
|
|
|
|
для: half.shade
(28.03.2007 в 01:43)
| | 1. когда вы присваиваете переменным значения из ПОСТ, то лучше их проверять не на isset, а на empty...
2. почему бы вам не воспользоваться $_POST
3. не надо делать два условия, одно из которых проверяет, если какое нибудь пустое, а второе, если оба заполнены
ставьте просто else
4. if плохое соединение else делаем запрос
можно без else - если выполнится exit, то сценарий дальше и не пойдет
4. у вас там опечатка [dispaly] | |
|
|
|
|
|
|
|
для: bronenos
(28.03.2007 в 05:13)
| | К этому ожно добавить еще такие пункты.
6. deprecated mysql_numrows
7. запрос SELECT * вместо SELECT COUNT(*)
8. Отсутствие проверки magic quotes и экранирования спецсимволов, и как следствие -
9. Отсутствие хеширования паролей
возможная SQL-инъекция.
7,8,9 вкупе с выборкой по mysql_fetch_row при открытой возможности инъекции, вероятно, допускает атаку, при которой можно не только авторизоваться кем угодно, но и вытащить наружу из базы пароль любого пользователя.
Кака, короче.... | |
|
|
|
|
|
|
|
для: half.shade
(28.03.2007 в 01:43)
| | Еще одна опечатка
mysql_numrows($results)>0){
|
а надо
mysql_num_rows($results)>0){
|
| |
|
|
|
|
|
|
|
для: zerocool
(28.03.2007 в 08:47)
| | нет, numrows второе название этой же функции | |
|
|
|
|
|
|
|
для: bronenos
(28.03.2007 в 08:52)
| | устаревшее и нерекомендованное к применению. | |
|
|
|