Перше правило: ніколи не довіряйте своїм користувачам
Дане правило звучало зі сторінок мого сайту вже не раз, але воно тим не менш залишається найголовнішим і буде сказано ще і ще! Ви ніколи не повинні довіряти даним, які посилають ваші користувачі. Залишаючи осторонь, що проломи в безпеці ваших додатків можуть скористатися зловмисники, проблеми можуть також виникати через ненавмисного поведінки користувачів.
Отже, головне правило будь-якого веб-розробника: Ніколи не довіряти своїм користувачам.
Глобальні змінні
Цього можна уникнути, відключивши цю опцію. На щастя, на багатьох хостингах вона відключена за замовчуванням. Однак якщо вам все ж необхідно використовувати глобальні змінні, вам слід заздалегідь оголошувати такі важливі змінні:
Повідомлення про помилки
Повідомлення про помилки корисні при налагодженні веб-додатків. Розробники мають потребу в них, щоб виправити помилки, а хакери можуть використовувати їх для отримання різної інформації, такої як структура програми, версії сервера баз даних. Тому, після налагодження своїх додатків і запуску сайту необхідно відключити повідомлення про помилки. У .htaccess або php.ini слід виставити "error_reporting 0".
SQL-ін'єкції
Однією з найсильніших сторін мови PHP є легке і швидке взаємодії з базами даних, в першу чергу з MySQL. Зараз більшість сайтів побудовано в зв'язці PHP + MySQL.
Однак, як і слід було очікувати, це спричинило за собою потенційні проблеми безпеки веб додатків. Найбільш поширеними уразливими є SQL-ін'єкції - несанкціоноване виконання SQL-запитів до бази даних.
Детально про SQL ін'єкції і захисту від неї я написав в статті Захист від SQL-ін'єкцій.
Маніпуляції з файлами
Налаштування за замовчуванням
передбачуваність
Нарешті, переконайтеся, що ваші повідомлення про помилки входу не несуть додаткової інформації зломщикові. Наприклад, якщо у вас виводитися помилка "Невідомий користувач", то зломщик легко здогадається, що підібрав потрібний логін, коли не побачить цієї помилки.