Комментарии 52
НЛО прилетело и опубликовало эту надпись здесь
Не знаю почему, но очень не нравится, когда в статье идет обращение на «ты».
+29
это стиль журнала какер. У них довольно частенько бывали статьи вида: «Привет, мой юный друг какер»
+18
Наверное потому, что вам не 18 лет.
0
Да уж, кто будет писать query сравнения пароля по regexp?
Я и на equal не советую переписывать, надо поднимать юзера по логину и уже на сервере сравнивать пароль, тем более если есть шифрование.
Даже как пример в статье это выглядеть крайне глупо.
Я и на equal не советую переписывать, надо поднимать юзера по логину и уже на сервере сравнивать пароль, тем более если есть шифрование.
Даже как пример в статье это выглядеть крайне глупо.
+25
Статья с грозным заголовком, суть которой, как и обычно, проблемы реализации фронт-эндов/бэк-эндов, которые с БД работают, и безопасности при работе с данными в них, а ни сколько не самой БД.
+13
Писец, сами выдумали проблемы, сами же героически их решили.
Ни одна из этих «уязвимостей» в реальном мире просто не встречается :)
Ни одна из этих «уязвимостей» в реальном мире просто не встречается :)
+21
Но писать же о чем — то надо :)
+1
Цель материала — показать уязвимости, связанные с использованием NoSQL баз данных. Пускай на базовом уровне. Если вы считаете, что все разработчики заботятся о фильтрации входящих данных, то, увы, вы ошибаетесь :(. Друзья из Positive Technologies и Digital Security не дадут соврать.
+2
Бред какой-то
+4
Неужели журнал хакер сменил аудиторию на школьников? Правда сложно писать серьезные вещи? Это далеко не всем дано, я бы даже сказал еденицам.
-3
ксакеп уже как ~10 лет не торт.
0
скучаете по delphi, обзору игр и настройке irc-бота?
если будет желание, сравните контент номеров:
www.xakep.ru/magazine/xa/041/default.asp (10 лет назад)
www.xakep.ru/magazine/xa/160/default.asp (последний номер)
если будет желание, сравните контент номеров:
www.xakep.ru/magazine/xa/041/default.asp (10 лет назад)
www.xakep.ru/magazine/xa/160/default.asp (последний номер)
+3
Дело не в сожержании а в содержимом. У них бывали статьи с очень громким и интересным названием, но полные воды.
+1
Статьи в Х зависят от авторов. Разные авторы разные статьи. Журнал фактически «опен сорс». Каждый может написать туда, что хочет 8)
0
Я просто думал что у них там серьезный фейсконтроль контроль статей и авторов. Оказывается я сильно ошибался =)
0
Ну фейс-контроль есть. Статьи типа «брутим» аськи или делаем фейк для ВКонтакте не пройдут. Данная статья, возможно, спорна, но тема интересна в общем, и даже описанные кейсы эксплуатации интересны для общего представления потенциала.
0
var regexpPwd = new RegExp("^" + password, «i»);
var loginParam = { login: login, password: regexpPwd };
после этого уже стало смешно :)
тема да, интересная, но подача материала из серии 'вредные советы', такого кода как описывает автор, даже школьники не пишут, я уж не говорю о более опытных, которые даже в похмелье в 5 утра такое не напишут.
var loginParam = { login: login, password: regexpPwd };
после этого уже стало смешно :)
тема да, интересная, но подача материала из серии 'вредные советы', такого кода как описывает автор, даже школьники не пишут, я уж не говорю о более опытных, которые даже в похмелье в 5 утра такое не напишут.
0
Поправьте ссылку на «тестовый web-сайт»
0
>объектно-ориентированные базы данных (db4o, Cache, Jade);
мне кажется Cache регулярно относят к объектной СУБД только те люди которые с ней никогда не работали
да там есть поддержка объектной парадигмы БД там есть также поддержка реляционной парадигмы БД — но весь вкус этой СУБД в использовании — древовидных БД с помощью прямого доступа — не объекты — не SQL — а деревья! Да это труднее — да это требует больше времени — но только там можно получить скорость быстродействие и гибкость в полной мере… (наболело)
мне кажется Cache регулярно относят к объектной СУБД только те люди которые с ней никогда не работали
да там есть поддержка объектной парадигмы БД там есть также поддержка реляционной парадигмы БД — но весь вкус этой СУБД в использовании — древовидных БД с помощью прямого доступа — не объекты — не SQL — а деревья! Да это труднее — да это требует больше времени — но только там можно получить скорость быстродействие и гибкость в полной мере… (наболело)
+1
Зашел, думал что-нибудь смачное будет, а тут один индусский код, который еще надо постараться написать.
- Проверять пароль регуляркой это конечно пять. Как минимум потому-что никто в своем уме не будет хранить пароль в открытом виде. И вообще, вы же сами написали, "поиск с помощью регулярных выражений", проверять равны ли две строки посредством регулярок, эм, это даже не смешно.
- И еще одна высосанная из пальца дыра. Черт возьми, как же можно догадаться делать eval что-бы сделать запрос. Кажется этот пункт можно переформулировать в «Нету дыр как в MySQL? (Я о генерации запросов методом подстановки, если что) Так давайте сделаем так, чтобы они были!». Ибо все нормальные люди сделают этот код так:
users.find_one({'login': login})
- Господи, запустили сервер с --rest и теперь его можно поломать через него! Серьезно, это как дать гранату мартышке, а потом удивляться салюту из кишок. В документации MongoDB даже указано, что рекомендуемый способ использования это без аутентификации, но при этом разрешаем файрволом только оттуда, откуда можно, а следовательно CSRF сразу идет лесом. Ну а пихание данных без проверки, смотреть предыдущий пункт, намеренно использовать потенциально дырявую штуку, а потом кричать «решето!» весьма странно.
- А авторизация посредством выполнения JavaScript, вот кто так напишет? Да, правильный ответ — никто. Основной юзкейс этого дела, это посчитать что-то сложное прямо на сервере, чтобы не таскать данные туда-сюда. И то, в новой MongoDB будет интересная штука чтобы делать все это без JS.
Во-вторых, безопасность современных NoSQL-СУБД оставляет желать лучшего.Вообще, сказали бы честно, уровень развития мозгов некоторых разработчиков оставляет желать лучшего, такие примеры как тут есть лютый индусизм (т.е. абсолютное не понимание инструмента).
+12
Постоянное «ты»-канье в статье как-то коробит. Так и слышится «здддддравствуй, мой маленький друг, сегодня я расскажу тебе сказочку о волшебном ноэскуэль...».
0
НЛО прилетело и опубликовало эту надпись здесь
статья конечно кажется бредом, и я полагаю что, как и в данном случае нужно еще постараться написать так чтобы инъекция стала возможной.
но в качестве примера для попыток взлома могу предложить поиграть с InterSystems Cache, думаю написать там код подверженный инъекциям будет сделать сложнее, конечно если использовать именно NoSQL доступ к данным а не sql.
но в качестве примера для попыток взлома могу предложить поиграть с InterSystems Cache, думаю написать там код подверженный инъекциям будет сделать сложнее, конечно если использовать именно NoSQL доступ к данным а не sql.
+1
НЛО прилетело и опубликовало эту надпись здесь
Map/Reduce. Map/Reduce — это программный фреймворк, разработанный компанией Google для параллельных вычислений над большими объемами данных.
О да.
www.cs.cmu.edu/Groups/AI/html/cltl/clm/node143.html
X3J13 voted in January 1989 (MAPPING-DESTRUCTIVE-INTERACTION)
+1
>MongoDB использует в качестве языка запросов BSON
Не совсем корректно. BSON это нотация (Binary JSON), а не язык. А языком для запросов является JS.
Не совсем корректно. BSON это нотация (Binary JSON), а не язык. А языком для запросов является JS.
0
Примеры искусственные, но дают повод задуматься об этом аспекте безопасности тем, кто не задумывался по причине «да ладно, у меня же нет sql».
Так что спасибо автору.
p.s. маленькое занудство: «но СУБД не может обойтись без языка запросов» — например, в CouchDB нет языка запросов. Есть REST-API для запросов, но в запросах просто передаются параметры, а не какие-либо логические конструкции.
Так что спасибо автору.
p.s. маленькое занудство: «но СУБД не может обойтись без языка запросов» — например, в CouchDB нет языка запросов. Есть REST-API для запросов, но в запросах просто передаются параметры, а не какие-либо логические конструкции.
0
Я приблизительно о том же. Ничто не мешает так же делать в любом другом случае. Сайт имеет досбуп к черным ящикам вызова процедур СУБД. Понятно что в процедуре тоже можно найти дырку, но написание перехвата ошибок в параметрах вызываемой функции и контроль формата параметра это первый курс, второй семестр. В том смысле что чем проще функции — тем сложнее в них чтото сломать.
+1
Всетаки странно. Неужто никто не использует аутентификацию через хранимые процедуры? (Они вроде и в монго есть: Stored Javascript).
Я, конечно не сайт девелопер, но когда приходится кропать под веб — у меня сайт только вызывает процедуры и функции с четко обозначенными правами — никаких запросов.
Может быть сильно параноидально так делать или я в принципе неправильно подхожу к задаче, может укажете в чем ошибочность моего подхода? (а то долго думал — недостатков не придумал)
Я, конечно не сайт девелопер, но когда приходится кропать под веб — у меня сайт только вызывает процедуры и функции с четко обозначенными правами — никаких запросов.
Может быть сильно параноидально так делать или я в принципе неправильно подхожу к задаче, может укажете в чем ошибочность моего подхода? (а то долго думал — недостатков не придумал)
+2
НЛО прилетело и опубликовало эту надпись здесь
Я такой подход больше в MSSQL использовал. Просто когда читаешь примеры по книжке (я с этого начинал), там постоянно упоминалось о том что сторонние приложения ни в коем случае не должны тыкать запросиками напрямую в саму базу, а исключительно через хранимые процедурки, да и то — у каждой процедурки (или группы процедурок) должен быть свой юзер которому за пределы функционала процедуры даже тройным прыжком с переворотом не вырваться. (Для примера. Есть функция которая по логину и паролю дает человеку id сессии, используя промежуточную процедуру которая на основании логина и пароля дописывает в хэш таблицу сессий адрес, session_id и результат аутентификации. То есть если вы пробьете функцию сбора данных за ней остается функция которую может вызвать только функция сбора данных и никто больше — и в генератор сессии вы ничего не подсунете).
А на тему галочки в дампе, так ведь можно и в бане раздеться забыть, но у воспитанных людей в трезвом виде такое не случается.
А на тему галочки в дампе, так ведь можно и в бане раздеться забыть, но у воспитанных людей в трезвом виде такое не случается.
0
Автор забыл указать, еще один уровень — это абстрагирование, маппинг на объекты позволит автоматом избавиться от выстрела в ногу.
+2
кстати в руби ^[a+z]+ лучше не использовать, дыра
0
new RegExp("^" + password, "i");
Теперь я понял, откуда у этого издания такая репутация :)
0
У меня предложение журналу «Хакер»: помимо печати самой статьи, выкладывайте и комментарии с хабра — они частенько полезней самой статьи.
0
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Азбука NoSQL-инъекций