面试题答案
一键面试1. 使用模块作用域
在 Node.js 中,每个模块都有自己的作用域,外部代码无法直接访问模块内部的变量和函数。这可以防止外部恶意调用敏感方法。例如:
// 自定义模块 myModule.js
// 定义一个敏感函数
function sensitiveFunction() {
console.log('这是一个敏感函数');
}
// 定义一个公开函数,用于安全调用敏感函数
function publicFunction() {
// 可以在这里添加一些安全检查逻辑
sensitiveFunction();
}
// 导出公开函数
module.exports = publicFunction;
2. 导出控制
只导出允许外部调用的方法,不导出敏感方法。如上述代码,只导出 publicFunction
,而不导出 sensitiveFunction
。这样外部代码就无法直接调用 sensitiveFunction
。
3. 进一步安全措施
- 参数验证:在公开函数中对传入的参数进行验证,防止恶意参数导致敏感方法的异常行为。
- 权限检查:在公开函数中添加权限检查逻辑,只有满足特定条件(如特定的环境变量、认证信息等)才能调用敏感方法。例如:
// 自定义模块 myModule.js
function sensitiveFunction() {
console.log('这是一个敏感函数');
}
function publicFunction() {
// 权限检查,假设环境变量中存在特定值才允许调用
if (process.env.SECURE_FLAG === 'true') {
sensitiveFunction();
} else {
console.log('权限不足,无法调用敏感函数');
}
}
module.exports = publicFunction;
通过以上这些措施,可以有效地对 Node.js 自定义模块进行安全封装,防止外部恶意调用敏感方法。