The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Переполнение буфера в функции glob  из состава Glibc"
Отправлено Ordu, 27-Окт-17 01:43 
>> Ай. Ещё один диванный специалист, с доморощенным проектом нового интернета,
> Ну да. Однако ж дело говорит.

Может ты и прав, для кого то его писанина и может выглядеть умно, наверное.

> Не нравится этот диванный, есть DJB.
> Он более фундаментально высказался, но идея похожая. Поэтому у него код
> безопасный даже на си, а у раздолбаев дыры и на питоне,
> и на рубях и на пыхе, и с js.

Да-да. Знаем-знаем.

>> который знает наилучшие способы решения всех проблем.
> Он занимается тем же чем и ты, кстати :). Но его спич
> мне кажется более дельным чем твой. Знаешь почему? Больше коррелирует с
> наблюдаемой реальностью и вроде бы технически все шито-крыто.

Это вебпрограммист, который совершенно неприспособлен к системному мышлению. Если тебе это не ясно из чтения его текстов, я могу пояснить на примере.

Возьмём sql-injection. Собственно я дальше не читал, поэтому других примеров не будет. Мне одной этой глупости хватило. Тот умник говорит "я знаю как решить проблему" и начинает размахивать шашкой, забыв остановиться и подумать: в каком месте возникает проблема? В результате он начинает создавать костыли, которые могут улучшить ситуацию, которые могут усложнить проведение атак, но они не снимут проблему.

Как возникает sql-injection?
1. Клиент составляет запрос, который правильный синтаксически, но семантически, с точки зрения клиента неправильный.
2. Запрос передаётся серверу.
3. Сервер выполняет запрос.
4. Результат выполнения запроса передаётся клиенту.
5. Клиент получает результат не того класса, на который рассчитывал, но он слишком тyпoй, чтобы заметить косяк, поэтому дальшейшее поведение клиента становится совершенно идиотским.

На каких шагах здесь возникают ошибки? Может быть на шагах 2 и 4, то есть при передаче? Нет ведь, передача здесь не при чём. Может быть дело в том, что сервер неправильно понимает переданный ему запрос? Нет же, он понимает его ровно так, как он составлен. Но откуда может взяться вера в то, что изменение протокола передачи данных изменит ситуацию? И я даже скажу откуда: нет у человека системного мышления, он не в состоянии дифференцировать систему на части здравым образом, он произвольным образом сливает разные части системы в один флакон, и пытается после этого анализировать их работу. Видны попытки занимаеться самосовершенствованием, пытаясь проектировать системы, но он безнадёжен, потому что просто проектируя лучше не стать, надо реализовывать свои проекты и получать граблями по лбу. Совершённые ошибки учат, несовершённые только захламляют интернет тупыми постами.

Ошибки возникают на шагах 1 и 5. Клиент составляет запрос неправильно, не так как задумано, программист не смог изложить свои мысли внятно. И тут уже не важно бинарный протокол или текстовый, если клиент может позволить себе составлять неправильный текстовый запрос, он точно так же может позволить себе неправильно составить бинарный. Да, я соглашусь, при бинарном протоколе, вероятно, будет сложнее совершить ошибку, которую можно эксплуатировать для чего-то кроме DoS, но DoS тоже плохо, при этом нет никаких гарантий, что невозможно получить более интересных эксплуатаций.

Чтобы одолеть ошибки на шагах 1 и 5 надо выгнать поганой метлой всех вебмакак и посадить на их место квалифицированных программистов. То есть программистов, которые умеют создавать API или системы тестирования кода, которые *гарантируют* невозможность совершения ошибок опредлённого класса, например, ошибок при составлении SQL запросов. Вебмакаки не умеют составлять запросы иначе, кроме как конкатенированием строк. Я не знаю почему так происходит, то ли они тупые как пробки, то ли они считают что конкатенировать строки круто и признак ума, то ли им просто нacpaть на безопасность -- не знаю. Но все эти проблемы вполне можно решить, причём в языке со статической и достаточно развитой типизацией все ошибки типа sql-injection можно отлавливать на этапе компиляции. Но вебмакаки не компилируют. И даже динамической типизацией они пользоваться не умеют (впрочем на динамической типизации могут возникнуть существенные накладные расходы в рантайме на создание куч временных объектов и выполнение туч проверок, хотя это, как правило, решается, пускай и небесплатно с точки зрения юзабилити). Поэтому мы имеем то, что имеем. И надо быть вебмакакой на всю голову, чтобы верить, что переход на бинарный протокол интернета сможет сделать вебмакак умнее.

Может быть бинарный протокол и будет полезен, но не для решения проблемы sql-injection, потому что это чистой воды проблема качества клиентского кода. С XSS на самом деле то же самое, просто надо сесть, грамотно разбить общую систему на отдельные блоки, отследить взаимодействие между блоками, и понять где именно и каким образом возникает ошибка. Где происходит потеря или искажение информации.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру