在CentOS系统上配置Node.js以增强安全性是一个涉及多个方面的过程。以下是一些关键的安全配置步骤和建议:
sudo yum update -y
sudo yum install -y epel-release
sudo yum install -y nodejs npm
/etc/profile
或 ~/.bashrc
文件,设置Node.js和npm的路径。export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
source /etc/profile
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install 14
nvm use 14
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo npm install -g https-express
const validator = require('validator');
const email = 'foo@bar.com';
console.log(validator.isEmail(email)); // true
const mysql = require('mysql');
const connection = mysql.createConnection({ host: 'localhost', user: 'me', password: 'secret', database: 'my_db' });
connection.connect();
connection.query('UPDATE users SET ? WHERE id = ?', [req.body.first_name, 1001], function (err, result) { /* ... */ });
const crypto = require('crypto');
const secret = 'your-secret-key';
function signSession(sessionData) {
const hmac = crypto.createHmac('sha256', secret);
hmac.update(JSON.stringify(sessionData));
return hmac.digest('hex');
}
function verifySession(sessionData, signature) {
const newSignature = signSession(sessionData);
return newSignature === signature;
}
app.use((req, res, next) => {
if (req.ip !== '123.123.123.123') {
return res.status(403).send('Forbidden');
}
next();
});
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
firewalld
或 iptables
控制网络流量,仅允许必要端口和服务访问。journalctl
等工具监控系统日志,及时发现并处理异常行为。通过以上步骤和建议,你可以显著提高在CentOS上运行的Node.js应用的安全性,降低遭受攻击的风险。记住,安全是一个持续的过程,需要定期审查和更新你的安全策略。