-Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в community_coding

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.12.2004
Записей:
Комментариев:
Написано: 536


Безопасное программирование

+ в цитатник

Cообщение скрыто для удобства комментирования.
Прочитать сообщение


непобедимый   обратиться по имени Среда, 26 Января 2005 г. 18:35 (ссылка)
Статья любопытная. В частности я в упор не понял почему среди четырех способов проверки "авторизован ли пользователь" не предложили самого стнадартного - пользования сессией PHP? Зато подробно описали способ, которые фактически этот уже готовый механизм сессии подменяет :)
Еще постебаюсь :) Проверка реферера - это конечно иногда помогает, но как защита от хакеров? Ха-ха, это от каких хакеров такое поможет :))
И в регекспе проверки мыла у них вроде ошибка логическая - в мыле может быть знак "-".
Ну про хтмл-инжекшин я вообще молчу - товарищ поимел айпишники юзеров в чате - очень круто :)) А QUERY_STRING для своего сервера - он наверное миллионы на этой инфе заработал
Ответить С цитатой В цитатник
Infant_terrible   обратиться по имени Четверг, 27 Января 2005 г. 07:52 (ссылка)
это уже, наверное, четвертая перепечатка, которую я втречаю в инете)
Ответить С цитатой В цитатник
s-3-m   обратиться по имени Суббота, 29 Января 2005 г. 03:42 (ссылка)
Исходное сообщение Infant_terrible
это уже, наверное, четвертая перепечатка, которую я втречаю в инете)

Точняк =)
Ответить С цитатой В цитатник
Scader   обратиться по имени Среда, 02 Марта 2005 г. 02:26 (ссылка)
маловато в статье реальной инфы на эту тему...все что приводиться, сущая ерунда..
sql_statement="select password from peoples
where name='$PHP_AUTH_USER'";
$result = mysql($dbname, $sql_statement);
$rpassword = mysql_result($result,0,'password');
$sql_statement = "select password('$PHP_AUTH_PW')";
$result = mysql($dbname, $sql_statement);
$password = mysql_result($result,0);
if ($password != $rpassword) {
Header("HTTP/1.0 401 Auth Required");
Header("WWW-authenticate: basic realm="My Realm"");
exit;
}

Упомянутая ошибка, между прочим, очень распространена среди начинающих и невнимательных программистов. Когда-то я сам поймался на эту удочку - по счастью, особого вреда это не принесло, не считая оставленных хакером в новостной ленте нескольких нецензурных фраз.

Итак, раскрываю секрет: допустим, хакер вводит заведомо несуществующее имя пользователя и пустой пароль. При этом в результате выборки из базы переменная $rpassword принимает пустое значение. А алгоритм шифрования паролей при помощи функции СУБД MySQL Password(), так же, впрочем, как и стандартный алгоритм Unix, при попытке шифрования пустого пароля возвращает пустое значение. В итоге - $password == $rpassword, условие выполняется и взломщик получает доступ к защищенной части приложения. Лечится это либо запрещением пустых паролей, либо, на мой взгляд, более правильный путь - вставкой следующего фрагмента кода:

if (mysql_numrows($result) != 1) {
Header("HTTP/1.0 401 Auth Required");
Header("WWW-authenticate: basic realm="My Realm"");
exit;
}


тут еще и SQL Injection есть) хы..
Ответить С цитатой В цитатник
Комментировать К дневнику Страницы: [1] [Новые]
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку