Кодер ошибается один раз, программист постоянно. (о безопасности скриптов)

mendel
На сайте с 06.03.2008
Offline
232
6790
Программист ошибается постоянно.
Кодер - только один раз.
Когда возомнит себя программистом.

В чем главное отличие хорошего кодера от программиста? Ведь в принципе кодер должен писать читабельный и рабочий код. Иначе это уже плохой кодер. Бывает, что кодеры пишут довольно большие куски кода, так что критерий масштаба тоже не пригоден. Так в чем же разница?

По моему скромному мнению разница в сфере ответственности. По большому счету кодер не несет ответственности за проект, скрипт и т.п. Он как правило обеспечивает некоторый конкретный функционал, но не более. Правда и не менее :)

Программист же думает немного шире. Он думает о производительности, о простоте доработки и поддержки и о.... безопасности.

Пару примеров:

На довольно приличном количестве сайтов стоит форма обратной связи с капчей которая на самом деле не существует. На самом деле нам выводят одну из дюжины сохраненных картинок.

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

Опять таки про капчу - часто бывает забавная ситуация когда правильный ответ передается вместе с проверяемым. Частный случай такого варианта - передавать правильный ответ в тексте страницы для того, чтобы можно было проверять правильность капчи перед ее отправкой (имитация AJAX).

XSS. Отсутствие универсальных методов фильтрации приводит к тому, что многие ленятся делать фильтр в "неважных" формах. Например можно не фильтровать данные из формы поиска. Ведь вроде как эти данные нигде не используются дальше. Вот только если "скормить" админу ссылку, которая отправит его на страницу, где через данную уязвимость будет добавлен определенный код. Ты его не видешь, читаешь себе спокойненько статейку, на своем или даже чужом сайте, а оно уже под твоим именем в админке шарится. :)

XSRF. Обычно идет как продолжение XSS. Суть ошибки заключается в том, что при получении данных из формы скрипт проверяет только куки пользователя, но не проверяет с какой страницы он пришел. В результате правильно оформленная ссылка отправившая пользователя на форму внутри админки может в принципе делать что угодно. (Частный случай - когда проверяют только реферер, но не проверяют "маркеры безопасности".)

Многие разработчики (в том числе и программисты этим грешат) вместо шаблонизаторов используют шаблоны с включением пхп-кода. Помимо осложнения понимания такого перемешанного кода это часто бывает еще и опасно. Если есть возможность менять такие шаблоны прямо из админки, и нет дополнительных проверок и вопросов, то имея XSRF-уязвимость (см. выше) можно не только менять содержимое сайта, но и банально заливать любой код, который будет выполняться при любых действиях. Это нам дает возможность банально скопировать весь сайт, со всеми данными, с клиентской базой и т.п.

Вышеуказанные ошибки в основном совершают кодеры. Программисты редко наступают на эти грабли, хотя ошибки бывают у всех. Для примера приведу ошибки свойственные программистам.

Знаете ли вы такой шаблонизатор как SMARTY? мощный шаблонизатор входящий в состав очень большого количества движков. Один маленький нюанс - в нем есть почти все возможности php. С одной стороны это хорошо, а с другой стороны - там есть возможность напрямую получить доступ к post/get переменным. Т.о. дизайнер/верстальщик, который захочет например выводить запрос в форме поиска сделает нам шаблон содержащий XSS уязвимость. А все потому, что не должен дизайнер или верстальщик знать основ безопасности сайтов. Не его это дело.

Ну и напоследок вкусняшка: Все мы знаем такую биржу как sape. Пожалуй срок давности такой информации уже прошел... в общем пару лет назад был большой ажиотаж, на тему того, что некоторые люди могли узнать скрытые адреса площадок торгующих ссылками. Один из методов как это можно было сделать очень прост. (сразу предупрежу, что данная уязвимость устранена несколько лет назад) Черный список содержал конкретные адреса сайтов, но в поиске площадок была возможность добавить площадку в черный список не зная еще ее адреса. Т.о. после нажатия на ссылку "добавить в черный список площадку номер такой-то" в черном списке появлялся АДРЕС сайта а не его номер.

Продолжение следует.

И если кое-кто не поленится, то не только от меня :)

Шутку любишь над Фомой, так люби и над собой. (с) народ. Бесплатные списки читабельных(!) свободных доменов (http://burzhu.net/showthread.php?t=2976) (5L.com) Сайты, All inclusive. 5* (/ru/forum/962215)
[Удален]
#1

Как Вы быстро поделили всех (как же их вместе назвать?) на кодеров и программистов. Сами придумали? А то могу еще подкинуть - на заре АСУнизации были разные специалисты: постановщики, алгоритмисты, кодировщики... Это сейчас в целях экономии такое разделение упразднили. Выиграли или проиграли... Вообще к чему вся эта философия?

mendel
На сайте с 06.03.2008
Offline
232
#2

Rassmus, вообще от задачи зависит.

В некоторых проектах без постановщика, аналитика, десятка внедренцев и т.п. не обойтись..

а еще бывают инженеры по интерфейсам.

Правда справедливости ради надо упомянуть, что Дуров от такой парадигмы ушел, и не так много потерял. Соизмеримо с тем что приобрел :) Но там кодеров нет как класса.

Вообще цели было две - первое это просто хотелось напомнить коллегам о принципиальном различии в профессиях штоль... На самом деле кодер в моем понимании не несет негативной коннотации. Это просто другая работа. Есть много задач, где программист это не только дороже, но и менее эффективно.

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

