SITE LOGO
Меню сайта
Категории каталога
Кодинг новичкам [11]
Кодинг в интернете [1]
Локальный кодинг [0]
Прочее [0]
Наш опрос
Что нужно добавить на сайт?

[ Результаты · Архив опросов ]

Всего ответов: 71
Главная » Файлы » Програмирование » Кодинг новичкам

Безопасное программирование на PHP
[ ] 2006-11-06, 10:17 PM
Это моя вторая статья, так что судить строго, всё еще не стоит.
Повторюсь, если вы щитаете себя продвинутым ПХП кодером, то читать вам сдесь скорее всего нечего

Итак, начнём с самых распространенных ошибок при кодинге на ПХП
1. Самый распостранненый до сих пор БАГ
В исходниках он выглядит так -
include('$file');
Суть этой ошибки в том, что это уже сам по себе локальный инклуд, то есть при желании, мы можем подставить в переменную $file любое значение и получить текст файла, при этом эта уязвимость опасна как сама по себе, так и её последствия... С помощью этого БАГА можно получить доступ в админку, прочитав файл .htaccess в котором хранятся логины и пароли, которые без проблем расшифровываются Джоником... Во вторых через эту багу можно прочитать файл etc/passwd в котором хранятся пользователи и пароли для доступа к системе, если открыт доступ по ССШ то эта уязвимость становится еще более опасной ....

Методы избежания...
Во первых можно сделать так, как делаю я сам... То есть перед инклудом, мы пишем не include($file), а заносим файл в базу данных sql и берём из неё по идентификатору. То есть исходник будет выглядеть так -
$link=mysql_query("Select `name` from `include` where id='".$id."');
include($link["name"]);
Это способ безопасен в связи с тем, что на переменную инклуда пользователь повлиять не может.
Структура бд при этом может выглядеть так ---
_________________
| id | name |
|_____|___________|

Также, большинство кодеров, при програмировании полагаются на опытность Админов, которые будут устанавливать их продукт, с этим я столкнулся, когда просматривал исходники интернет казино, при чем программер, утверждал, что вводимые поля фильтруються автоматом... Тоесть не ленитесь, в тех скриптах, где используются формы прописать включение magicquotes...

2. "Пустые переменные"...
Ситуация следующая, есть переменная значение которой используются только в скрипте, и за пределы скрипта не выходит...
Ошибка следующая - действия с этой переменной производятся, без проверки этой переменной... Из-за этой ошибки, если я не ошибаюсь была найдена БАГА в MINIBB. Тоесть, если переменная используется только в скрипте, не забывайте её обнулить перед использованием!!!

3. Запросы SQL ...
Третья по распространености ошибка. Когда кодер составляет sql запрос
mysql_query("Select * from `table` where id=".$id.");
Проблема в том что в такой ситуации, можно "выпрыгнуть" за пределы запроса, то есть ввести в переменную id данные вроде 1+union+select+...
То есть конечный запрос должен выглядеть так ---
mysql_query("Select * from `table` where id='".$id."');
То есть переменную надо ограничивать двойной кавычкой, чтобы за пределы запроса нельзя было выпрыгнуть... Далее обязательное требование, если данные передаються из формы, то либо в ручную фильтровать переменную на спец символы, либо включить MAGICQUOTES...


#Writed by G1UK или glukreal
#CFTeam

 

Категория: Кодинг новичкам | Добавил: bshack
Просмотров: 1372 | Загрузок: 0 | Комментарии: 1 | Рейтинг: 0.0/0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024Сайт управляется системой uCoz