Написание безопасных web-приложений

Статус
В этой теме нельзя размещать новые ответы.

PHP_Master

Хранитель порядка
Регистрация
3 Фев 2008
Сообщения
2.640
Реакции
589
Ну написал ты статью для новичков, с этим никто и не спорит, да и сам ты согласен.
Сказать тебе "молодец"? Говорю - молодец.

На нормальный уровень статья не тянет по причине того, что все примеры, которые ты привёл как объекты атак - примитивны до ужаса, нормальные кодеры так не пишут (а не нормальным сколько не объясняй - не помагает). Я уж скромно промолчу, что например нет упоминаний о плэйсхолдерах как средстве ограничения sql-injection, а magiс_quotes вообще убираются из языка по причине своей неэффективности.

Что ты ещё пытаешься доказать, кроме того что неадекватен и невосприимчев к критике?

ЗЫ Аксиома, на то и аксиома, что принята как верное утверждение и не требует доказательств. А то что ты привёл в качестве примера, называется софистикой и разваливается на 3 строке.
 

Igor123

Постоялец
Регистрация
14 Июн 2008
Сообщения
115
Реакции
13
Язык: HTML + PHP
PHP:
<!—- Заголовок -->
<?php
include ($page);
?>
<!—- Завершающая часть -->

Соответственно, работа идет со ссылками типа Для просмотра ссылки Войди или Зарегистрируйся. Самое безобидное, что можно сделать – это просмотреть информацию о PHP (и не только:(

Листинг
Язык: PHP
PHP:
<?php
phpinfo();
?>

Создав такой файл у себя на сервере, просто включаем его в запрос вместо about.php – и видим всю информацию на экране. Таким образом, мы внедрили произвольный код в скрипт на сервере и получили необходимую информацию. Но это только цветочки, ведь можно при помощи PHP сделать все, что нашей душе угодно.
..............
@autor: Black#FFFFFF

так кто там автор ?
пусть тебе будет стыдно, двоечник :D

Для просмотра ссылки Войди или Зарегистрируйся

p.s. и запомни, не прогуливай математику, это тебе не "хацкера" под партой читать ;)
 

Black#FFFFFF

Постоялец
Регистрация
19 Июл 2007
Сообщения
226
Реакции
158
Еще раз повторю. Примеры инъекций взяты с хакер ру - в более сокращенном виде.
Рассмотрим три основные из них: Сode injection (php including), sql injection, xss scripting. (Краткая информация с описанием инъекций размещенная и дополненная здесь, взята со страниц журнала Для просмотра ссылки Войди или Зарегистрируйся Внутримышечно и внутривенно, Спецвыпуск: Хакер, номер #075, стр. 030, Обзор технологий взлома веб-ресурсов).
Все остальное писал я. Что непонятного?
Я уже устал. Такое ощущение что вся тема и работа сделана была напрасно. Отбивает вообще желание писать статьи садиться.

Я не двоечник. Двоечник ты. А вся математика и логика построена на больших ограничениях и допусках. Один из допусков: на 0 делить нельзя. Одно из противоречий: теория комплексных чисел.

Ну написал ты статью для новичков, с этим никто и не спорит, да и сам ты согласен.
Сказать тебе "молодец"? Говорю - молодец.

На нормальный уровень статья не тянет по причине того, что все примеры, которые ты привёл как объекты атак - примитивны до ужаса, нормальные кодеры так не пишут (а не нормальным сколько не объясняй - не помагает). Я уж скромно промолчу, что например нет упоминаний о плэйсхолдерах как средстве ограничения sql-injection, а magiс_quotes вообще убираются из языка по причине своей неэффективности.
О том что magic_quotes убирается из языка в версии 6, сказал.
О плейсхолдерах не упоминул, my bad, исправлюсь.
Сколько сообщений нужно было написать, чтобы "дойти" до конструктивной критики?
Вспомнилось еще одно упоминание.
Где то читал. Преподаватель спрашивает. "Сколько ставить?". "Пять хочу". "Да не вопрос" - берет зачетку, ставит пять. "А почему отценка и нахаляву?". "Все просто. Чем больше халявы, тем глупее вы выйдете из института как специалист. Тем больше я буду в цене".
Может действительно не нужно обо всем этом рассказывать?
Пусть кто во что горазд тот то и пишет.
 

PHP_Master

Хранитель порядка
Регистрация
3 Фев 2008
Сообщения
2.640
Реакции
589
Сколько сообщений нужно было написать, чтобы "дойти" до конструктивной критики?
Дык, ты сам затеял ненужные бодалки.
Может действительно не нужно обо всем этом рассказывать?
Что делать или не делать каждый решает сам.
 

venetu

Мой дом здесь!
Регистрация
28 Мар 2007
Сообщения
745
Реакции
264
Что вы на парня накинулись? Человек потратил время, сделал доброе дело, разобрал по полочкам. То, что реальные случаи взлома как правило не такие тривиальные, как в статье - ну так для того они и примеры, чтобы на них упрощенно в общих чертах показывать суть.

php_master, от тебя не ожидал.
 

PHP_Master

Хранитель порядка
Регистрация
3 Фев 2008
Сообщения
2.640
Реакции
589
Да кто же накинулся? Что я неправильно сказал в посте №2?
Всё последующее спровоцировано самим ТС. Если бы он не удалил половину своих постов и не правил уже опубликованные, это было бы понятно.
 

Black#FFFFFF

Постоялец
Регистрация
19 Июл 2007
Сообщения
226
Реакции
158
Что вы на парня накинулись? Человек потратил время, сделал доброе дело, разобрал по полочкам. То, что реальные случаи взлома как правило не такие тривиальные, как в статье - ну так для того они и примеры, чтобы на них упрощенно в общих чертах показывать суть.

php_master, от тебя не ожидал.

Ладно, не все так тривиально. Мне тоже нужно быть спокойнее. Относиться к ситуации. Именно на основании этого я и удалил половину своих постов - как флуд. Но все равно спасибо за поддержку!

php_master:
сказал пару слов о плейсхолдерах. Если что не так, подправь. То что там есть по placeholder не мое, Гутманса и из описания по материалам php.net - internet. DB :: Pear с плейсхолдерами не использую. Mysqli в работе и где рабочие примеры поискать надо. Так что если есть что то вменяемое для начинающих - закинь примерчик. Добавлю.
 

venetu

Мой дом здесь!
Регистрация
28 Мар 2007
Сообщения
745
Реакции
264
Ладно, не все так тривиально.

Сам не раз видел, когда офигенно правильно написанный код, с фильтрацией везде где только можно, с запретом прямых вызовов через if !defined, с mysql prepared statements и кучей тому подобного пропускает банально .php файл через форму заливки изображений. Вот так вот, совершенно втупую. Залил 1.php и через site.com/uploads/1.php тут же выполнил. И вся защита идет лесом.

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

PHP_Master

Хранитель порядка
Регистрация
3 Фев 2008
Сообщения
2.640
Реакции
589
Так что на самом деле даже простое перечисление всех возможных боков с кодом уже приносит пользу.
С этим никто и не спорит.
И на старуху бывает проруха - от тупняка никто не застрахован.

PHP по своей архитектуре даёт много вольностей кодеру (как по мне это минус). Из-за этого и огромного кол-ва быдлокодеров (вызваного простотой языка) и появляется огромное кол-во дырявых скриптов и последующих криков типа "PHP - дырявое ***но".

Говорить можно много, проще показать (кстати к разговору о плэйсхолдерах).
PHP:
<?php

$id = 123;

echo $sql = 'SELECT * FROM table WHERE id = ' . $id;
echo '<br />';
echo $sql = sprintf('SELECT * FROM table WHERE id = %d', $id);

echo '<br />';
echo '<br />';

$id = "' '; DELETE FROM customers";

echo $sql = 'SELECT * FROM table WHERE id = ' . $id;
echo '<br />';
echo $sql = sprintf('SELECT * FROM table WHERE id = %d', $id);

?>
Этот пример объяснит всё лучше многих слов - переменную id я вообще могу не фильтровать (при использовании sprintf).

Вроде бы просто и ничего сверхъестественного, а очень мало кто использует.


ЗЫ ТС, поделили бы ты свою статейку по направлениям и разнёс по разным топикам - и читать удобнее и обсуждалка будет "тематическая"

ЗЫЫ по поводу приведённого venetu примера - лично у меня не только производится фильтрация по расширению при аплоаде, но и в папках для аплоада отключено выполнение скриптов.
 

Black#FFFFFF

Постоялец
Регистрация
19 Июл 2007
Сообщения
226
Реакции
158
С этим никто и не спорит.
И на старуху бывает проруха - от тупняка никто не застрахован.

PHP по своей архитектуре даёт много вольностей кодеру (как по мне это минус). Из-за этого и огромного кол-ва быдлокодеров (вызваного простотой языка) и появляется огромное кол-во дырявых скриптов и последующих криков типа "PHP - дырявое ***но".

Говорить можно много, проще показать (кстати к разговору о плэйсхолдерах).
PHP:
<?php

$id = 123;

echo $sql = 'SELECT * FROM table WHERE id = ' . $id;
echo '<br />';
echo $sql = sprintf('SELECT * FROM table WHERE id = %d', $id);

echo '<br />';
echo '<br />';

$id = "' '; DELETE FROM customers";

echo $sql = 'SELECT * FROM table WHERE id = ' . $id;
echo '<br />';
echo $sql = sprintf('SELECT * FROM table WHERE id = %d', $id);

?>
Этот пример объяснит всё лучше многих слов - переменную id я вообще могу не фильтровать (при использовании sprintf).

Вроде бы просто и ничего сверхъестественного, а очень мало кто использует.


ЗЫ ТС, поделили бы ты свою статейку по направлениям и разнёс по разным топикам - и читать удобнее и обсуждалка будет "тематическая"

Добавил твой пример в фак.
надо будет покатать с утра подобный код. Все же хочу проверить что будет в этом случае с не корретными строками и данными.
Но, даже исходя из того, что у тебя Мастер, это работает в многих проектах, думаю это гораздо надежнее, чем просто конкатенция данных в строку при формировании запроса.
А по каким топикам каких разделов? БД - в БД, PHP faq - в PHP faq.
Что куда? Подскажите. Уже не соображаю.
Добавил там немного о LIKE операторе. Устал уже, так что взял не свое.
Да, возник вопрос, так как php это слабо типизируемый язык данных в нем есть операторы типизации данных. Так вот, то что привел Мастер по своему действию будет идентично?
PHP:
$sql = 'SELECT * FROM tbl WHERE '.(int)$tbl;
Или чем то отличается? ну и собственно что будет быстрее. Оператор с конкатенцией или вызов функции?
Хотя проверить все это не трудно.
Я в основном пользуюсь синтаксисом, приведенным выше. После проверки данных до формирования запроса.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху