1. Приветствую гостей и пользователей нашего форума! Первый раз вы у нас или же давно участвуете в жизни ресурса, хочу напомнить несколько моментов.

    1) Пользуемся поиском по форуму! Зачастую информация может находиться не по разделу!

    2) Раздел ИНФО-продуктов относительно новый, но имеем уже более 3000 высококлассных материалов (пользуемся сортировкой по прификсам).

    3) И самое важное, КАК КАЧАТЬ БЕЗ ОГРАНИЧЕНИЙ, вся информация находится по этой ссылке КУПИТЬ VIP

    4) Временная акция, получи +5 постов за вступление в нашу группу "Вконтакте" Более подробно ТУТ

    5) Веди активную жизнь на форуме и получай рубли на личный счёт!

    Скрыть объявление
  2. На нашем форуме Null-Prog действует серьёзное правило касательно размещения материалов!

    ДЛЯ РЕЛИЗЁРОВ: категорически запрещается выкладка материалов на файлообменники типа Deposit, letitbit и другие, требующие просмотров рекламы, обрезающие скорость и тд. Нарушителям, первые 2 раза предупреждения, далее БАН. Тему по этому поводу можно посмотреть ТУТ

    Скрыть объявление
  3. В тестовом режиме на нашем форуме открыт онлайн конструктор сайтов. Вы можете попробовать создать свой сайт у НАС, интуитивно понятный интерфейс, переведёт на 95%, быстрый экспорт проекта, от вас только перетаскивать элементы и вставить в них необходимый текст!

    Все вопросы ТУТ

    Скрыть объявление

  4. Скрыть объявление
  5. Уважаемые форумчане, открывается новый раздел форума, посвящённый ремонту и эксплуатации автомобилей. Просмотреть его можно ТУТ

    Так как раздел новый, информация будет пополнять каждый день. Если есть какие либо замечания по этому разделу, отписываемся в соответствующий раздел форума, либо в личку.

    Напоминаю, сообщения в разделе АВТО не учитываются, общение не ограничено.

    Скрыть объявление
  6. Объявляется набор Модераторов на различные раздел форума, свои заявки можно оставлять в ЭТОМ разделе, перед оставлением заявки рекомендуется ознакомиться с ПРАВИЛАМИ для модераторов.

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

Тема в разделе "Защита и взлом", создана пользователем Sam Jack, 11 июн 2015.

  1. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

    Регистрация:
    5 май 2015
    Сообщения:
    13.755
    Симпатии:
    4.729
    Всем привет, я хочу поделиться с вами опытом в сфере безопасности и кодинга PHP скриптов
    В данной статье мы рассмотрим 3 пункта:
    1. Безопасность базы данных.
    2. Безопасность вывода данных.
    3. Безопасность страниц в общем.
    И так 1 пункт:
    Безопасность базы данных во многом зависит от программиста
    Есть 4 простых правила:
    1. Придумывать сложный пароль и имя БД (Базы Данных)
    2. Не давать ни кому доступ к базе данных
    3. Защищаться от Sql-Inj
    4. Оптимизировать запросы
    5. Подключать чужие скрипты к другим БД и с другим пользователем БД
    Сейчас мы рассмотрим 3 и 4 пункты (Думаю с 1, 2, 5 пунктами все понятно)
    ____________________________________________________________________________________
    Пункт 3:
    Для защиты от Sql-Inj определим, какую БД мы используем
    Если MySql:
    То фильтруем запросы при помощи функции mysql_real_escape_string
    Например:
    Код:
    mysql_query("Select * From `users` Where `username`= '" . mysql_real_escape_string($_GET['username']) . "'") or die(mysql_error()); //Die(Mysql_Error()) - выведет, если есть ошибку при запросе Sql
    Если SqLite:
    То фильтруем запросы при помощи функции sqlite_escape_string
    Например:
    Код:
    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 код в страницу)
    Для фильтрации строки мы будем использовать: htmlspecialchars
    Для защиты от этого приведу 2 примера:
    1) Уязвимый код:
    Код:
    echo $_GET['username'];
    2) Нормальный защищенный код:
    Код:
    echo htmlspecialchars($_GET['username']);
    Как наверное многие уже поняли htmlspecialchars преобразует спец символы в их html-определения:
    • '&' (амперсанд) преобразуется в '&'
    • '"' (двойная кавычка) преобразуется в '"' в режиме ENT_NOQUOTES is not set.
    • "'" (одиночная кавычка) преобразуется в ''' (или ') только в режиме ENT_QUOTES.
    • '<' (знак "меньше чем") преобразуется в '&lt;'
    • '>' (знак "больше чем") преобразуется в '&gt;'
    И теперь перейдем к 3 пункту:
    Теперь поговорим о таком типе уязвимостей, как PHP-Inj
    Используется она в корыстных целях, для include`a чужих скриптов в ваш скрипт
    Что она из себя представляет?
    Она представляет из себя типичную ошибку новичков
    Обычно код выглядит по типу:
    Код:
    include($_GET['page']);
    Как же сделать много страничность, при этом под каждую страницу скрипт?
    Все делается очень просто
    Для этого делается IF или Switch
    Я приведу пример с IF:
    Код:
    if ($_GET['page'] == "contact") include("./pages/contact.php");
    elseif ($_GET['page'] == "about") include("./pages/about.php");
    else include("./pages/main_page.php");
    Тем самым, мы создаем структуру файлов и их привязанных значений, путем метода "Если"
     
    #1 Sam Jack, 11 июн 2015
    Последнее редактирование: 1 ноя 2015

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

iHax Community
Рейтинг@Mail.ru Яндекс.Метрика мониторинг сайтов
Форум программного обеспечения/
Загрузка...