Я разработал SPA с помощью Firebase и Vue. js, и я проверяю свой SPA на уязвимости с помощью OW ASP ZAP. Мне не удалось устранить три уязвимости, обнаруженные OW ASP ZAP. Я хотел бы знать, как можно устранить эти три уязвимости или нужно ли их устранять в первую очередь.
Предупреждения, выводимые OWAZAP, перечислены ниже.
- Идентификатор сеанса в URL Rewrite
Описание: Эта страница содержит сообщение об ошибке / предупреждении, которое может раскрыть конфиденциальную информацию, такую как расположение файла, который вызвал необработанное исключение. Эта информация может быть использована для дальнейших атак на веб-приложение. Предупреждение может быть ложным срабатыванием, если сообщение об ошибке находится на странице документации.
Решение: Для безопасного содержания введите идентификатор сеанса в Cook ie. Для большей безопасности рассмотрите возможность использования комбинации cook ie и перезаписи URL.
URL① (метод GET) https://firestore.googleapis.com/google.firestore.v1.Firestore/Listen/channel?database=projects%project name% 2Fdatabases% 2F (по умолчанию) & gsessionid = xxxxxxx = 8 & RID = xxx & SID = xxxxxxxx = 0 & AID = x & TYPE = xmlhttp & zx = xxxxxxx
URL② (Метод POST) https://firestore.googleapis.com/google.firestore.v1.Firestore/Listen/channel?database=projects%2Fproject name3% 2Fdatabases% 2F (по умолчанию) & VER = 8 & gsessionid = xxxxxx = x xxxxxxxx & RID = xxxxx & TYPE = terminate & zx = xxxxxxx
Я подумал, что идентификатор сеанса не следует включать в URL-адрес. Это безопасно? Мне нужно что-то с этим делать?
Междоменная неверная конфигурация
Описание: загрузка данных веб-браузера возможна из-за неправильной конфигурации Cross Origin Resource Sharing (CORS) на веб-сервере
Решение: Убедитесь, что конфиденциальные данные недоступны без аутентификации (например, с помощью белого списка IP-адресов). Настройте HTTP-заголовок «Access-Control-Allow-Origin» для более ограниченного набора доменов или полностью удалите все заголовки CORS, чтобы разрешить веб-браузеру применять политику одного и того же происхождения (SOP) более ограничительным образом.
URL① https://cdn.jsdelivr.net/npm/@mdi / font@latest/css/materialdesignicons.min.css URL② https://cdn.jsdelivr.net/npm/@mdi / font@latest/fonts/materialdesignicons-webfont.woff2?v=5.3.45 URL③ https://fonts.googleapis.com/css?family=Roboto: 100,300,400,500,700,900
Доказательства: Access-Control-Allow-Origin: *
Сообщение об ошибке приложения
описание: Эта страница содержит сообщение об ошибке / предупреждении, которое может раскрывать конфиденциальную информацию, такую как расположение файла, вызвавшего необработанное исключение. Эта информация может быть использована для дальнейших атак на веб-приложение. Предупреждение может быть ложным, если сообщение об ошибке находится на странице документации. \
Решение: Просмотрите исходный код этой страницы. Реализуйте настраиваемые страницы ошибок. Рассмотрите возможность реализации механизма для предоставления уникальной ссылки / идентификатора ошибки клиенту (браузеру) при регистрации данных на стороне сервера и не раскрытии их пользователю.
URL https://project-name.firebaseapp.com/js/chunk-vendors.70ef397d.js
firebase. json ниже.
{
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"headers":[
{
"source": "**",
"headers":[
{
"key": "X-Frame-Options",
"value": "DENY"
},
{
"key": "Cache-Control",
"value": "private, no-store, no-cache, must-revalidate"
},
{
"key": "X-Content-Type-Options",
"value": "nosniff"
},
{
"key": "X-XSS-Protection",
"value": "1; mode=block"
}
]
}
]
}
}
vue .config. js ниже.
module.exports = {
transpileDependencies: [
"vuetify"
],
configureWebpack: {
devtool: 'source-map'
},
pwa: {
iconPaths: {
favicon16: 'favicon.png',
favicon32: 'favicon.png',
}
}
}