Я работаю на довольно простом сервере Node, но мне нужны некоторые рекомендации о том, как предотвратить доступ из нежелательного происхождения.Безопасность Node.js - сквозной доступ?
Мой сервер обслуживает две страницы - имена страниц отображаются в третьем блоке кода.
Обе страницы подключаются к базе данных Mongo.
Чтобы проверить инъекции сценария, я использую следующий код и запускать его локально с помощью простого .html файла:
quizxhr = new XMLHttpRequest();
var url = 'https://cryptic-sierra-4333.herokuapp.com/putQuizData';
quizxhr.open("POST", url, true);
quizxhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
quizxhr.onreadystatechange = createMarkers();
quizxhr.send(quizItemToSend);
и
xhr = new XMLHttpRequest();
var url = 'https://cryptic-sierra-4333.herokuapp.com/putHackedData';
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = displayHackedData
xhr.send(itemToSend);
Попытки предотвратить другое происхождение от обращений к базы данных, я попытался использовать эту строку:
response.header("Access-Control-Allow-Origin", "https://cryptic-sierra-4333.herokuapp.com/", "https://cryptic-sierra-4333.herokuapp.com/admin");
Это не помешало моему местному fi le от доступа к базе данных.
Я потратил некоторое время на изучение возможных решений, но ничто не показалось мне очевидным решением. Возможно, я не очень хорошо разбираюсь в своей проблеме, или мне может не хватать ключевой словарный запас.
Любая помощь будет принята с благодарностью.
Заранее спасибо.
Локальные файлы, вероятно, происходят из одной и той же сети. Из какой сети происходят локальные файлы? Пробовали ли вы это из несетевого местоположения и/или имели ли ваш местный запрос обманывать запрос иностранного происхождения? CORS предназначен для остановки запросов на внешнюю сеть (или их разрешения). – Shilly
Заголовки Access-Control будут препятствовать отправке запросов, которые в противном случае вы не смогли бы отправить через стандартную HTML-форму. В этом случае вы делаете запрос POST с типом содержимого 'application/x-www-form-urlencoded'. Это легко сделать с обычной формой HTML и, следовательно, не будет предотвращено браузером. Если вы измените метод HTTP на «PUT» или измените тип контента на «application/json», вы должны увидеть, что браузеры предупреждают об этом. – idbehold
@Shilly Мое приложение работает на Heroku, и я запускаю hack-файл .html локально. После запуска локального взлома, обновление на Heroku показывает новые записи в базе данных. Я считаю, что это адекватно проверяет запрос иностранного происхождения, нет? – user3342322