Нужно ли расширять ASP.NET Security для публичного сайта?
У меня есть сайт ASP.NET MVC с приложением для администрирования частного сайта, защищенным с помощью sql-авторизации ASP.NET. Мне нужно добавить логин для публичного сайта, чтобы посетители могли зарегистрироваться.
Я думаю, что мне следует создать полностью отдельное хранилище для публичного сайта, а не расширять существующую базу данных пользователей и полагаться на роли, чтобы не публиковать публичных пользователей в бэк-офисе. Есть ли причина не делать этого?
3 ответа
Да, есть. Вы можете изолировать частную базу данных от публичной базы данных. Создайте 2 учетные записи пользователей базы данных, убедитесь, что они имеют доступ только к 1 необходимой базе данных. Публичные и частные приложения будут использовать разные учетные записи. Затем заблокируйте учетные записи базы данных, чтобы убедиться, что у них есть только те права, которые необходимы для работы веб-приложения. (Я не уверен, какую базу данных вы используете. Если вы используете ms-sql, убедитесь, что у них нет доступа к xp_cmdshell, если вы находитесь под mysql, убедитесь, что у учетной записи нет привилегий FILE. Есть и другие соображения. но это выходит за рамки этого вопроса.)
Если в общедоступной части вашего сайта будет обнаружена уязвимость SQL-инъекций, они смогут получить доступ к этой единой базе данных, оставив ваш частный сайт незатронутым атакой.
Будет ли у вас когда-нибудь пользователь с несколькими ролями? Не могли бы вы в конечном итоге хранить одного и того же пользователя в более чем одной базе данных? Если это так, я бы держал ваших пользователей в единой БД.
Время и потенциально деньги были бы одной из причин. В противном случае, если у вас есть время. В зависимости от необходимости, не зная точно под рукой, это может также добавить много сложностей...
НТН.