Некоторые серверы с nginx остаются уязвимы для техники Nginx Alias Traversal, которая была предложена на конференции Blackhat ещё в 2018 году и позволяет получить доступ к файлам и каталогам, размещённым вне корневого каталога, заданного в директиве "alias". Проблема проявляется только в конфигурациях с директивой "alias", размещённой внутри блока "location", параметр которой не завершается на символ "/"...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=59383
Сишники и их классическая неспособность защититься от ../../../etc/passwd. Кто-нибудь познакомьте их с такой революционной по их меркам концепцией, как "библиотека по работе с путями".
Она называется leftpad мы помним.
лефтпад в исполнении сишников как пить дать будет содержать парочку уязвимостей.
Ничего удивительного если ты начнёшь писать на си ты ещё ногу себе отстрелишь.
Сишка для программистов с профильным образованием и серьезным фундаментом в плане того как работает ЭВМ. Смузихлебам Си противопоказан, для вас есть чатжпт, джабаскрипт и питон.
> Сишка для программистов с профильным образованием и серьезным фундаментом в плане того
> как работает ЭВМ.бедный Дейкстра. куда уж ему, недоучке, до Великих Сишников с Профильным Образованием…
> бедный Дейкстра. куда уж ему, недоучке, до Великих Сишников с Профильным Образованием…Дейкстра хотя-бы ос которую сам и написал, хотя-бы для себя пользовался? И вирта туда же :). Поразвелось теоретических обучальщиков как системщину правильно делать - ведь гадить на плечи на которых стоишь так просто.
> Сишка для программистов с профильным образованием и серьезным фундаментом в плане того
> как работает ЭВМ.а, забыл: ещё Вирт. тоже недоучка, не смог сишечку выучить, пришлось писать свою ось на какой-то ерунде.
Видать в лагерь в первую смену попал, раз активность только в июле, да?
а что, на сишников целенаправленно учат ?
это ведь вроде первого курса профильного ВУЗа...
Много знаешь айтишников кто закончил профильный ВУЗ? Сейчас среднестатистический джун = вайтишник с средним или гуманитарным образованием коммерческого ВУЗа.
> Много знаешь айтишников кто закончил профильный ВУЗ?Двачую адеквата. В IT сегодня вкатывается каждый второй после ютуб курса питон за час. Профессионалов реально нет, наша компания уже год не может найти специалиста (компания в ЕС если что).
денег предлагать не пробовали? ну так, нормально денег? говорят, помогает. потому хорошие специалисты — они дорого стоят. а так-то можно до морковкина заговенья, конечно, искать. и обязательно жаловаться, что спецов нет.
На релокацию не все согласны
> Двачую адеквата. В IT сегодня вкатывается каждый второй после ютуб курса питон
> за час. Профессионалов реально нет, наша компания уже год не может
> найти специалиста (компания в ЕС если что).А какого плана специалисты вам нужны и что за компания? Сайт у нее есть?
А в профильных вузах сейчас где-то есть толковый Computer Science уровня MIT?В начале нулевых я с третьего курса забил, поскольку, несмотря на именитость ВУЗ-а, с CS было печально. Физика и математика, да, были на уровне, но к тому времени я понял, что физика мне не очень интересна, а нужные области прикладной математики я и самостоятельно доучу.
Короче, у кого есть стремление к знаниям, у того знания будут хоть с дипломом, хоть без него. А у кого ее нет, а хочется "войти в айти" за неделю, тут и диплом не поможет.
> В начале нулевых я с третьего курса забил, поскольку, несмотря на именитость
> ВУЗ-а, с CS было печально. Физика и математика, да, были на
> уровне, но к тому времени я понял, что физика мне не
> очень интересна, а нужные области прикладной математики я и самостоятельно доучу.Ну да. В российском вузе даже не расскажут как применить вон того ридсоломона к вот этому линку. Вы или сами это знание найдете - или никогда это не сможете. Да и все остальное там - грузно, муторно - и хрен применимо к чему либо практическому.
> Короче, у кого есть стремление к знаниям, у того знания будут хоть
> с дипломом, хоть без него. А у кого ее нет, а
> хочется "войти в айти" за неделю, тут и диплом не поможет.Я знаю людей которые вообще в вузы не поступали а добились довольно многого в айти в интересных им областях. Главное - желание те знания приобрести. Это потребует определенных усилий, если хочется быть получше других в чем-то. А взаимозаменимым питоняшей можно и за недельные курсы стать, конечно. Но это будет уровень лишь немного лучше копилота и чатгопа, со всеми вытекающими.
Дружище, не хочу тебя огорчать, но в роиськом вузе не расскажут что вообще такое этот рид с соломоном и с чем их едят - требуемую для понимания математику не знают даже преподаватели универа. И на мехмате, а не на вмк. (те кто знали - вероятно, давно в MIT преподают, или пиццей торгуют)И нет, сам ты это не узнаешь и не найдешь.
Этим и отличается нормальное университетское образование от дерьма которым тебя кормят.
> Я знаю людей которые вообще в вузы не поступали а добились довольно многого в айти в интересных
> им областях.вовремя съе...вшись с деньгами? Да, так можно.
А вот вовремя обнаружить что ВСЯ с-ка современная индус-трия считает raid6 по форумле с ошибкой (т.е. при восстановлении ничего восстановить не получится) - смог только человек с профильным образованием и при этом не продолбавший его нахрен.И непоступая в вузы - ХРЕН ты это сможешь повторить.
И поступив в заборостроительный универ - ТОЖЕ не сможешь.
Этому не учат на кратких курсах яндекс-такс...ой, вайтивойти. Слишком много надо иметь предварительных знаний чтобы понять предмет. А он - один из тыщи.
> вообще такое этот рид с соломоном и с чем их едятНу да, пожалуй.
> - требуемую для понимания математику не знают даже преподаватели универа. И
> на мехмате, а не на вмк. (те кто знали - вероятно, давно в MIT преподают,
> или пиццей торгуют)Как-то так. В российских вузах как максимум дадут грузню обшего вида, нужную в таком виде примерно нигде. Как ЭТО переделать на реально существующие компьютеры, работу с битами или байтами, в виде актуальном для компьютеров, МК и проч - придумайте сами. Если не спятите. Потому что надо входить в несколько разных миров под специфичным углом, понимая специфику их всех, препы это ессно не умеют и на ваши вопросы не ответят. А уж какие "практические" параметры в реальных задачах могут волновать - никто не скажет, т.к. в душе не е...т как оно. Вот если курс CS у MIT или кого-то подобного укачать, да еще сорцами по интернету затариться - тогда, конечно...
> И нет, сам ты это не узнаешь и не найдешь.
Я об этом не знал, поэтому случайно накодилось что-то такое, это фимрвар в уарт так:
LinkMon V0.2:
--------- current ----------
Bit Errors 0000001E
Byte Errors 00000016
------- pkt stats ----------
BitExact 00000064
RS Correctable 0000002E
RS Eras+Correctable 00000010
Uncorrectable 00000033
Что означает RS ты наверное догадался. Странноватая статистика связана с специфичной технологией linecoding.> Этим и отличается нормальное университетское образование от дерьма которым тебя кормят.
Передо мной открыт весь мир знаний...
> вовремя съе...вшись с деньгами? Да, так можно.
А ты можешь подождать пока их отожмут или вообще отправят в отпуск на курорт.
> А вот вовремя обнаружить что ВСЯ с-ка современная индус-трия считает raid6 по
> форумле с ошибкой (т.е. при восстановлении ничего восстановить не получится) -
> смог только человек с профильным образованием и при этом не продолбавший
> его нахрен.Я даже страховым полисам не очень верю, цуко, поэтому такие вещи внаглую тестирую, с пониманием проблематики, пруф выше. Оно явно работает :)).
> И непоступая в вузы - ХРЕН ты это сможешь повторить.
Ну как бы совсем без вузовских знаний по теме душно будет. Можно конечно либу как дятел вызвать но ни к чему хорошему это не ведет без понимания what's going on и реальных свойств этой штуки. В принципе теперь я могу кастомные FEC кроить под задачу и linecoding менять.
> И поступив в заборостроительный универ - ТОЖЕ не сможешь.
Ну дык там не расскажут про это. А вот курсы CS от того же MIT и еще нескольких мощных унивров - тупо валяются онлайн, качай да читай, куле.
> Этому не учат на кратких курсах яндекс-такс...ой, вайтивойти. Слишком много надо
> иметь предварительных знаний чтобы понять предмет. А он - один из тыщи.А таки - как ни странно я научился относительно осмысленно юзать эту технологию и даже запускать свои грязные лапки в ее кишки. Попутно зафиксив всякие overrun и negative array index любезно предоставленные Древними, лол, что довольно сыкотно для линка вывешенного джеппой прямо в воздух, куда может скунсить кто угодно чем угодно. И да, не спятить при анализе краевых условий кишков берлекамп-массея еще ухитриться надо.
> Как-то так. В российских вузах как максимум дадут грузню обшего видада вот это как раз максимум и есть. Только реееедкий российский вуз дойдет до общего вида полей Галуа и как эти поля определяются.
А без этого общего - частный случай рида с соломоном ты просто не сможешь понять.
Только реализовать готовый алгоритм без понимания почему он именно вот такой (рад за тебя если ты так не делал)- ну да, ксоры-то все умеют. Это и привело в начале нулевых к неработающему в линуксе (а как выяснилось и вообще у всех, потому что копипастили уже даже не алгоритм а реализацию) raid6. Ашипочка вcpaлась в алгоритмик-то.И вот внезапно у программиста Sun - хватило тогда образования (и интуиции) понять что таки ошибка, и где-то тут что-то не ладно, не может тут быть так все просто.
А я вот г-но программист - и разобраться в гораздо более примитивной программе - не смотря на помощь клуба, не смог. А математическое образование у меня, увы, как у всех.
> да вот это как раз максимум и есть. Только реееедкий российский вуз
> дойдет до общего вида полей Галуа и как эти поля определяются.У россиян те вузы которые до Галуа доберутся - будут страшно далеки от рассказов как сие на base-2 математику нормально маппить, с какими параметрами и почему - так. И не расскажут про специфичные фокусы применяемые в реальных реализациях. А где расскажут про эти фокусы врядли даже заикнутся про Галуа.
И вот есть высокопарные теоретики которые ниипут как применять - и овощи которые ниипут как оно работает. Не понимаю как при этом хоть что-то осмысленно инженерить можно. Ну я вот хотел научиться этому и читанул CS какого-то амеровского вуза + сорцы, но российские ВУЗы тут не при чем.
> А без этого общего - частный случай рида с соломоном ты просто
> не сможешь понять.Пожалуй. Поля галуа и математика в этом закоулке может порвать неподготовленный мозг. Но есть и особенности как выбрать параметры и ЭФФЕКТИВНО транслировать в возможности реальных процессоров. Этим особенностям в российском вузе не научат. А без этого - куда и как это знание?
> Только реализовать готовый алгоритм без понимания почему он именно вот такой (рад
> за тебя если ты так не делал)- ну да, ксоры-то все умеют.Тем не менее, если не понимать вон то как и почему алгоритм делает останется полнейшей мистикой :). Часть "технических" лимитов и выбор параметров тоже оттуда следуют.
> даже не алгоритм а реализацию) raid6. Ашипочка вcpaлась в алгоритмик-то.
Да блин шит хэпенс. Как видишь я джентльменам (и себе) на слово не верю, вон та штука с статистикой честно гоняет end-to-end по воздуху и меряет фактическое состояние дел. Так я точно знаю работает оно или где.
> И вот внезапно у программиста Sun - хватило тогда образования (и интуиции)
> понять что таки ошибка, и где-то тут что-то не ладно, не
> может тут быть так все просто.Допускаю что в энные времена они нанимали хороших спецов. Но успех проекта обеспечивается не только этим. Сани пролетели на общем управлении проектами имхо.
> А я вот г-но программист - и разобраться в гораздо более примитивной
> программе - не смотря на помощь клуба, не смог. А математическое
> образование у меня, увы, как у всех.Ну я вот как минимум могу относительно осмысленно запустить ридсоломона на моих линках и слегка перепахать реализацию не получая вывих мозга, а заодно и остальные параметры линков более осмысленно выбирать. Этим инженерия кажется и отличается от ритуалов на культ Древних.
> Она называется leftpad мы помним.Вон там пример вообще байды на дотнете в новости :). Манагер паролей, рассылающий базы всему миру - прикольно.
В ручной обработке путей можно накосячить независимо от языка. Но да, C сразу подразумевает низкий уровень разработчика и большую вероятность в том числе логических ошибок.
Нет там никаких косяков
Есть спецификация на конфиг
Что говорит спецификация конкретно по случаю из новости?
Что отвалите от нас с вашим частным случаем, мы тут глобальные проблемы решаем.
> "библиотека по работе с путями"А своей то башкой вообще думать слабо ?
А то как посмотришь на твоих соратников, так на строчку хело-ворлд сотня импортов
Причем 100% уникально "чистейших библиотек", "без грамма дерьма". И думать не надо и в случае чего свалить есть на кого
Вы готовы предложить альтернативы?
Языка и вебсервера
Нет проблем. Учитывая, что речь идёт про веб-сервер: oberon, modula-2, golang, freepascal, freebasic, rust.
И на чем тут кроме go есть вакансия хотя бы в Москве ?
Ага, языков ещё можно пару добавитьА вот вебсерверов из хотя бы топ5 на них написанных, что-то не видно
Может потребности в железе на одного клиента сказываются и потребляемых киловаттах?
«известное и на слуху» == «самое хорошее»? окай.
> А вот вебсерверов из хотя бы топ5 на них написанныхCloudflare использует свой веб-сервер (reverse proxy), написанный на Rust, под названием Pingora. Они покрывают больше 10% всего трафика в мире. Значит в топ-5 он точно входит.
Да, достойная замена, спасибо
Сервер можно написать хоть на nodejs и он будет прекрасно работать.
> прекрасноКакие у Вас своеобразные представления о прекрасном...
> СишникиЕщё один страдающий от существования Си.
Здесь, вообще-то, логическая ошибка, которую может допустить программист на любом языке.
nginx все равно древний заброшенный сервер, который уже давно никто не разрабатывает.
Да ладно? А недавние добавления HTTP/3 и прочие новые плюшки, их не существует, да? А больше половины хостов в сети Интернет, что его юзают, это в вашем альтернативном мире что-то из мира фантастики?
> А больше половины хостовМаксимум треть. Да и в той трети на львиной доле почти наверняка он тупой прокси, за которым стоит нормальный вёбсервер.
а я юзаю блин, не хочу чтобы меня сломали, что сейчас в тренде то?
вообще-то одинз из самых популярных вебсерверови какая альтернатива? HAProxy? не много ли его, если тебе балансировка не нужна?
Если балансировка НУЖНА - haproxy.
Если надо статику - lighttpd вполне себе сгодится. Или Apache/mpm_event - оно от нгинха отстаёт, но не фатально.
> Если балансировка НУЖНА - haproxy.
> Если надо статику - lighttpd вполне себе сгодится. Или Apache/mpm_event - оно
> от нгинха отстаёт, но не фатально.а если нужен реверс прокси без балансировки? пробрасывать к локальному хосту или к другим хостам?
Тоже haproxy сгодится.
Или простой проброс порта, если локалхост один - зачем реверс прокси-то в этих условиях?
По идее, такое должны отлавливать статические анализаторы типа яндексовского gixy.
Код открыт если бы мог найти тогда бы нашёл.
1) Если языку нужен статический анализатор (правила, не определены в самом языке) -- это плохой язык.
2) При чём тут статический анализатор, если это дело ТЕСТОВ?! На весь возможный код на языке N статических анализаторов не напасёшься.
И как ты собрался тестами покрыть все возможные входные условия?
Даже фаззер может ряд проблем не выявить.
> 1) Если языку нужен статический анализатор (правила, не определены в самом языке)
> -- это плохой язык.Ну конечно! Давайте вон тем раздолбайским апликушникам вкатим набор правил уровня MISRA или каких-нибудь авиаторов, посмотреть как им такое программирование вообще будет и насколько их хватит. One size fits all же, да? :)
> По идее, такое должны отлавливать статические анализаторы типа яндексовского gixy.Для синтаксиса URL который навязан стандартами вот этого самого - vs типовые апи файлух - это не слишком пресное начинание. Мягко говоря. В урлах например есть способы кодировать символы как какой-нибудь %3f - и на этом тоже регулярно налетают.
Вообще отдавать файлы из директорий в интернет по шттп запросам немного маразматичная идея...
Как и сервера почты хранящие сообщения в файлах.
Но это юникс технологии...
> Вообще отдавать файлы из директорий в интернет по шттп запросамИ в чем теперь принято отдавать файлы по интернету если хттп?
> немного маразматичная идея...
Приехали... Ысчо один судья и непризнанный гений?
> Как и сервера почты хранящие сообщения в файлах.
А, ну да, надо в облачных бакетах, точно, - всех в одно стойло
Или там что то новое нарисовалось?
Речь шла конечно же о примитивном сопоставлении путей из запроса с путями файловой системы, что бред небезопасно и тупо.
Сама по себе концепция идиотская.>И в чем теперь принято отдавать файлы по интернету если хттп?
FTP
>Или там что то новое нарисовалось?
Базы данных изобрели много много десятилетий назад. Но когда вместо мозгов юникс и сишка, то все на свете сразу файлом становится.
>>И в чем теперь принято отдавать файлы по интернету если хттп?
> FTPНет, спасибо. Мёртворождённые протоколы не нужны. FTP был большой ошибкой, и ещё большей ошибкой оказались все попытки его починить.
> Сама по себе концепция идиотская.Настолько "идиотская", что до сих пор доминирует
> FTP
Да, я смотрю у вас "очень высокий" концептуальный уровень
> Базы данных изобрели много много десятилетий назад.
Здается мне, что вы застряли на Вордпресс девелопенге?
>> Сама по себе концепция идиотская.
> Настолько "идиотская", что до сих пор доминируетНу да, как и идея херачить текст полученный из интернета в командную строку, как те потешные придурки тут делают https://www.opennet.dev/opennews/art.shtml?num=59363
>Да, я смотрю у вас "очень высокий" концептуальный уровень
Идея о том, что давать прямой доступ к системной базе данных случайным анонимам из интернета - плохая идея, слишком концептуально сложна для идеологически подкованных специалистов в юникс идеологии.
>Здается мне, что вы застряли на Вордпресс девелопенге?
Как-то, желая быстро сделать простой сайт, случайно вступил в это, но сразу конечно понял что дело пахнет не тем, три дня обувь чистил.
Но вообще, если у этих ВордПресс девелоперов, есть понимание концепции баз данных, то как бы не стоит вам на них с верху в низ смотреть.
> Сама по себе концепция идиотская.Сама по себе концепция вполне здравая. Для статичных html-страниц, лежащих на диске (это тот контент, для которого она создавалась), равно как и вообще для статичного контента, хранящегося в виде файлов на диске, эта концепция естественна и уместна. А то, что не только лишь все программеры могут в нормальный маппинг URL'а в путь ФС - это проблемы конкретных программеров.
Для динамического контента никто не запрещает сделать развесистую систему парсинга URL'а, выбора соответствующего обработчика для запроса и передачи ему разобранных частей URL'а в виде параметров (пример: https://zotonic.com/docs/1541/dispatch-rules ). Причём один из таких модулей, отдающий статичный контент (архивы с прошивками, например, или официальные документы в PDF, или что угодно, что отдаётся в неизменном виде), будет всё равно работать именно на принципе марринга пути URL'а в путь на диске.
Кстати, в упомянутом примере в URL'е вида https://sitename.domain/static/fw/../../../../../../etc/passwd обработка ".." производится до маппинга в путь на диске. То есть, первые два ".." съедят "fw" и "static", следующие будут просто отбрасываться, потому что "/" уже достигнут, и на стадию выбора контроллера для обслуживания запроса выйдет URL "https://sitename.domain/etc/passwd", на который прилетит "404".
Гы... автоформаттер опеннета тоже конвертит URL в https://sitename.domain/etc/passwd :))
Вот почему-то у одних хватает мозгов это сделать, а у других - нет.
https://sitename.domain/prefix..etc/passwdВот же, не сконвертило.
А именно такой там кейс
Урла это уникальный адрес ресурса.
ФС это системная база данных.
То что и там и там по случайности есть слэши в имени ресурсов и запросов к БД не означает что можно брать куски юрлы и на прямую херачить их в виде запросов к системной БД.Так же как нельзя подобным образом из юрлы куски текста в sql запрос пихать.
Вообще-то, они там не по случайности.
> Вообще-то, они там не по случайности.Что ещё хуже.
> FTPЭтот протокол вообще должен умереть. Мало того что не работает через половину натов и файрволов без плясок с бубнами - так еще пего перфоманс при заливке например кучи мелочи невероятно позорный, т.к. в пайплайнинг ЭТО насколько я помню не умеет.
> Базы данных изобрели много много десятилетий назад. Но когда вместо мозгов юникс
> и сишка, то все на свете сразу файлом становится.И бобби тэйблс так то уже не молодой чувак :)
Без разницы на чём
По сути, это просто запрос с конкретным юрл'ом, который далее уже обрабатываетсяОчевидно, вместо прямого проброса на каталог, надо проверить в БД, есть ли запрашиваемый файл
Есть - выдать по указанному там адресу
Нет - послать
А ведь у файлов и каталогов могут быть разные права доступа относительно запрашивающих пользователей. тут нельзя просто взять - и пробросить каталог, в любом случае нужна БД и тонна записейОно уже тыщщу лет так работает. Хз кто в здравом уме в тырнеты пробрасывает доступ к файлам способом, описанным в статье
эвона как. ты, наверное, программист. оно и неудивительно, что софт жрёг гигабайты памяти, требует гигагерцы цпу, а тормозит при этом покруче, чем дум на 6502.
> ты, наверное, программистА кого ещё можно почти наверняка встретить на опеннете ?)
Стандарты есть стандарты, а уж если решил открыть дыру - так будь готов что ей воспользуются
Ну серьёзноЭто ведь даже не ынтыпрайс
Просто, кагбэ логично давать пользователям доступ ровно до тех файлов, которые ты для них выгрузил, а не для всей системы просто потому, что один додумался написать несколько точек в адресе, а другой - урод-разработчик - не додумался это отфильтровать и обработать корректноПосему, всё доступное строго по записи[в БД]
Но кстати, мой софт не тормозит даже на старом смартфоне
> Просто, кагбэ логично давать пользователям доступ ровно до тех файлов, которые ты
> для них выгрузил, а не для всей системыа может это… того… ну, прочитать про права доступа фс, например? пользоваться серверами, которые умеют открыть себе нужные файлы, а потом имперсонироваться в нужного юзера? вот такое вот? а хотя не, ерунда какая-то, давайте дублировать возможности фс через отдельную базу данных, что может пойти не так…
Фу ты какой немодный кэп, ты еще скажи про чрут, или боже упаси, контейнеры. Представляешь, если у меня в виде ФС для браузера есть только Downloads по сути - ну, окей, попробуй спереть из этого view /etc/passwd какой - при том что его в этом view чисто технически нет. Потому что для работы браузера это не требовалось :)
> эвона как. ты, наверное, программист. оно и неудивительно, что софт жрёг гигабайты
> памяти, требует гигагерцы цпу, а тормозит при этом покруче, чем дум
> на 6502.Потом бобби тейблс ему в базу /etc/passwd пропишет, дропнув попутно всякие беспонтовые сайтики. And we're back to square one :)
Не, ну чо, маппить URL в путь к файлу через специальную таблицу в БД - один из вариантов.
Заводить отдельную таблицу, целиком состоящую из записей вида
/manuals/0123456789.pdf | /var/www/static/manuals/0123456789.pdf
это, конечно, стильно-модно-молодёжно, да.
Ну, для статического контента такую таблицу можно генерировать веб сервером автоматически из целевой директории.
Например.Но можно и просто чуть более разумно парсить путь к файлу если уже так хочется прямого отношения части урлы к структуре каталогов.
Ключевое что не должно быть копипаста данных из урлы в запрос к ФС.
> Ну, для статического контента такую таблицу можно генерировать веб сервером автоматически
> из целевой директории.
> Например.И как это улучшает вон то состояние дел? Типа вот там сервер на@бывается, а вот тут не будет? Зато появляется еще и база. С своим пониманием кучи спецсимволов чего доброго, если это скуль какой, так что накидав файлов с креативно оформленными именами можно слегка отредактировать базу попутно с дропом всяких ненужносайтов - чтоб даунтайм побольше :). Чочо, проипли список студентов за последний год - и их сайты тоже? :)
Можно конечно тупенький и быстрый key-value поставить - но файлуха примерно этим и является. А контент легитимно юзает ../../img/somthing/abc.jpg какое-нибудь на раз. И совсем взять и вырубить эту фичу ФС - ну, ок, куча контента сломается.
> Но можно и просто чуть более разумно парсить путь к файлу если
> уже так хочется прямого отношения части урлы к структуре каталогов.По-моему радикально огородить серв в чрут а лучше контейнер (т.к. чрут имеет ряд проблем) так то эффективнее решает задачу с меньшей возней.
> Ключевое что не должно быть копипаста данных из урлы в запрос к ФС.
Ну да, давайте в базу отправим. Чего доброго скульную, да? У которой своей специальной трактовки символов хватает. И будем стрематься вдвое большего числа спецсимволов в именах, и из-за фс и из-за базы. Не понимаю как добавление проблем может их убавить.
>По-моему радикально огородить серв в чрут а лучше контейнер (т.к. чрут имеет ряд проблем) так то эффективнее решает задачу с меньшей возней.Эффективнее как у эффективных менеджеров.
>спецсимволов
Проверка валидности запроса из неконтролируемой среды есть обязанность сервера, точка.
>Ну да, давайте в базу отправим.
ФС тоже база данных.
Ни в какую базу данных, тем более скульную, ненужно копипастить текст из запроса.
> Эффективнее как у эффективных менеджеров.Решает проблему - быстро, сердито, даже без правки кода - и хитов в перфоманс. Есть довольно большая разница - лукапать на каждый запрос базу или нет. Хотя если вы эффективный менеджер компании интел и вам надо продажи новых процов толкать, конечно, отсутствие лукапа в базу это безобразие, как же новые процы то продавать?!
> Проверка валидности запроса из неконтролируемой среды есть обязанность сервера, точка.
Теоретически да. Практически как видим семантика операций ФС - и ее активное использование контентом и проч - создает определенные риски. А бредни с базой создают неиллюзорный перфоманс хит. Докупать серваки во имя луны - ну такое себе.
> ФС тоже база данных.
Да. И лукап 2 баз вместо 1 перфоманса уж точно не добавит.
> Ни в какую базу данных, тем более скульную, ненужно копипастить текст из запроса.
Ну а в какую базу вы предлагали это все?
>Решает проблему - быстро, сердито, даже без правки кода - и хитов в перфомансДальше можно не читать. Шиза настоящая.
Секономить пару тактов процессора на проверке валидности запроса.
Ах ну и главно БЕЗ ПРАВКИ КОДА.
Жесть какая.> Ну а в какую базу вы предлагали это все?
Ещё раз, ни в какую. Задача сервера распарсить запрос, проверить его на валидность, и совершить соответствующие запросу действия, например передать ресурс из файла на диске, из скул сервера, Аллаха или Сатаны. Без разницы вообще откуда.
> Дальше можно не читать. Шиза настоящая.
> Секономить пару тактов процессора на проверке валидности запроса.
> Ах ну и главно БЕЗ ПРАВКИ КОДА.
> Жесть какая.Всего лишь практическая и практичная эксплуатация реально существующего софта в реальном мире. Не уповая на сферический идеальный софт в вакууме - которого не бывает - а подготовившись к парированию факапа "в случае аварии". А вы можете и огнетушитель в авто с собой не брать, ведь вы же супермен, с вами же ничего такого случиться не может?! И переборки в кораблях - глупости, нормальный капитан не должен пробоины получать!!!111. Представляете, вон то зарубает не только известные - но и целые классы НЕизвестных вулнов и минимизирует урон если какой-то вулн все же нашелся. Но возможно вам нравится когда у вас хаксоры тусят, конечно, и вы все для их удобства организуете. Ну там доступнуе диры с системными утилитами и прочим, уж конечно легитимный вебсерв жить не может без запуска шелла или там ls какого в директории.
> Ещё раз, ни в какую. Задача сервера распарсить запрос, проверить его на
> валидность, и совершить соответствующие запросу действия, например передать ресурс из
> файла на диске, из скул сервера, Аллаха или Сатаны. Без разницы вообще откуда.А таки у серверов статики есть режим отдачи ФС по сути 1 в 1. Вплоть до автоиндекса, если это разрешить. Ну а вот выход за www root это такое довольно отдельное безобразие при этом.
ЧСХ вон там утверждается что это вообще чуть ли не by design. Но даже если и - я бы сказал что это довольно хреновый дизайн и пофиксить такое поведение когда alias с / и без / две большие разницы.. эм.. это довольно неожиданно для многих юзерей и ведет к факапам. Де факто это вообще ошибка конфигурации с документированной хренью была. Зачем хрень и почему похожа на вид на НеХрень - вопрос интересный.
>[оверквотинг удален]
> А вы можете и огнетушитель в авто с собой не брать,
> ведь вы же супермен, с вами же ничего такого случиться не
> может?! И переборки в кораблях - глупости, нормальный капитан не должен
> пробоины получать!!!111. Представляете, вон то зарубает не только известные - но
> и целые классы НЕизвестных вулнов и минимизирует урон если какой-то вулн
> все же нашелся. Но возможно вам нравится когда у вас хаксоры
> тусят, конечно, и вы все для их удобства организуете. Ну там
> доступнуе диры с системными утилитами и прочим, уж конечно легитимный вебсерв
> жить не может без запуска шелла или там ls какого в
> директории.Предохраняться конечно же нужно.
Что не отменяет безумности подхода копипаста текста из http запроса в запрос к БД.
Как бы речь о том и идет. Что нужно как бы проверять то что клиент из Индии прислал в запросе.> А таки у серверов статики есть режим отдачи ФС по сути 1
> в 1. Вплоть до автоиндекса, если это разрешить. Ну а вот
> выход за www root это такое довольно отдельное безобразие при этом.Безобразие.
> ЧСХ вон там утверждается что это вообще чуть ли не by design.
> Но даже если и - я бы сказал что это довольно хреновый дизайнХреновый.
> и пофиксить такое поведение когда alias с / и
> без / две большие разницы.. эм.. это довольно неожиданно для многих
> юзерей и ведет к факапам. Де факто это вообще ошибка конфигурации
> с документированной хренью была. Зачем хрень и почему похожа на вид
> на НеХрень - вопрос интересный.Интересный.
> Предохраняться конечно же нужно.А я то думал что надо уповать на сферический софт в вакууме, в котором багов не бывает.
> Что не отменяет безумности подхода копипаста текста из http запроса в запрос к БД.
В этом месте я могу вернуть ваши слова и заявить что хорошая БД не хуже хорошего сервера и не должна вестись на фигню. Некоторые key-value даже сожрут произвольный URL как key и не возымеют от этого проблем. Однако один и тот же URL можно представить довольно большим числом разных способов - потому что стандарт так написан - так что даже так можно откушать приколов. Конечно можно порассуждать о библах и всем таком. Но таки - приколы такого плана были и есть. И рядом - тоже. Типа вон тех request smuggling когда манипуляцией с запросом реквест подшивается к вообще кому-то постороннему. Например потому что фронт и бэк парсят немного по разному.
А запрос к базе на реквест статики таки булшит и RPS угрохает. Так что "докупите серверов".
> Как бы речь о том и идет. Что нужно как бы проверять
> то что клиент из Индии прислал в запросе.Да никто не спорит что нужно - но тут вообще документированное поведение было так то. То что оно не лучшее на свете и ведет к ололо - ну, окей, допустим.
> Безобразие.
Но вон там это вообще фичой было. Просто довольно неожиданной для некоторых.
> Интересный.
Авторы нжинкса вообще местами странноватые вещи делали. Однако остальные делают не менее странные вещи. А иногда и более. Если так посмотреть, на глупые грабли встают практически все HTTP серваки. Сочетание семантики ФС с структурой контента и запросов это такое сочетание которое вообще довольно трудно реализовать секурно во всех позах. Особенно если еще наставить фронтов, бэков, в потом окажется что они одно и то же немного по разному понимают, ...
На мой вкус я б фильтровал ../ как элемент путей в (уже декодированых) урлах - но контент тогда сломается много где.
Теоретически конечно пользователь "сам дурак", ибо все работает так, как описано в документации. А практически - та еще дыра.
Прям проникся с каментов Си-хейтеровНовость: "При неправильно написанной конфигурации вебсервера будет дырка"
Виноваты язык Си и те кто сервер написал
Написавшим дырявый конфиг и не исправившим с 2018 года - почет и уважениеЛогика)
Обычно принято конфиги на вилидность проверять прежде чем применять.Но сишники такой простой идеи не понимают, ведь С/С++ компиляторы любой бред шизофреника маньяка готовы компилировать и это у них ФИЧА такая.
Так все эти конфиги - валидные
Если кто-то спек не прочёл - ссзб
> Если кто-то спек не прочёл - ссзбЕсть один важный принцип проектирования софта, называется «principle of least astonishment». Если ты про него не знаешь — ССЗБ.
>называетсяДаффай по-руцки, "защита от ивана-дурака" :)
Когда-то в инструкции по эксплуатации автомобиля писали, как регулировать зазоры клапанов
Теперь, что аккумуляторную жидкость пить нельзяОжидаемое поведение в конфиге вебсервера? Это серьёзно?
Читаем спецификацию и никаких сюрпризов
> Когда-то в инструкции по эксплуатации автомобиля писали, как регулировать зазоры клапановКонфиг веб-сервера — это не клапана, а руль и педали.
> Ожидаемое поведение в конфиге вебсервера? Это серьёзно?
Абсолютно серьёзно. Особенно в конфиге вебсервера. Вебсервер чаще всего взаимодействует с публичным интернетом и ошибки в его конфигурации могут быть особенно опасны, в чём мы и убедились. Если у админа нет синдрома саванта, ошибки неизбежны, поэтому и конфиг должен быть интуитивно понятным, и цена ошибки должна быть минимальна. Ни то, ни другое нельзя сказать про сабж.
> Когда-то в инструкции по эксплуатации автомобиля писали, как регулировать зазоры клапановЧСХ водители с удовольствием послали эти автомобили туда где не светит солнце при первой же возможности. Потому что если кто хотел водить авто - это совсем не значит что он хотел загорать под жигуленком вместо поездки на шашлыки. Автомобили покупают не для того чтобы с клапанами сношаться.
> Так все эти конфиги - валидные
> Если кто-то спек не прочёл - ссзбВот я и говорю, типичный сишный маразм.
Спек конечно же стоит прочитать, только в спеке будет undefined behaviour через абзац, а double не меньше float который может быть любого размера как боженька пошлёт.
Ну и конечно же неотлавливаемые переполнения целых чисел.
> Вот я и говорю, типичный сишный маразм.Этот маразм сам по себе ортогонален сям и происходит из API файловых систем. Даже в HTML можно пути указывать как ../img/abc.jpg - и это валидный синтаксис. Сервер должен его отработать. Вот прям так, с вылезанием на уровень вверх - если права на это есть.
> Спек конечно же стоит прочитать, только в спеке будет undefined behaviour через
> абзац, а double не меньше float который может быть любого размераКазалось бы при чем тут апи файлух с его дурацкостями? Это апи и у остальных такое же. А либы могут взять как эти так и те.
> Ну и конечно же неотлавливаемые переполнения целых чисел.
А у кого оно отлавливаемое без жесткого хита в перфоманс? :)
> Этот маразм сам по себе ортогонален сям и происходит из API файловых систем. Даже в HTML можно пути указывать как ../img/abc.jpg - и это валидный синтаксис. Сервер должен его отработать. Вот прям так, с вылезанием на уровень вверх - если права на это есть.Вот только этот путь не имеет отношения к файловой системе сервера. Это исключительно УРЛ-путь и обычно обрабатывается самим браузером, а на сервер приходит уже конечный вариант пути.
> Вот только этот путь не имеет отношения к файловой системе сервера. Это
> исключительно УРЛ-путь и обычно обрабатывается самим браузером, а на сервер приходит
> уже конечный вариант пути.Эта семантика взята именно из ФСовских апи. Так что насчет не имеет отношения - булшит однако. Особенно для сервера статики.
Она не взята, она всего лишь может совпадать. От того, что сайт переехал на винду или на молодёжно-экспериментальную ОС с базой данных вместо привычной файловой системы, - УРЛ сайта никак не изменится. Но даже если на сервере стоит линукс, эти имена каталогов и файлов не обязаны присутствовать на сервере.И уж конечно же семантика УРЛ никак не подразумевает выхода за границы корня сайта и возможность получения любого файла с сервера. Ибо - ещё раз - УРЛ не имеет никакого отношения к файловой системе сервера.
> Она не взята, она всего лишь может совпадать.Не просто может - но и совпадает вот. И это вполне легитимная конструкция.
> От того, что сайт переехал на винду
В винде вон та семантика тоже IIRC работает.
> или на молодёжно-экспериментальную ОСс базой данных вместо
> привычной файловой системы,Из такого припоминается всерьез разве что PalmOS - и сервировать с ЭТОГО файло никто всерьез и не пытался даже. Да и модно-молодежным этот кусок фэйла назвать сложно. Остальные вообще жесткая маргинальщина и вот это - их проблемы. Если они как-то вывесят posix api они должны будут ../ как-то обрабатывать. Не вывесят - останутся без софта под чудо ос, уж как им удобнее.
> - УРЛ сайта никак не изменится. Но даже если на сервере стоит линукс, эти имена
> каталогов и файлов не обязаны присутствовать на сервере.Не обязаны - но в случае статики удобно. А каким-нибудь sendfile() еще и эффективно на уровне оси. Но вы конечно можете вместо этого с базы вытаскивать - заодно RPS и прогрузку 100500гигабит интерфейса сравним и оверхед администрирования. Можно даже с подъемом контейнера, это проще администрежа БД.
> И уж конечно же семантика УРЛ никак не подразумевает выхода за границы
> корня сайта и возможность получения любого файла с сервера.И тем не менее прям в стандарте пачка интереснейших грабель, типа кучи вариантов представления одного и того же. Это и всяким ACL и проч доставляет, а уж всяким стыкам фронт-бэк и подавно. И таки это продолб стандарта. Если на уровне стандарта сделать реализацию сложной и грабельной, на этом будут налетать. Очень странно.
> Ибо - ещё раз - УРЛ не имеет никакого отношения к файловой системе сервера.
В случае статики это 1:1 mappging зачастую. Так проще админить вот это все и сервировать просто и быстро. И таки та семантика - откровенно списана с posix api. Вероятно потому что сервера обычно на *никсах были.
> Этот маразм сам по себе ортогонален сям и происходит из API файловыхНичего такого в апи файлух нет.
> Сервер должен его отработать.
Должен, и если запрос валидный должен отдать ресурс, а если невалидный, должен послать нафиг.
Так же как ФС пошлет вас если вы сделаете запрос на несуществующий или ограниченный правами файл.
>Казалось бы при чем тут апи файлух с его дурацкостями?
Мы тут вообще то говорили о спеках к файлу конфигурации.
> А у кого оно отлавливаемое без жесткого хита в перфоманс? :)
Главная страшилка сишников. Прямо жёсткий ужасный хит п е р ф о м а н с а!
Правда это проверка одного флага ЦП после операции.
Ну ладно, а опциональную то проверку можно, как в проклятом расте?
> Ничего такого в апи файлух нет.А почему тогда синтаксис вида cd ../../dir - работает и без всяких вебсерверов вообще? :)
> Должен, и если запрос валидный должен отдать ресурс, а если невалидный, должен послать нафиг.
Ну так согласно доке - там все так и задумано. То что такая разница в варианте с / и без очень спорное решение - другой вопрос. Это просто хреновая имплементация фичи, забаговывающая человека.
> Так же как ФС пошлет вас если вы сделаете запрос на несуществующий
> или ограниченный правами файл.А там запрос так то легитимный. Просто админ возможно имел в виду не это. Или именно это. Возможны варианты. Просто неудачная реализация, багующая двуногих.
> Мы тут вообще то говорили о спеках к файлу конфигурации.
А на него были спеки? И как они звучали?
> Главная страшилка сишников. Прямо жёсткий ужасный хит п е р ф о м а н с а!
Тормозной софт мало кому нужен. Особенно критичный к скорости. Типа сжатия, крипто, кодеков, да даже, блин, вот тормозной вебсерв для статики мало кому вперся.
> Правда это проверка одного флага ЦП после операции.
Да, а теперь представь себе этот шит в каком-нибудь крипто. После каждого действия. При том что оно из этих действий целиком и состоит. Вся алгоритмика и просядет в разы. И тут вон те пойдут покупать в разы больше серверов, под ту же нагрузку. Аж два раза. А еще у них там энтерпрайзные SSD сейчас - где IO измеряется миллионами IOPS, сетевки на добрых 100Гбит если не более и проч. И тут ты такой якорь вбил. И скорость в разы - упс. И много кому такой софт вопрется? :)
> Ну ладно, а опциональную то проверку можно, как в проклятом расте?
А оно там только в дебаг режиме и работает. Если из сей такое хочется сделать - соберите с asan и ubsan, получите примерно такого же уродца. С тем же хитом перфоманса. Ловить переполнение будет, и даже левые обращения к памяти и out of bounds всякий :). Только вот превратить си в какую-то яву - ну, круто, да. Если в дебаг режиме. А если в проде - такое себе.
Так это не баг, а фича. Alias сопоставляет префикс как подстроку, там / - просто символ, как и любой другой.Скажем, есть /var/www/images/photo-1.jpg (photo-2.jpg итд), и хочется по /photos/1.jpg отдать /var/www/images/photo-1.jpg итд. С текущей реализацией alias это легко делается безо всяких регулярных выражений. А если "починить" "уязвимость", подобные конфигурации сломаются.
Хорошая фича, и кейс вполне реальный. Но можно при этом не отдавать ../../../etc/passwd?
скорее не так, отрезать все что выходит за рамки / веб сервера. тогда ничего левого и не будет отдано.
Ну здесь идея в том что alias может указывать на любой каталог, независимо от того где расположен корень веб-сервера. Иначе толку от этой директивы немного.
> Ну здесь идея в том что alias может указывать на любой каталог,
> независимо от того где расположен корень веб-сервера. Иначе толку от этой
> директивы немного.Я понимаю идею, но если возникает необходимость перехода где-то внутри ФС вне рута веб сервера это выглядит как недостаток архитектуры веб приложения.
Как вариант разрешить симлинки из рута веба в другие каталоги, но не более. То есть, альяс ограничен рутом и строго симлинками.
> Как вариант разрешить симлинки из рута веба в другие каталоги, но не более.Ну а дальше он по этим симлинкам и вылезет :-)
P.S. Приплетание С тут по принципу "И казалось бы, причём здесь Лужков" ? Ах да ... те, кто хает сишку тогда только родились.
> Ну здесь идея в том что alias может указывать на любой каталогНи на какой каталог он не должен указывать.
Урла это уникальный адрес ресурса.
ФС это системная база данных.
То что и там и там по случайности есть слэши в имени ресурсов и запросов к БД не означает что можно брать куски юрлы и на прямую херачить их в виде запросов к системной БД.Так же как нельзя подобным образом из юрлы куски текста в sql запрос пихать.
> Ну здесь идея в том что alias может указывать на любой каталог,Ну так и пусть указывает, но путь пускай получает уже после обработки УРЛ (т.е. без "..").
>тогда ничего левого и не будет отданоНу раз всем разрешено читать файл /етц/пассвд, то в чем проблема , если его прочтет по запросу нгинкс? А нуда ибешники про юзер энум затрубят? Юзайте тогда нормальные пермишен костили вроде селинуксов, фаполисид, аппармоуры и т.д. колясок :)
Нормализация пути происходит на уровне location, и на его уровне неизвестно, будет внутри alias или что-то еще, это отдельный модуль. Две точки в пути без слеша - вполне валидный кейс. А со слешом там и не пройдёт.А alias - это просто конкатенация. Отсутствие слеша в location и присутствие в другом - это выстрел в ногу. Делать же двойную проверку - это зря жечь электричество.
По хорошему, тут нужен валидатор конфигов, который бы на такую конструкцию выдавал предупреждение.
Вот я ровно о том же и говорю.Типичный пример плохого инженерного подхода, когда гвозди забивают умеют, но никакого понимания цели и причины нет, важен так сказать процесс.
Другой пример стандарт С++.
Третий пример, недавно затонувшая субмарина Титан.
Это не баг, а фича. Закрывайте каталоги другими доступными средствами. Например, не устанавливая nginx в основную систему или совсем не устанавливая.
«кодироваеть умею, для людей не умею.» потому что алиас для не-каталога должен или быть другой командой, или требовать обязательной опции-уточнения.вообще, сишников нельзя выпускать из клетки, и уж тем более нельзя позволять им дизайнить что-то для end user'а. потому что у них повальный вывих мозга: «надо сделать так, чтобы вероятность ошибки пользователя была велика, и можно было самого пользователя потом обвинить.»
есть, конечно, исключения, но они пишут на си исключительно по необходимости, и без удовольствия. и не вскормлены сишечкой. а если человек вскормлен сишечкой — то это намного хуже, чем даже древним бейсиком.
Зачем сервер запускать без контейнера, лол
Да вы без контейнеров скоро сложить два числа не сможете. Понапридумывали дерьма и сделали вид что без него нельзя жить.
Написать location без / на конце, даже без alias, это нужно умудрится как-то сделать, даже не знаю как...
Для нескольких персонажей выше - это норма)
location ~* ^/(?:xmlrpc\.php|wp-links-opml\.php|wp-config\.php|wp-config-sample\.php|wp-comments-post\.php|readme\.html|license\.txt)$ {
deny all;
}Ты правда думаешь, что тут нужен / в конце?
Что ты несешь вообще?
Локейшены бывают ОЧЕНЬ разные, они могут быть с трэйлинг-слэшем и без него, по обстоятельствам
А вот если это локейшен с алиасом, то должен быть трэйлинг-слэш
Имел ввиду, забыл уточнить, локейшены в которых явно подразумевается одна конкретная директория!А локейшены и такими бывают, точнее должны быть в нормальных сайтах на фреймвёрках.
<code>
location = /index.php
{
return 404;
}
location ^~ /.
{
return 404;
}
location /
{
try_files $uri @php;
}
location @php
{
fastcgi_read_timeout 30s;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm.sock;
}
</code>
Где index.php едиинственный скрипт в $document_root а всё остальное статика.
А весь код лежит за пределами $document_root и недоступен nginx-у.
> Имел ввиду, забыл уточнить, локейшены в которых явно подразумевается одна конкретная директория!А, ну с таким уточнением да, становится твоя фраза более логичной
Какой-то айти-шаманизм. Как догадаться, что в конце location должен быть /? Правильно, никак. Про важность слэша в конце location можно узнать только прочитав и запомнив документацию. При чём, подход неинтуитивен, т.к. на Юниксе cd directory и cd directory/ приводит к одинаковому рельзультату. Выходит, что дизайн языка конфигурации создавался не для людей, а для ChatGPT и для тех, у кого должностные обязанности состоят из двух слов: настройка Nginx.
Документацию конечно же нужно читать, без неё что угодно НЕ понятно будет!
location без регулярки означает строку начинающуюся с, а не равенство.
Это удобно и зачастую именно это требуется в кофигурации.
Если ты когда-либо читал документацию на большие системы типа Nginx, ты бы заметил, что там кроме выкрутасов с location расписана так же масса других разнообразных вещей. Запомнить вообще всё может только ChatGPT или человек с синдромом саванта. Люди — irl, а не из фантазий опеннетчиков — невнимательны, забывают, спешат, устают, подвержены стрессу и допускают ошибки. Данное поведение превращает обшибку в потенциальную катастрофу. И претензия не в том, что нужно что-то читать, а в том, что детали, которые могут показаться незначительными при чтении, имеют далеко идущие последствия, что делает Nginx недружелюбным к пользователю. И это даже не проблема Nginx как такового, а системная проблема софта, спроектированного и написанного в тот период времени. По моим ощущениям, только в последнюю декаду при проектировании ПО стали обращать больше внимания на интерфейс человек-компьютер и воспитывать культуру безопасного дефолтного поведения.
Почему nginx -t не проверяет этого?
> Почему nginx -t не проверяет этого?Потому что /images нормальный допустимый шаблон для обработки запросов вида, например для
/images-user.html /images-company.html и/или /images-user/ /images-company/.
Например чтобы установить особые условия кеша.
Только для них не ставят псевдонимы.
"Только для них не ставят псевдонимы."
Именно.
Их ставят как раз для прямого доступа к файлам (обычно это что-то большое) лежащим в стороне от вебни.Поэтому и стоит такой случай проверять и фейлиться или хотя бы выдавать предупреждение что оно может работать совсем не так как показалось.
Но нет. Изобретатель nginx изобретал его под свой локалхост и больше ни под что. А все дальнейшие улучшизмы не смеют затрагивать корней.
Поэтому пока "if is evil" и тому подобная мерзость не будет заменено на "мы переработали структуру конфига и им снова можно пользоваться без чорной магии" - надо просто выбирать другой софт. И уже много-много лет назад.
А что будет в случае наоборот? location закрыт знаком /, а alias - нет. Это норм или надо править?
Это наверное не дыра, но будет ли это работать, так как нужно?
Какие то детские ошибки)