使用 MongoDB PHP 驱动程序时的安全问题

2024-06-26

我有在 MYSQL 上保护 sql 注入的经验,但是在使用 php 驱动程序的 MongoDB 上我应该注意什么?在大多数页面中,我通过 GET/POST 和搜索/插入系统获取数据。我通过 UDID/其他字段进行搜索,并且可以插入任何字符串值。我还通过 javascript 获取用户的 cookie。

  1. 那么当 GET/POST 时,我要添加到每个变量 htmlentities 函数吗?

  2. 什么可以替代 mysql_real_escape_string?我应该使用它吗?

因此,例如,当做

$download = array( 'url' => $_GET['url'] );

$downloads->insert($download); 

这个可以吗?

  1. 有没有办法检查字符串是否真的是 UID?

  2. 还有什么想法我在使用 MongoDB 和 PHP 时应该注意吗?我确实使用 javascript 获取 cookie,并使用 cookie 在我的数据库中搜索。那个怎么样?


那么当 GET/POST 时,我要添加到每个变量 htmlentities 函数吗?

无需。但是,您应该使用htmlentities将用户生成的数据输出到浏览器时,防止 XSS 攻击。

什么可以替代 mysql_real_escape_string?我应该使用它吗?

你不应该使用mysql_real_escape_string因为它是针对 MySQL 的。在 MongoDB 上没有什么可以替代这一点,驱动程序会为您转义数据。

有没有办法检查字符串是否真的是 UID?

验证它的唯一方法是使用该字符串查询 MongoDB 并检查它是否存在。

但是,您可以验证是否格式正确:

$id = '4f1b166d4931b15415000000';
$a = new MongoId($id);
var_dump($a->{'$id'} == $id); // true

$id = 'foo';
$a = new MongoId($id);
var_dump($a->{'$id'} == $id); // false

还有什么想法我在使用 MongoDB 和 PHP 时应该注意吗?我确实使用 javascript 获取 cookie,并使用 cookie 在我的数据库中搜索。那个怎么样?

不多。对于任何 Web 应用程序,您都不应该在 Cookie 中存储敏感数据,例如用户标识符、密码等,因为它们很容易被篡改并用于访问应用程序中应受到限制的部分,或冒充其他用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MongoDB PHP 驱动程序时的安全问题 的相关文章

随机推荐

  • 带有成员 (operator[]) 函数的 invoke_result

    如何为成员函数正确调用invoke result 或者专门用于运算符成员函数 我试过std invoke result
  • 为什么 Swift 语言将 8 位二进制值赋给 Int8 类型的 var 时会出现溢出?

    当我在操场上写下这一行时 let firstBits Int8 0b11111111 出现错误 存储到 Int8 时整数文字溢出 由于 Int8 是有符号值 其范围是从 128 到 127 从左起第一位代表单数 减号或加号 其余 7 位代表
  • 改装和授权标头

    目前 我正在向我的请求添加授权标头 如下所示 文件 SomeFile cs public interface ITestApi Get api test id Task
  • 安装/编译 pylzma(lzma python 绑定)

    我已经向作者提出了这个问题website http www joachim bauch de projects pylzma comment page 1 comment 5211 但我想我也可以在这里问 我一直在尝试使用以下设置安装 py
  • Ansible:findall 正则表达式中变量的正确语法是什么

    我使用的是 Ansible 版本 2 9 我想做一个 GET 它返回一个信息块 从该信息中正则表达式一个 ID 该 ID 对应于我目前正在迭代的任何主机 然后使用该 ID 执行操作 我有正则表达式工作 https regex101 com
  • 从 pdf 和 word 文件中提取文本

    如何在 C 中从 pdf 或 word 文件中提取文本 删除粗体 图像和其他富文本格式媒体 您可以使用专为索引服务设计 由索引服务使用的过滤器 它们旨在从各种文档中提取纯文本 这对于在文档内部进行搜索非常有用 您可以将其用于 Office
  • \ufeff 标识符中的无效字符

    我有以下代码 import urllib request try url https www google com search q test headers usag Mozilla 5 0 Macintosh Intel Mac OS
  • 通过ELB访问AWS EC2实例

    我试图在弹性负载均衡器下设置两个实例 但无法弄清楚应该如何通过负载均衡器访问这些实例 我已经使用安全组设置了实例 以允许从任何地方访问某些端口 我可以使用 公共 DNS publicdns 主机名和端口 PORT 直接访问实例 http p
  • Asp.Net MVC3 - 如何创建动态 DropDownList

    我发现了很多关于此的文章 但我仍然不知道到底如何做到这一点 我正在尝试创建自己的博客引擎 我有用于创建文章的视图 我首先使用 EF 和代码 现在我必须填写应添加文章的类别数量 但我想将其更改为下拉列表 名称为类别 我的模型看起来是这样的 p
  • Hibernate 时间戳 - 毫秒精度

    似乎以毫秒精度存储时间戳是休眠的一个已知问题 我在数据库中的字段最初设置为时间戳 3 但我也尝试过日期时间 3 不幸的是 它没有任何区别 我尝试过使用 Timestamp 和 Date 类 最近我开始使用 joda time 库 经过所有这
  • Swift 3:将 UIButton 扩展添加到 ViewController

    我是 iOS Swift 的初学者 尝试创建一个没有 Storyboard 的简单应用程序 我创建了一个UIButton扩展名 我想在我的视图中添加一个简单的按钮 稍后将设置约束 不幸的是 该按钮不可见 如果有人帮助我 我将不胜感激 谢谢你
  • 查看tomcat服务器的连接数

    我在 Tomcat Server 5 5 17 上部署了一个 Java Java EE Web 应用程序 我想知道连接到服务器的客户端数量 我们怎样才能找到它呢 最可靠的方法是搜索ip addr of srv port in netstat
  • 通过 HTTP 代理进行 iOS XMPP 聊天

    我有一个 iPhone 应用程序 可与 2 项服务配合使用 通过 http 使用 REST 服务 使用 AFNetworking 通过 TCP 进行 XMPP 聊天 使用 XMPPFrameworkhttps github com robb
  • 具有 dropdown-menu-right 类的下拉菜单未向右对齐

    我有以下导航栏结构 current user username 来自我的模板系统 ul class navbar nav mr auto mt 2 mt lg 0 ul div class dropdown show a class dro
  • JS - 文件读取器 API 获取图像文件大小和尺寸

    您好 我正在使用以下代码来使用文件读取器 API 获取上传图像
  • 如何在 Quill(富文本编辑器)中检测和修剪前导/尾随空格?

    如何检测并删除前导 尾随空格Quill https quilljs com 哪个是富文本编辑器 例如 样本HTML下面代表Quill文本的输出 nHi 我们想要检测并删除由以下命令创建的每个文本块的前导和尾随空格Quill 不适用于整个文档
  • 如何制作像 Twitter 一样带有字符限制突出显示的文本区域?

    Twitter 的提交推文文本框会突出显示超出字符限制的字符 如您所见 超出字符限制的字符以红色突出显示 我怎样才能实现这样的目标 您将在这里找到必要的解决方案和所需的代码 超过 140 限制 即变为负数 时如何插入 标签 https st
  • 访问 2010 DLookUp

    第一次使用 MS Access 遇到了一些问题 如果有人可以指出我正确的方向 所以我正在做一个模拟数据库 所以它看起来很傻 只是为了了解细节 目前需要一些有关 DLookUp 的帮助 我的数据库有两个表 具有以下字段 C ID课程PK 学生
  • 预期在模拟中调用一次,但使用 Moq 时调用次数为 0 次

    我收到错误 在mock上调用一次 但是0次 下面是我的代码结构 public class GenerateAddress IGenerateAddress public GenerateAddress IAddress createAdd
  • 使用 MongoDB PHP 驱动程序时的安全问题

    我有在 MYSQL 上保护 sql 注入的经验 但是在使用 php 驱动程序的 MongoDB 上我应该注意什么 在大多数页面中 我通过 GET POST 和搜索 插入系统获取数据 我通过 UDID 其他字段进行搜索 并且可以插入任何字符串