Я делаю веб-приложение с реагировать. Для аутентификации я использую firebase auth, а для хранения данных у меня есть express backend с postgresql.
В данный момент для получения пользовательских данных из моего бэкэнда я отправляю idToken текущего пользователя (предоставлен из firebase). Затем в своем бэкэнде я проверяю idToken с помощью firebase sdk. Это достаточно безопасно?
В будущем я собираюсь добавить функции платежей. Достаточно ли безопасно проверить пользователя, который платит с помощью firebase idToken, а затем принять платеж?
Я абсолютно новичок в безопасности!
Вот так я получаю / обновляю и создаю новый пользователь:
const getUserById = (request, response) => { //Dammi l'utente con il tokenID passato
const idToken = request.params.idToken
utils.firebase.auth().verifyIdToken(idToken)
.then(function(decodedToken){
let uid = decodedToken.uid
utils.pool.query('SELECT * FROM users WHERE uid = $1', [uid], (error, results) => {
if (error) {
throw error
}
response.status(200).json(results.rows)
})
}).catch(function(error) {
// Handle error
});
}
const createUser = (request, response) => { //Crea nuovo user
const { idToken, fullname} = request.body
utils.firebase.auth().verifyIdToken(idToken) //Verifico il token utente in ingresso
.then(function(decodedToken) { //se è verificato allora estraggo l'uid
let uid = decodedToken.uid;
console.log("Registered new User, UID: " + uid)
console.log("name: " + fullname)
utils.pool.query('INSERT INTO users (uid,fullname) VALUES ($1, $2)', [uid, fullname], (error, results) => {
if (error) {
throw error
}
response.status(201).send(`User added with ID: ${results}`)
})
}).catch(function(error) {
// Handle error
});
}
const updateUser = (request, response) => { //Aggiorna le info dell'utente, nome e biografia, l'email verrà gestita da firebase
const idToken = request.params.idToken
const { fullname, bio } = request.body
utils.firebase.auth().verifyIdToken(idToken) //verifico che il token sia vero
.then(function(decodedToken){
let uid = decodedToken.uid //estrapolo lo uid dell'utente
console.log("Edited the user: " + uid)
console.log("Name: " + fullname)
utils.pool.query(
'UPDATE users SET fullname = $1, bio = $2 WHERE uid = $3', [fullname, bio, uid], (error, results) => {
if (error) {
throw error
}
response.status(200).send(`User modified with ID: ${results}`)
}
)
})
}
Может кто-нибудь объяснить мне, если есть проблемы с безопасностью ?? А минимальные правила безопасности для пу sh веб-приложения + nodejs на производстве безопасно?