How to store password securely in your local/custom database in Node.js ? Last Updated : 22 Jul, 2020 Comments Improve Suggest changes Like Article Like Report The custom database signifies the local database in your file system. There are two types of database 'SQL' and 'NoSQL'. In SQL database data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. We can also create our own database or datastore locally in Nosql manner. There are some steps involve in creating the local database and add records to it. These steps are as follows: Create package.json file in root of project directory using the following command: npm init -y Install express and body-parser package using the following command npm install express body-parser Create a GET route to show the form(HTML form to submit the information to the database). Create the subsequent post route to handle the form submission request. Set the server to run on a specific port(Developer's port - 3000). Create a repository file and add all the logic related to creating database. Hashed and Salt raw password. Store the record along with encrypted password into the local database. Example: This example illustrates how to store password securely (Hashed+Salt) in the local database. Filename: index.js javascript const express = require('express') const bodyParser = require('body-parser') const repo = require('./repository') const app = express() const port = process.env.PORT || 3000 // The body-parser middleware to parse form data app.use(bodyParser.urlencoded({ extended: true })) // Get route to display HTML form app.get('/signup', (req, res) => { res.send(` <div> <form method='POST'> <div> <div> <label id='email'>Username</label> </div> <input type='text' name='email' placeholder='Email' for='email'> </div> <div> <div> <label id='password'>Password</label> </div> <input type='password' name='password' placeholder='Password' for='password'> </div> <div> <button>Sign Up</button> </div> </form> </div> `) }) // Post route to handle form submission logic // and Add data to the database app.post('/signup', async (req, res) => { const { email, password } = req.body const addedRecord = await repo.create({ email, password }) console.log(addedRecord) res.send("Information added to the " + "database successfully.") }) // Server setup app.listen(port, () => { console.log(`Server start on port ${port}`) }) Filename: repository.js This file contains all the logic to add new record with secure password to the database. javascript // Importing node.js file system, // util, crypto module const fs = require('fs') const util = require('util') const crypto = require('crypto') // Convert callback based scrypt method // to promise based method const scrypt = util.promisify(crypto.scrypt) class Repository { constructor(filename) { // The filename where datas are // going to store if (!filename) { throw new Error( 'Filename is required to create a datastore!') } this.filename = filename try { fs.accessSync(this.filename) } catch (err) { // If file not exist it is created // with empty array fs.writeFileSync(this.filename, '[]') } } // Method to fetch all records async getAllRecords() { return JSON.parse( await fs.promises.readFile(this.filename, { encoding: 'utf8' }) ) } async create(attrs) { const records = await this.getAllRecords() const { email, password } = attrs // SALT const salt = crypto.randomBytes(8).toString('hex') // HASHED buffer const hashedBuff = await scrypt(password, salt, 64) // HASHED and SALTED password const hashedSaltPassword = `${hashedBuff.toString('hex')}.${salt}` // Create new record with hashed and // salted password instead of raw password const record = { ...attrs, password: hashedSaltPassword } records.push(record) // Write all records to the database await fs.promises.writeFile( this.filename, JSON.stringify(records, null, 2) ) return record } } module.exports = new Repository('datastore.json') Filename: Package.json file package.json Form to submit the responses Note: Here two responses are submitted one after other and all the responses are stored in datastore.json file. Redirected page after submitting the request Redirected page after submitting the form Run index.js file using the following command: node index.js Output: Output Database: Database Note: For the first time running the program database(datastore.json) file not exist in the project directory, it created dynamically after running the program and store the submitted response. After that, all the submitted responses are appended in the database one by one. Comment More infoAdvertise with us Next Article How to store password securely in your local/custom database in Node.js ? hunter__js Follow Improve Article Tags : Web Technologies Node.js Node.js-Misc Similar Reads How to add records in your own local/custom database in Node.js ? The custom database signifies the local database in your file system. There are two types of database 'SQL' and 'NoSQL'. In SQL database data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. We can also cre 3 min read How to update a record in your local/custom database in Node.js? The custom database signifies the local database in your file system. There are two types of database âSQLâ and âNoSQLâ. In SQL database, data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. We can also cr 4 min read How to add unique Id to each record in your local/custom database in Node.js ? The custom database signifies the local database in your file system. There are two types of database âSQLâ and âNoSQLâ. In SQL database data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. We can also cre 4 min read How to delete a record from your local/custom database in Node.js ? The custom database signifies the local database in your file system. There are two types of database âSQLâ and âNoSQLâ. In SQL database, data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. We can also cr 3 min read How to find record by Id from local/custom database in Node.js ? The custom database signifies the local database in your file system. There are two types of database âSQLâ and âNoSQLâ. In SQL database data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. we can also cre 3 min read How to find record using any key-value pair information of record in your local/custom database using Node.js ? The custom database signifies the local database in your file system. There are two types of database âSQLâ and âNoSQLâ. In SQL database data are stored as table manner and in Nosql database data are stored independently with some particular way to identify each record independently. We can also cre 5 min read How to secure database passwords in PHP? Most of the websites are providing sing up and login facility to the user. User has to create a password and use it for login to the website. But it is very important to secure the password of the user. password_hash() function provides the facility to securely store the password of the user to the 1 min read How to Connect to a MySQL Database Using the mysql2 Package in Node.js? We will explore how to connect the Node.js application to a MySQL database using the mysql2 package. MySQL can be widely used as a relational database and mysql2 provides fast, secure, and easy access to MySQL servers, it can allow you to handle database queries efficiently in Node.js applications. 6 min read How to Insert and Select Data in SQLite3 Database using Node.js ? Inserting and selecting data in an SQLite3 database using Node.js involves connecting to the database, running SQL queries, and handling the results. SQLite is an excellent choice for small to medium-sized applications due to its simplicity and lightweight nature. This guide will walk you through th 3 min read How to securely handle sensitive data like passwords or tokens in Postman? When dealing with sensitive data like passwords or tokens, it's crucial to follow best practices to ensure the security of your applications. In this guide, we will walk you through the step-by-step process of securely handling sensitive data in Postman.We will be receiving JSON data when sending GE 3 min read Like