1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

[WS] Правила безопасности PHP и *SQL

Тема в разделе "Безопасность", создана пользователем AngryBSOD, 31 май 2015.

  1. TopicStarter Overlay
    AngryBSOD

    AngryBSOD

    Регистрация:
    6 мар 2015
    Сообщения:
    165
    Симпатии:
    140
    Всем привет, меня зовут AngryBSOD и я хочу поделиться с вами опытом в сфере безопасности и кодинга PHP скриптов
    В данной статье мы рассмотрим 3 пункта:
    1. Безопасность базы данных.
    2. Безопасность вывода данных.
    3. Безопасность страниц в общем.
    И так 1 пункт:
    Безопасность базы данных во многом зависит от программиста
    Есть 4 простых правила:
    1. Придумывать сложный пароль и имя БД (Базы Данных)
    2. Не давать ни кому доступ к базе данных
    3. Защищаться от Sql-Inj
    4. Оптимизировать запросы
    5. Подключать чужие скрипты к другим БД и с другим пользователем БД
    Сейчас мы рассмотрим 3 и 4 пункты (Думаю с 1, 2, 5 пунктами все понятно)
    ____________________________________________________________________________________
    Пункт 3:
    Для защиты от Sql-Inj определим, какую БД мы используем
    Если MySql:
    То фильтруем запросы при помощи функции Please login or register to view links
    Например:
    PHP:
    mysql_query("Select * From `users` Where `username`= '" mysql_real_escape_string($_GET['username']) . "'") or die(mysql_error()); //Die(Mysql_Error()) - выведет, если есть ошибку при запросе Sql
    Если SqLite:
    То фильтруем запросы при помощи функции Please login or register to view links
    Например:
    PHP:
    sqlite_query("Select * From `users` Where `username`= '" sqlite_escape_string($_GET['username']) . "'") or die(sqlite_error()); //Die(Sqlite_Error()) - выведет, если есть ошибку при запросе Sql
    ____________________________________________________________________________________
    Пункт 4:
    Для оптимизации запросов, приведу пример
    К примеру нам нужен UserName из Users
    У нас есть не правильный запрос
    Код:
    Select * From `users` Where `id`=0
    А теперь покажу правильный:
    Код:
    Select `username` From `users` Where `id`=0
    Вот и все, на этом закончились правила безопасности БД
    И так перейдем ко 2 пункту:
    При выводе каких либо не отфильтрованных данных, мы подвергаем пользователя к XSS (Позволяет встроить свой HTML код в страницу)
    Для фильтрации строки мы будем использовать: Please login or register to view links
    Для защиты от этого приведу 2 примера:
    1) Уязвимый код:
    PHP:
    echo $_GET['username'];
    2) Нормальный защищенный код:
    PHP:
    echo htmlspecialchars($_GET['username']);
    Как наверное многие уже поняли htmlspecialchars преобразует спец символы в их html-определения:
    • '&' (амперсанд) преобразуется в '&'
    • '"' (двойная кавычка) преобразуется в '"' в режиме ENT_NOQUOTES is not set.
    • "'" (одиночная кавычка) преобразуется в ''' (или ') только в режиме ENT_QUOTES.
    • '<' (знак "меньше чем") преобразуется в '&lt;'
    • '>' (знак "больше чем") преобразуется в '&gt;'
    И теперь перейдем к 3 пункту:
    Теперь поговорим о таком типе уязвимостей, как PHP-Inj
    Используется она в корыстных целях, для include`a чужих скриптов в ваш скрипт
    Что она из себя представляет?
    Она представляет из себя типичную ошибку новичков
    Обычно код выглядит по типу:
    PHP:
    include($_GET['page']);
    Как же сделать много страничность, при этом под каждую страницу скрипт?
    Все делается очень просто
    Для этого делается IF или Switch
    Я приведу пример с IF:
    PHP:
    if ($_GET['page'] == "contact") include("./pages/contact.php");
    elseif (
    $_GET['page'] == "about") include("./pages/about.php");
    else include(
    "./pages/main_page.php");
    Тем самым, мы создаем структуру файлов и их привязанных значений, путем метода "Если"


    ____________________________________________________________________________________
    Это только основы, если вы идете на профессионального программиста, вам придется углубиться в технику безопасности, как можно больше
     
    • Like Like x 8
    Метки:
  2. carartem02

    carartem02

    Регистрация:
    6 фев 2013
    Сообщения:
    280
    Симпатии:
    108
    Похожая тема была на бхф от другого человека
     
  3. Grek

    Grek Команда форума

    Регистрация:
    14 ноя 2012
    Сообщения:
    1.460
    Симпатии:
    1.444
    от него и была. :D
     
  4. carartem02

    carartem02

    Регистрация:
    6 фев 2013
    Сообщения:
    280
    Симпатии:
    108
    Не, год назад не от него была...
     
  5. TopicStarter Overlay
    AngryBSOD

    AngryBSOD

    Регистрация:
    6 мар 2015
    Сообщения:
    165
    Симпатии:
    140
    От кого?)
     
  6. carartem02

    carartem02

    Регистрация:
    6 фев 2013
    Сообщения:
    280
    Симпатии:
    108
    Ник "djniktih", найти его темы на бхф не могу тк он забанен
    ps нашел его тему, но она простая, вроде была крупнее - Please login or register to view links (не реклама)
     

Поделиться этой страницей

Загрузка...