Назад | Перейти на главную страницу

Есть ли риск для безопасности, позволяющий людям настраивать свои DNS так, чтобы их собственные поддомены могли направляться на мой сервер?

Допустим, у меня есть веб-приложение, созданное на Django и развернутое с Nginx.

Является ли хорошей идеей предложить услугу, позволяющую клиентам запрашивать указание на нее субдомена.

Я понял это:

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

http://mydjangoappmadeupname.com/bigcorporation/

Они предпочли бы получить к нему доступ через

http://service.bigcorporation.com

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

Есть ли значительный риск, о котором я не замечаю? Как вы думаете, было бы проще просто настроить что-то в Django, чтобы справиться с этим, позволяя Nginx принимать все домены, а затем отправлять их в Django, который будет отфильтровывать, разрешены они или нет, или было бы лучше просто обновить мой журнал Nginx каждый раз, когда клиент хотел, чтобы это изменилось?

Что касается части DNS, вы никак не можете предотвратить это. Я с радостью могу создавать записи CNAME, которые будут указывать на google.com, microsoft.com, mydjangoappmadeupname.com или любое другое имя, которое приходит мне в голову.

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

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

Кроме того: позвольте серверу выполнять свои функции сервера (это означает, что настройте его для вашей рабочей нагрузки, в случае apache это будут настройки mpm, максимальный размер запроса и что-то еще). Предоставьте приложению то, о чем оно знает лучше всего. Это означает, что простой http-сервер не знает, платит ли example.com за собственный CSS, а example.net - нет.

Риск состоит только в том, что вы вносите ошибки в свое приложение. Но я не понимаю, как бы вы установили более сложные требования, чем «реагировать на эти домены» на http-сервере.

Я считаю, что вы можете делать такие вещи совершенно безопасно. Конечно, это угроза безопасности? Наверное - так вообще есть. Я просто считаю Tumblr и Posterous примерами, в которых такая функциональность кажется очень доступной.

Лично мне нравится идея обрабатывать эту логику в самом веб-приложении. Я бы подумал, что это поможет вам ориентироваться в пропуске дыр в безопасности через конфигурацию вашего веб-сервера и упростит переключение между разными веб-серверами, если вы когда-нибудь захотите ... Или вы могли бы, по крайней мере, легче перенести свой сайт. Похоже, с чем-то вы должны легко справиться с помощью файлов urls.py Django.

При этом сказано, что я не парень из информационной безопасности. Тем не менее, для меня это звучит нормально. Я не думаю, что это обычная практика только потому, что я чувствую, что большинство людей действительно не понимают, как они могут использовать DNS.

Что-то, что вы потеряете, управляя доменами вне сервера, касается сертификатов ssl. Но я думаю, что в вашем случае у вас может быть просто сертификат с подстановочным знаком, и это все равно не имеет значения. Конечно, я думаю, что сертификаты с подстановочными знаками довольно дорогие.

Во всяком случае, мои мысли.