Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Безопасность PHP
ТвойWeb » WebMaster класс » PHP/Perl » Безопасность PHP

Страниц (1): [1]
 

1. scar - 24 Июля, 2008 - 09:08:49 - перейти к сообщению
Что нужно знать для того, что бы уметь находить в PHP-коде дырки, устранять их и писать безопасные программы? Иными словами: Как сделать PHP-программу не уязвимой?
Заранее спасибо за ответ!
2. Furax - 24 Июля, 2008 - 09:42:55 - перейти к сообщению
Неуязвимых программ нет, есть труднорасколупываемые. Радость

Во-первых, надо очень хорошо фильтровать входные данные. Всегда.

Во-вторых - читать про возможные дыры и проверять их наличие у себя.

В-третьих - не лениться на стадии отладки/проверки. Можно даже хакера знакомого попросить сломать...
3. scar - 24 Июля, 2008 - 09:52:33 - перейти к сообщению
Furax пишет:
Во-первых, надо очень хорошо фильтровать входные данные. Всегда.


Если не тяжело, можешь предоставить пример?

Furax пишет:
Во-вторых - читать про возможные дыры и проверять их наличие у себя.


Где я могу узнать о возможных дырах?
4. Furax - 24 Июля, 2008 - 10:28:36 - перейти к сообщению
Пример.

В коде гостевой, сохраняющем сообщение в базу данных, написано:
CODE:
mysql_query("INSERT INTO `gbook` (`name`, `mesage`) VALUES('$_POST[name]', '$_POST['message'])");
Хакер вводит в поле 'name'
CODE:
mike', 'hello'); TRUNCATE TABLE `gbook`; INSERT INTO `gbook` (`name`, `mesage`) VALUES('XaKeP
В итоге в БД пошёл запрос, очищающий всю гостевую. Причина? Забыли слэши вставить.

Ещё пример. Написано:
CODE:
include("$_GET[topic].php");
Это подключает содержимое. Хакер передал в поле $_GET['topic'] строку "http://haker.ru/badpage". В итоге то, что доступно по адресу "http://haker.ru/badpage.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 - перейти к сообщению
Все, понял. Улыбка
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 делать не надо...
Если я правильно понял конечно...
10. Furax - 18 Декабря, 2009 - 07:40:55 - перейти к сообщению
По-моему, так.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0413]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33