У меня есть сервер node.js, который имеет функции HTTP CRUD для моей mongoDB.
И приложение для Android, которое отправляет запросы через эти функции.
Я хотел бы убедиться, что мой сервер будет отвечать на запросы из определенных источников.
Например: отвечайте только на запросы из приложения для Android или на запросы почтальона моего компьютера.
Как я могу гарантировать, что никто другой, отправляющий запросы с использованием тех же URL-адресов и портов, не получит ответа?
Это мой файл server.js:
const express = require('express');
const MongoClient = require('mongodb');
const bodyParser = require('body-parser');
var db = require('./config/db');
var app = express();
const port = 8000;
app.use(bodyParser.json());
MongoClient.connect(db.url, (err, database) => {
if (err) return console.info(err)
db = database.db("getremp")
require('./app/routes')(app, db);
app.listen(process.env.PORT || port, () => {
console.info("Express server listening on port %d in %s mode - We Are lIVE!",app.settings.env.port, app.settings.env);
});
})
и мой index.js:
const noteRoutes = require('./note_routes');
module.exports = function (app, db) {
noteRoutes(app, db);
};
Вы можете контролировать это с помощью:
Отправьте определенный заголовок с вашими данными, содержащими секретный ключ, а затем управляйте заголовком в приложении узла Как проверить заголовки в nodejs?.
Используйте HMAC для аутентификации пользователя и контроля целостности данных: Аутентификация узла Hmac
Но вы должны помнить, что весь трафик, исходящий из мобильного приложения, может быть перехвачен (например, с помощью Fiddler). Никогда не используйте статическое (нединамическое) значение для обеспечения аутентификации.
с заголовком вам просто нужно будет зарегистрировать новое промежуточное программное обеспечение в вашем экспресс-приложении, в вашем приложении вам нужно будет добавить заголовок при каждом вызове вашего API
Я действительно не понимаю, где и как именно я могу использовать это на стороне сервера один раз.. по присланному вами примеру я вижу, что он использует req.headers... это вы получаете внутри функций API..
Извините.. я все еще изучаю Node.js.. Я видел, что могу просто добавить промежуточное программное обеспечение, используя эти функции. Как видно здесь: stackoverflow.com/questions/46094417/… Большое спасибо!
Мне нужно будет изменить каждую функцию на моем сервере и каждую функцию в моем приложении, чтобы проверить/отправить заголовок?