Хорошо, давайте сначала рассмотрим параметры:
Опция 1
Во-первых, app.config
не является безопасным, если строка подключения находится в чистом тексте.Вы можете зашифровать часть файла конфигурации, что может повысить безопасность.Далее идет декомпиляция кода.Это то, что вы вообще не можете делать.Независимо от того, какой уровень запутанности вы добавляете в свой код или насколько вы его минимизируете, он всегда будет декомпилируемым.В конце концов, ваш компьютер должен прочитать код, верно?Так что да, запутывание может повысить безопасность исходного кода вашего приложения.Однако это не гарантирует 100% безопасности.
И не уверен, насколько вы опытны с базами данных, но, как вы сказали, у вас есть конечный пользователь SQL-сервера, который может выполнять только определенные хранимые процедуры, тогда почему вы беспокоитесь о том, что кто-то получит доступ к вашим паролям??
И это также заставляет меня задуматься, почему вы беспокоитесь о хешированных + соленых паролях.Если ваше приложение не генерирует миллиарды долларов и вы не управляете рынком, таким как Google или Facebook, дайте мне причину, почему я взломал бы вашу систему?Просто чтобы посмотреть, какой скин вы применили к SSMS?
Вариант 2
Теперь мы говорим!Итак, если мы хотим поговорить о Web API , давайте сначала забудем о безопасности.
Допустим, пользователь, используя ваше приложение для настольного компьютера, пытается вставить его / ееданные в базу данных напрямую, без каких-либо веб-API.Предположим, когда он нажимает « Register » или что-то подобное, интернет-соединение пользователя падает.Вы знаете, что будет дальше?Пользователь открыл соединение с вашей базой данных, пытается вставить некоторые данные, но прежде чем база данных действительно сможет получить все данные, которые нужно вставить, приложение теряет соединение, ваш запрос SQL либо неполный, либо становится странным, этот запрос выполняетсяи БУМ! Вся таблица повреждена!Ну, иногда случается еще хуже, но, эй, позвольте мне больше не пугать вас.
A Web API избавит вас от этого.Я не буду вдаваться в подробности, но самая простая логика такова:
Либо вы вызываете API должным образом, и API выполняет вызовы из базы данных, либо вы не делаете правильный вызов, а API не 'Продолжить вызов базы данных.
API также дает вам больший контроль над тем, что на самом деле кто-то может получить от ваших серверов.У вас также есть огромное преимущество, когда речь заходит о масштабируемости.Поскольку вы вносите столько же обновлений в свой веб-API и базу данных, ничего не делая с приложением конечного пользователя, снижая потребности пользователя в загрузке каждого обновления.
Теперь давайте проясним одну вещь.Веб-сервис и веб-API - это две разные вещи (хотя и тесно связанные).В любом случае, запрос, который вам нужно сделать, чтобы получить данные из веб-API, называется GET
запросом.Когда вы хотите вставить данные, вам нужно сделать запрос POST
.Чтобы удалить, вам нужно сделать запрос Delete
, чтобы обновить, вы можете выбрать PUT
или PATCH
.
. Как вы обрабатываете данные по каждому запросу, это совершенно другая тема.Вы можете Google для этого.Но я сделаю это легко для вас.Пойдите с этим: Учебник по Asp.Net Core 2.0 Web API .
Кроме того, обязательно включите " RESTful " в ваш поискзапросы.
В любом случае, лучший вариант для вас - это комбинация Опция 1 & Опция 2 .
- Вы можете зашифровать части строки подключения
- Запутать код
- Создать RESTful Web API
- Создать пользователей уровня сервера SQL с ограниченными разрешениями.
- Обеспечение безопасности вашего сервера (это совсем другая тема)
- Мониторинг входящих / исходящих вызовов с помощью соответствующих инструментов и установка границ.
Полагаю, это все, что вы можете сделать сейчас. Но если у вас есть много ресурсов, таких как, скажем, миллиарды долларов, таких как Google или Facebook, вы можете добавить больше к своей безопасности!
Приветствие.