Просто так получилось, что я за последнее время много разных движков перековырял, и как-то все это в голове крутится.

F
На сайте с 24.04.2009
Offline
45
#3
mendel:

Вторая цель - банально поделиться частыми ошибками в коде. Молодежи на заметку так сказать.
Просто так получилось, что я за последнее время много разных движков перековырял, и как-то все это в голове крутится.

Так лучше оформите в статью, где распишите где возникают уязвимости, и как их устранять при получении через POST и GET данных. Потому что написать что вот есть XSS каждый может.

C
На сайте с 04.02.2005
Offline
291
#4

Fearful, полностью согласен.

Алгоритмист... ммм, как много... в этом звуке... а ведь действительно. Его задача, грубо, оччччень грубо, блок схема, затем. вступали в силу другие структуры, не поверите... СБ..., сейчас, грубо, очччень грубо - тестеры... потом кодеры, но тогда и таких слоВей не было - техники.

И... опять тестеры, но... с подачи ПОСТАНОВЩИКА задач...

зы... в сторону... эх молодеЖь :)

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#5

Статья ни о чём.

Если говорить коротко: Программисты, задумывайтесь о безопасности в проектах.

Я поместил всю статью в 4 слова.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
S
На сайте с 23.05.2004
Offline
315
#6

Вообще то для таких вещей есть тестировщики, задача которых находить подобные косяки.

А когда программист и проектировщик и дизайнер интерфейса и верстальщик и саппорт - имел он эти уязвимости с большой колокольни. Пока ты будешь продумывать безопасное и в то же время функциональное редактирование темплейтов из админки - конкуренты выпустят и будут вовсю продавать продукт.

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

Это просто подпись.
Петр Елагин
На сайте с 21.03.2007
Offline
197
#7
mendel:
.....

Так и не понял топик ))))

Dreammaker
На сайте с 20.04.2006
Offline
569
#8
mendel:
Многие разработчики (в том числе и программисты этим грешат) вместо шаблонизаторов используют шаблоны с включением пхп-кода.

Это не грешение - это в большинстве своём стандарт, ибо зачастую использование шаблонизаторов просто не оправдано (особенно смешит аргумент, что это позволит облегчить изучаемость дизайнером :) ).

В большинстве современных фреймворков, которые мне попадались - View идут как чистый пхп, а уже как второстепенное - есть возможность прикрутить смарти и т.д.

mendel
На сайте с 06.03.2008
Offline
232
#9
Fearful:
Так лучше оформите в статью, где распишите где возникают уязвимости, и как их устранять при получении через POST и GET данных. Потому что написать что вот есть XSS каждый может.

Статей на тему уязвимостей много. Но читают их мало. :)

LEOnidUKG:
Статья ни о чём.
Если говорить коротко: Программисты, задумывайтесь о безопасности в проектах.
Я поместил всю статью в 4 слова.

Ну еще надо добавить "вебмастера, заказывайте кодинг у кодера, а программирование у программиста" это еще девять слов :)

Ну а если серьезно, то сокращенный вариант не для людей, а для роботов.

Совсем недавно отписал человеку (кодеру), что у него XSS. Он сказал, что это ерунда.

Еще слышал от одного разработчика, что увод его куков это мелочи.

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

С тех пор как у него через эту уязвимость слили важный сайт лежащий на том же хостинге, он уж так не думает :) В общем список можно продолжать бесконечно, смысл в том, что человек на примерах информацию усваивает лучше.

Stek:
Вообще то для таких вещей есть тестировщики, задача которых находить подобные косяки.

Должны, но почему-то большинство продуктов этого не проходят.

Stek:
с учетом того, что в админке редактируют как правило доверенные пользователи, поэтому ждать от них эксплойтов не очень логично.

Вот собственно об этом и статья :)

Доверенному пользователю достаточно побывать на сайте злоумышленника, чтобы под его правами можно было внести изменения. Нельзя проследить, чтобы "доверенный пользователь" всегда выходил из админки закончив все действия, чтобы он паралельно никуда не ходил, чтобы вообще в принципе не ходил по стремным сайтам. (а сайт может быть и вполне приличным, но взломанным). Часто проще просто не допускать уязвимостей :)

AlienZzzz:
Так и не понял топик ))))

Так и не понял комментарий :)

Dreammaker:
Это не грешение - это в большинстве своём стандарт, ибо зачастую использование шаблонизаторов просто не оправдано

Зачастую, но не всегда. И принимая такое решение, нужно четко отдавать себе отчет о преимуществах и недостатках такого выбора. Можно даже банально не давать доступ к редактированию шаблонов из админки. Разные есть варианты. Но реально это как правило не делают. Ну и шаблоны такие тоже надо как-бы проверять после модификации. Тоже никто не делает обычно. А вдруг дизайнер сверставший тебе дизайн за "отзыв" туда вирус внедрил? Или тупо $_GET использовал? Да мало ли чего он там начудить мог....

Вообще поколупав с десяток чужих скриптов я пришел к трем выводам:

1 - Ой, а ведь это и у меня есть...

2 - Надо таки доводить свой движок до публичного релиза. Задолбался исправлять чужие ошибки.

3 - Стоит поделиться мыслями об этом в популярной форме.

Таггу x_x
На сайте с 31.10.2005
Offline
425
#10

Есть ещё быдлокодеры. Это я так, подбросить говнеца на вентилятор :) Они такие же как быдлофотографы, быдлодиджеи и прочие модные хипстеры.

☠️☠️☠️

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий