写道
You must be very careful with security when executing JavaScript on the server. If done
incorrectly, server-side JavaScript is susceptible to injection attacks similar to those that
occur in a relational database. However, by following certain rules around accepting
input, you can use JavaScript safely. Alternatively, you can turn off JavaScript execution
altogether by running mongod with the --noscripting option.
The security issues with JavaScript are all related to executing user-provided programs
on the server. You want to avoid doing that, so make sure you aren’t accepting user input
and passing it directly to mongod. For example, suppose you want to print “Hello,
name!”, where name is provided by the user. A naive approach might be to write a Java‐
Script function such as the following:
> func = "function() { print('Hello, "+name+"!'); }"
If name is a user-defined variable, it could be the string "'); db.dropDatabase();
print('", which would turn the code into this:
> func = "function() { print('Hello, '); db.dropDatabase(); print('!'); }"
Now, if you run this code, your entire database will be dropped!
incorrectly, server-side JavaScript is susceptible to injection attacks similar to those that
occur in a relational database. However, by following certain rules around accepting
input, you can use JavaScript safely. Alternatively, you can turn off JavaScript execution
altogether by running mongod with the --noscripting option.
The security issues with JavaScript are all related to executing user-provided programs
on the server. You want to avoid doing that, so make sure you aren’t accepting user input
and passing it directly to mongod. For example, suppose you want to print “Hello,
name!”, where name is provided by the user. A naive approach might be to write a Java‐
Script function such as the following:
> func = "function() { print('Hello, "+name+"!'); }"
If name is a user-defined variable, it could be the string "'); db.dropDatabase();
print('", which would turn the code into this:
> func = "function() { print('Hello, '); db.dropDatabase(); print('!'); }"
Now, if you run this code, your entire database will be dropped!
mongo db 以 javascript 作为脚本语言,
用户可以输入一段恶意的javasript,
比如
前台页面有一个input,让用户输入用户名
但用户输入了类似如下脚本并提交,
'); db.dropDatabase();('
就会删除掉数据库。
解决方法
--noscripting 关闭执行用户输入的javascript,可以避免类似sql注入的攻击。
1. 安装的时候需要加–auth
加了–auth之后MongoDB才需要验证
2. 需要加–nohttpinterface
不加会有一个28017的端口监听,可以通过网页管理mongodb,不需要请去掉
3. 可以加–bind_ip
加之后可以限制访问的ip
4. 可以加–port
加了之后可以重新制定端口,默认为27017
5. 安装完之后需立即在admin数据库中添加一个用户
只有在admin数据库中添加一个用户后才能使认证生效
相关推荐
MongoDB 安全认证 MongoDB 安全认证是 MongoDB 中的安全机制,用于保护 MongoDB 数据库免受非法访问和操作。 MongoDB 安全认证可以分为单服务器认证和副本集认证两种情况。 单服务器认证 在单服务器中,MongoDB ...
MongoDB数据库使用方法及安全配置,有兴趣的可以下载,
Sre-SOAM-010:mongoDB安全基线
本文将详细介绍十个提高MongoDB安全性的配置技巧,帮助确保您的数据免受潜在威胁。 1. **启用身份验证(auth)**:无论是在本地还是云环境中,启用身份验证都是基本的安全实践。这能为MongoDB提供一层额外的防护,...
本文将详细介绍MongoDB安全相关的内容 概述 MongoDB安全主要包括以下4个方面 1、物理隔离 系统不论设计的多么完善,在实施过程中,总会存在一些漏洞。如果能够把不安全的使用方与MongoDB数据库做物理上的隔离,即...
为了帮助用户在部署MongoDB之后快速有效地进行安全配置,本文将介绍一系列安全措施,从而抵御黑客攻击。本文选取MongoDB 3.4版本在Ubuntu操作系统上的配置为例,详细展示如何检测和修补安全配置问题。 操作系统级别...
在处理海量数据时,MongoDB提供了很多高级管理功能来确保数据的安全性和一致性。本篇将重点介绍MongoDB的安全机制和高级管理功能,包括数据复制、异常处理、进程控制等。 数据复制是分布式数据库系统的基础特性之一...
2.漏洞成因在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息 3.漏洞自查如果您是MongoDB
MongoDB是一个基于文档的NoSQL数据库,由C++语言编写,旨在为大量分布式数据提供高性能、高可用性和高灵活性的数据存储解决方案。MongoDB的主要特点包括: 1. **文档导向**:MongoDB存储BSON(二进制JSON)格式的...
MongoDB安全管理 MongoDB支持用户认证和角色管理,以保护数据库安全。你可以通过`db.createUser()`创建用户,并指定相应的角色(如读写权限)。配置文件中的`security`部分可以启用身份验证。 ### 7. 复制集和分片...
管理MongoDB安全方面,要确保数据的安全性,需要设置访问控制列表(ACL),实施用户身份验证和角色基础的访问控制。对于敏感数据,应当采用加密的方式来保护。还应该定期进行安全审计,确保数据库的安全策略得以执行...
#### 五、MongoDB安全性 1. **认证机制** - 设置管理员账号,启用身份验证。 - 使用`net.bindIp`限制访问IP地址。 2. **加密** - 通过TLS/SSL加密数据传输。 - 加密存储在磁盘上的数据。 3. **审计日志** - ...
然而,随着数据安全的重要性日益凸显,正确配置MongoDB的安全设置变得至关重要。本文将深入探讨MongoDB的安全配置,主要包括权限介绍、用户角色说明以及最佳实践。 首先,MongoDB的安全配置始于权限验证。默认情况...
MongoDB安全性 - 用户认证通过`use admin`切换到管理员数据库,然后执行`db.createUser()`创建用户。 - 角色管理允许对用户权限进行细粒度控制,如只读、只写、管理员角色。 - 通过`security`配置项启用SSL加密...
5. 配置MongoDB安全: 默认情况下,MongoDB在安装后不会开启访问控制,为了提高安全性,需要创建一个管理员用户并启用身份验证。首先,以不安全的方式启动MongoDB: ``` sudo systemctl stop mongod sudo mongod...