[PHP] Урок: MD5 Панацея От Всех Болезней - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir  
[PHP] Урок: MD5 Панацея От Всех Болезней
[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 ВЗЛОМАН, НЕ РАБОТАЙТЕ СОМНОЙ. МНЕ ВСЁ ВЗЛОМАЛИ СКАЙП И ВК. СКАЙП ВОССТОНОВИЛ.
  • Страница 1 из 1
  • 1
Поиск: