Angular 6: xyz.service.ts работает на стороне клиента или сервера? Разоблачение API-URL / DB-Passwords? - PullRequest
0 голосов
/ 02 июля 2018

Сейчас я работаю над инструментами, пробую кое-что, и в данный момент я работаю с Angular.

Я наткнулся на это Учебное пособие , и я следовал инструкциям и получил базовый пример: Приложение работает

Теперь в data.service.ts я определил метод getUsers ()

getUsers() {
  return this.http.get('https://jsonplaceholder.typicode.com/users')
}

В учебном пособии используется jsonplaceholder-api.
Мой вопрос: если бы я создал приложение с Angular и опубликовал его, может ли Пользователь увидеть API-URL или Typescript / Javascript работает на Node.js на стороне Сервера, а клиент видит только запрос 'getUsers ()' и отвечающий JSON без фактического API-URL?

Во-вторых, если я хочу использовать свою собственную базу данных для пользователей, нужно ли мне создавать API для моей, скажем, MySQL-DB, или я могу подключиться напрямую к БД, как с помощью этого JavaScript-фрагмента:

var mysql = require('mysql')

var con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'test',
    database: 'my_schema',
});

Скажем, возможно ли прямое подключение к базе данных, подобной этой, - возникнет ли проблема безопасности, поскольку соединение с БД будет построено на стороне клиента и, возможно, предоставит пароль?

1 Ответ

0 голосов
/ 05 июля 2018

Допустим, возможно ли прямое подключение к базе данных, подобной этой - будет ли проблема безопасности, потому что соединение с БД будет построено на стороне клиента и, возможно, предоставит пароль?

Да , существует проблема безопасности; однако, это может соответствовать вашему случаю использования, если это программное обеспечение, управляемое клиентом.

Во-вторых, если я хочу использовать свою собственную базу данных для пользователей, могу ли я нужно создать API для моего, скажем, MySQL-DB, или я могу подключиться непосредственно в БД, как в этом фрагменте JavaScript:

Я бы порекомендовал создать API (например, RESTful) и интегрировать аутентификацию клиента / пользователя, которая проверяется на сервере, прежде чем получить доступ к любой полезной информации со всеми возможными последствиями. (encryption-in-transit, hashing, endpoint и т. Д.).

Это зависит от того, для чего используется ваше программное обеспечение. Если это всего лишь мини-проект для тестирования Angular вещей, то не стесняйтесь сосредоточиться на изучении фронт-энда разработки.

Удачи!

Любой локальный код JavaScript может быть взломан, проанализируйте риск раскрытия любых открытых ключей API, встроенных в ваш код. Вы можете зашифровать локальные файлы базы данных, но если шифрование осуществляется только клиентом, это тоже небезопасно.

Вкладка Chrome DevTools Network на этой странице переполнения стека. Возможно, вы знакомы с этим. Хотя я не заметил никаких объектов JSON в телах ответов, вы понимаете суть. Те же самые компоненты http, которые вы используете для доступа к API-интерфейсам в вашем коде, доступны здесь совершенно ясно.

Я почти уверен, что в этом примере не раскрываются опасные ключи API. Не указывайте мне это Помогите мне Ctrl + Сдвиг + I

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...