[CM]Jaxson |
Дата: Пятница, 12.10.2012, 22:05 | Сообщение # 1
|
٩(̾●̮̮̃̾•̃̾)۶
Сообщений: 801
Статус: Offline
|
очу рассказать Вам о лекарстве от всех бед, которое недавно я начал применять в большинстве скриптов. Если Вы не знаете, что такое MD5 сумма, то почитайте что-нибудь про это в интернете.
Итак, функция вычисления хеша данных MD5. Работает в PHP передельно просто:
<?php echo "Это хеш MD5 для слова \"abcdefgh\" = \"",md5("abcdefgh"),"\""; ?> Выведет:
Это хеш MD5 для слова "abcdefgh" = "e8dc4081b13434b45189a720b77b6818" И в чем же смысл использования md5()? Это контроль целостности данных, которые Вы сами должным образом подготовили. Боюсь углубиться в объяснения, но попробую как-то попроще. Вот для примера простейший пример. Вы делаете список ссылок на какие-то страницы, таким кодом:
<?php for ($i=0; $i < 10; $i++) { echo "<br><a href=page_content.php?page_id=",$i, ">Содержимое страницы ",$i,"</a>"; }; ?> У Вас появляется набор ссылок вида page_content.php?page_id=N, где N - идентификатор страницы. Отлично. По этому идентификатору Вы запрашиваете в базе данных содержимое и выдаете пользователю. Но, теперь напомню о принципе "недоверяй пользователю", по которому нам нужно идентификатор page_id провести через ряд тестов, которые нам сказали бы о том, что идентификатор верный. Ведь запрос может быть создан хакером, который пытается получить доступ к какой-нибудь другой странице, возможно содержащую скрытую информацию. Теперь приведу пример кода, защищенный от ненужных посягательств. Вывод ссылок делаем так:
<?php $our_secret = "наш секрет";
for ($i=0; $i < 10; $i++) { echo "<br><a href=page_content.php?page_id=",$i, "&md5=",md5("page_id=".$i."+".$our_secret),">Содержимое страницы ",$i,"</a>"; }; ?> Теперь сылки выглядят так:
page_content.php?page_id=0&md5=ad144b035d6b920aa88ddaaa07ba2387 page_content.php?page_id=1&md5=3eca41b4bb6f62ddfa02c9661d1abb29 page_content.php?page_id=2&md5=e523de7061e2b3c1107078d4621793c7 page_content.php?page_id=3&md5=d173b6361b2474677836d97d9afc8898 page_content.php?page_id=4&md5=58a83827d7d08b646f87132e4f76147c ... А код внутри page_content.php для проверки такой:
<?php $our_secret = "наш секрет";
if (isset($_REQUEST["page_id"])) { $page_id = (integer) $_REQUEST["page_id"]; } else $page_id = 0;
if (isset($_REQUEST["md5"])) { $md5 = $_REQUEST["md5"]; } else $md5 = "";
if (md5("page_id=".$page_id."+".$our_secret) != $md5) { echo "Ошибка целостности данных !"; exit; };
echo "OK"; ?> До этого я не придумывал возможный код для страницы page_content.php, но скорее всего он бы содежал какие-то дополнительные сравнения и возможно даже запросы к базе данных. Это сильно замедляет и усложняет проверку переданных данных. А проверка целостности данных с помощью md5() свела всю процедуру проверки к одному if. Очень упрощает жизнь и разработку.
Этот же подход Вы можете использовать в сложных формах, которые Вы создаете с помощью программы для защиты скрытых полей содержащих идентификаторы или какие-то сложные для проверки данные, например IP и MAC адреса, какие-то закодированные пути, деревья и т.д.
Еще один положительный момент проверки идентификаторов таким методом, это то, что никто не сможет изменив идентификатор заполучить доступ к другим данным. Таким образом можно защищать сайт от автоматизированной закачки с помощью простого перебора идентификаторов. Это особенно актуально, для ресурсов содержащих коллекции изображений, текстов и других данных.
[ Skype ] [ Профиль ] [ Mods Pack ] [ VK ] [ Геймеры ] Помогаю новичкам, по всем вопросом комне в Skype/VK. VK ВЗЛОМАН, НЕ РАБОТАЙТЕ СОМНОЙ. МНЕ ВСЁ ВЗЛОМАЛИ СКАЙП И ВК. СКАЙП ВОССТОНОВИЛ.
|
|
|
|