Мы являемся организацией веб-разработки и недавно перешли на использование Subversion для нашей системы контроля версий. Поскольку выполнение обновления выполняется намного быстрее, чем экспорт и копирование файлов, разработчики хотят, чтобы рабочий сервер был рабочей копией.
Единственное, что меня беспокоит, это все файлы .svn, замусоренные по всей системе, и тот факт, что некоторые корпоративные пользователи могли, возможно, прочитать содержимое этих файлов, возможно, предоставив им информацию, которую мы предпочли бы, чтобы они не имели ,
Каков наилучший / самый простой способ запретить IIS обслуживать любой контент из этих каталогов .svn?
Ответы:
«Не делай так» - не отвечает на вопрос.
Практически мне нравится иметь рабочую копию на рабочем сервере, потому что таким образом я могу быстро вносить изменения в производство (кто никогда не делал этого?) И возвращать их обратно. Это зависит от того, где вы хотите, чтобы ваш слайдер безопасности / удобства и во многих случаях это хорошее место.
Стандартное решение в Apacheland - оставить там файлы .svn, но при этом указать веб-серверу никогда их не обслуживать. Вот как это сделать с IIS 5-7 в Windows 2000-2008.
Скачайте и установите ISAPI_Rewrite - для этого будет достаточно версии Lite. Обратите внимание на дополнительные системные требования для Win 2008. Предупреждение - установщик MSI останавливается и запускает IIS.
Снимите флажок «только для чтения» в свойствах файла httpd.ini . Если вы использовали установщик MSI, therer это ярлык для httpd.ini файла в меню Пуск при Геликон> ISAPI_Rewrite
Добавьте эти строки в httpd.ini :
Директивы ISAPI_Rewrite в httpd.ini :
Теперь любой запрос на каталог .svn или его содержимое приведет к 404 Not Found с сервера.
источник
Вы можете убедиться, что любые учетные записи пользователей, используемые IIS, не имеют прав доступа к каталогам .svn.
Вы можете сделать это вручную (не рекомендуется) или использовать что-то вроде скрипта удаления MrJangles, либо запускаться после обновления SVN, либо регулярно запускаться как запланированная задача:
(примечание: я не проверял вышеизложенное, вам нужно проверить, что он делает то, что пытается, прежде чем полагаться на него в рабочей среде, см. вывод "icacls / help" для дополнительной информации)
(еще одно примечание: «icacls» - это команда Vista / 2008, в более ранних вариантах Windows вместо «cacls»)
источник
Используя IIS 7, откройте диспетчер IIS, выберите узел сервера, дважды щелкните функцию сопоставления обработчиков . Щелкните по действию Add Managed Handler и настройте обработчик следующим образом:
Теперь любой запрос файлов в папках метаданных Subversion с именем .svn на всех сайтах должен возвращать следующее:
При желании вы можете выбрать другой тип обработчика, например, обработчик FileNotFound, который будет возвращать код состояния 404.
Для IIS 6 (с установленным и настроенным ASP.NET 2):
Перейдите в Домашний каталог> Конфигурация> Сопоставление и сопоставьте
.svn-base
расширение с%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
. Затем в machine.config (который вы можете найти%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG
) вы можете добавить тот же обработчик, что и выше для расширения, добавить следующий XML-элемент как дочерний элемент<httpHandlers>
-element:Это только запретит посетителям запрашивать файлы с исходным кодом, они могут по-прежнему запрашивать другие файлы из папок .svn. Сопоставьте больше расширений с aspnet_isapi.dll или создайте сопоставление с подстановочными знаками (это повлияет на производительность), и вы можете заблокировать запрос большего количества файлов.
источник
С точки зрения безопасности я бы переучил ваших разработчиков.
Простота развертывания не обязательно хорошая идея, если вы жертвуете безопасностью.
Вы планируете конфигурацию, чтобы заблокировать доступ к конфиденциальной информации. Что произойдет, если конфигурация случайно изменится. Что произойдет, если исправление IIS выйдет из строя и изменит работу вашей конфигурации. Что произойдет, если сторонняя библиотека, которую вы используете, выйдет из строя и перестанет работать. Я могу подумать о нескольких чрезвычайно вероятных событиях, которые могут нарушить вашу конфигурацию и разрешить доступ к этим файлам, которые будут ПОЛНОСТЬЮ МИТИГИРОВАНЫ из- за отсутствия файлов на сервере.
Вы должны создать сценарий развертывания, который копирует соответствующие файлы с промежуточного сервера. Вы даже можете перейти через SVN в другой каталог на Prod.
Для развертывания вы можете использовать RoboCopy и команду / XD, чтобы исключить каталоги .svn. Вы можете использовать веб-инструмент развертывания Microsoft и ограничить количество каталогов этим. Вы можете развернуть и запустить выше,
for /r YOURPATH %f in (.svn) do rd /s /q "%f"
если вам нужно тоже.Только не размещайте эти каталоги на производственном веб-сайте.
источник
Не используйте подрывную деятельность. Шутки в сторону.
Из ваших комментариев видно, что вы используете не тот инструмент для работы. Subversion - отличный инструмент для ваших разработчиков, но это не инструмент развертывания / зеркалирования. Если ваша цель - просто скопировать файлы с вашего промежуточного / тестового сервера на рабочий сервер с минимальной пропускной способностью и временем, я предлагаю вам использовать rsync . Теперь, поскольку я являюсь администратором Unix, может быть, для Windows есть какой-то эквивалент rsync, о котором я не знаю, так что вы можете заняться исследованиями. Тем не менее, вы можете использовать rsync под Cygwin или cwrsync .
Rsync позволяет зеркалировать каталоги на одном сервере, а каталоги - на другом. Он вычисляет дельту между двумя серверами и копирует только различия. Кроме того, он сжимает дельту и, при желании, может также шифровать ее.
источник
Рекомендуется использовать автоматическую систему развертывания, которая экспортирует и публикует информацию после обновления SVN. Рассмотрим Хадсон, например. Еще немного, но так как он нам не нужен, я не очень хорошо проинформирован
Привет, GHad
источник
Я планирую сценарий на моих производственных серверах, который ищет .svn и просто удаляет файлы. Я не думаю, что это будет работать в вашем случае.
Если удаление файлов не вариант, вы можете установить базовую безопасность для каталогов через IIS (пароль или ограничения IP). Это остановит IIS от предоставления контента неавторизованным пользователям.
Удачи!
источник