Мы разрабатываем веб-приложение asp.net в wcsf. Веб-приложение будет развернуто на общем хостинге VDS Windows Server 2003. Веб-сайт будет использоваться для b2b, ежемесячной платы за обслуживание и транзакций по кредитным картам, используемых в веб-приложении, поэтому он должен быть безопасным. Я хочу подумать, что нужно сделать перед развертыванием, и мне нужен ответ на несколько вопросов:
1) Как я могу защитить свой сайт и код от копирования. Достаточно ли подписи кода? Что делать для защиты отражателя? Обфускации достаточно?
2) Что насчет плюсов и минусов хостинга Windows Server 2003 VDS?
3) MS SQL Server 2005 Express подходит для такого бизнеса? Ограничение mssql express (4 ГБ памяти и 1 ГБ оперативной памяти) вызывает узкие места на веб-сайте?
4) Могу ли я без проблем перенести базу данных из экспресс-версии в mssql 2005 для рабочей группы в будущем?
Нет ... насколько я понимаю, он имеет в виду виртуальный выделенный сервер.
Да, я имею в виду виртуальный выделенный сервер.





Обфускации будет достаточно. Подписание кода не защищает от посторонних глаз. Также наиболее респектабельные хостеры не интересуются вашей интеллектуальной собственностью и данными. В конце концов, они занимаются хостингом.
Я работаю в хостинговой компании, и у нас быстро растет число клиентов, размещенных на нашей платформе виртуализации. Одно из преимуществ как для клиента, так и для нас самих заключается в том, что если вам нужно больше процессора или памяти, мы можем добавить их почти сразу, потому что это всего лишь настройка конфигурации виртуальной машины. В конечном итоге все зависит от того, как ваш поставщик построил свою виртуальную среду. Вам действительно нужно собрать больше информации о возможностях и ограничениях их среды, о том, сколько серверов на каждом узле они обычно запускают и т. д., И решить, подходит ли это для вас.
SQL 2005 Express будет работать так же, как и полноценный SQL 2005. Ограничения заключаются в функциональности (например, отсутствие olap и тому подобное) и, как вы правильно заметили, в максимальном объеме памяти, который он может использовать, и максимальном размере БД. Однако производительность снизится, если вы перерастете максимальный объем доступной памяти.
Базы данных SQL 2005 Express можно без проблем создавать резервные копии и восстанавливать в любой продукт SQL 2005/2008.
Не зная объема трафика, который попадет в ваше приложение, было бы трудно предсказать, является ли виртуальный сервер лучшим выбором среды. То же самое относится к SQL 2005 Express. Если приложение интенсивно использует базу данных, вы можете столкнуться с повышенной нехваткой памяти - чем больше памяти у SQL-сервера, тем больше он может кэшировать. Я считаю, что вам нужно составить собственное планирование мощностей и решить для себя, какое решение является оптимальным на данный момент и в будущем.
Кев - не поймите неправильно, но вас беспокоит, что Эрхан воспринял ваш ответ как полный ответ? Вы предоставили очень полезную информацию, но она может оставить его сосредоточенным на защите своего кода. Если он не защитит сайт и данные, его атакуют хакеры.
Гм ... Я полагаю, что технически я ответил на все его вопросы, но ваш ответ также добавил ценности, сделав очень важные дополнительные моменты. Я предполагаю, что это проблема с подходом единственного ответа SO. По крайней мере, я надеялся, что он проголосует за тебя, это мое.
Эрхан -
Ваша основная цель безопасности заключается не в защите вашего исходного кода, это для защиты данных ваших клиентов.. Для этого вы должны убедиться, что A) ваш обмен данными безопасен (SSL) b) ваш код реализует соответствующую безопасность (не подвергается атакам с использованием SQL-инъекций) и c) ваша база данных безопасна.
Для (A) - безопасность связи - вам нужно получить сертификат SSL от кого-то вроде Thawte (это тот, кого мы используем, и он мне нравится). Когда вы устанавливаете Cert на свой сервер, вы хотите убедиться, что веб-сайт принимает только безопасные (SSL) соединения - по крайней мере, для всех страниц с конфиденциальными данными. Например, все формы с данными кредитной карты должны быть отправлены через SSL.
Для (Б) - безопасность кода - это достойно целого книга! Вы должны, например, нет создавать вызовы SQL, просто добавляя данные форм / запросов, собранные с веб-страницы (это оставляет вас уязвимым для атак SQL-инъекция). Все Аргументы SQL должны быть параметризованы. и т. д. и т. д. Никто не может объяснить безопасность в сообщении SO - вам нужно изучить много.
Для (C) - безопасность SQL Server - это тоже сложная тема, но есть несколько ключевых моментов. Основываясь на вашем описании, я предполагаю, что SQL Server работает на том же сервере, что и ваше веб-приложение. Это означает, что вы действительно хотите, чтобы НЕТ принимал соединения ЛЮБОЙ из сети. Не поддавайтесь соблазну оставить это открытым, чтобы вы могли легко получить к нему доступ из SQL Management Studio на своем рабочем столе ... это просто ужасная глупая практика безопасности. Вы можете получить к нему доступ через удаленный рабочий стол после входа на удаленный сервер. Кроме того, отключите учетную запись «sa» - просто сделайте это прямо сейчас. Люди, обнаружившие вас на порте 1433 (если вы не отключите весь доступ к сети), будут подбрасывать пароль грубой силы для учетной записи sa каждую секунду, каждую минуту и т.д. в течение многих лет. Мы получаем около 17 000 в день в базе данных, не связанной с веб-сайтом, которую мы обслуживаем для нескольких клиентов. Здесь есть чему поучиться, но если вы сделаете эти два шага, все будет хорошо. Однако на всякий случай я рекомендую вам также запустить инструмент анализа поверхности безопасности MS и, при необходимости, следовать его рекомендациям, чтобы уменьшить видимость вашего SQL Server.
Что касается хостинга виртуальных машин, то должен будет в порядке. Однако выделенный хостинг стоит всего около 199 долларов в месяц по цене МаксимумASP (кого я использую, рекомендую и считаю одними из лучших в бизнесе!). Я бы порекомендовал вам рассмотреть возможность использования собственного выделенного сервера, чтобы вы могли легко масштабировать свой бизнес, если он окажется успешным.
Что касается вашей базы данных, SQL Server Express будет работать для этого, и, да, вы можете перейти на версию Workgroup Edition в будущем. Ограничения базы данных не станут узким местом для вашего веб-сайта, если вы не достигнете этих ограничений. Вам нужно будет выяснить, вероятно ли это. При этом нет действительно рекомендовал бы попробовать запустить профессиональный веб-сайт на бесплатной версии базы данных MS, особенно на том, который содержит финансовые данные. При любом успехе вы находятся, скорее всего, выйдете за эти пределы. Многие веб-хостинговые компании (и в частности MaximumASP) позволят вам добавить профессиональную версию SQL Server к цене вашего сервера по минимальной цене (например, 25 долларов в месяц или что-то подобное).
Наконец, вы, похоже, немного запутались в сравнении веб-приложений с приложениями для Windows. В веб-приложении ваши пользователи не будут иметь доступа к вашему исходному коду / библиотекам DLL (IIS блокирует доступ к различным файлам, включая библиотеки DLL и файлы .config). Они не загружают и не устанавливают приложение, поэтому вам не нужно подписывать код и не нужно обфускации. «Защита отражателя» для меня даже не имеет смысла в этом контексте.
Если вы беспокоитесь о том, что ваш хостинговая компания увидит ваш код, вам следует найти другую хостинговую компанию. При этом я просто не могу представить, что какая-либо уважаемая хостинговая компания действительно заботится о том, чтобы увидеть ваш исходный код.
Удачи!
Хороший пост, но я не согласен с вами насчет «виртуальных» выделенных серверов. мы размещаем на нашей платформе несколько довольно мощных виртуальных серверов. Они не являются «хобби» и полностью подходят для приложений с высокой посещаемостью.
Спасибо, Кев - я внес поправки в свой пост. Некоторое время я пользовался виртуальным сервером Virtuozzo для конкретного клиента, и, хотя в целом он работал довольно хорошо, он вызвал у нас больше сбоев, чем любой из наших выделенных серверов. Конечно, сейчас это технология Старый!
Если все сделано правильно, это работает как мечта. У нас 64 ГБ памяти / 16 ядер на узел, внутреннее хранилище - это EMC Clariion SAN / RAID с дисками SAS и т. д. Сейчас мы запускаем на нем всю нашу общую платформу (1200 сайтов на сервер - 15 виртуальных машин, разделенных на 2 узла) и он рвет.
Ну вот и железо большой. Думаю, я не думал о том, сколько огневой мощи можно использовать на одном сервере.
Мало того, такие уловки, как возможность перенести виртуальную машину с одного узла на другой без ведома клиента, тоже очень круты. Я добавил комментарий к вашим наблюдениям по поводу моего ответа, без обид.
Это VPS, а не VDS, пожалуйста, отредактируйте ...