转义字符,例如 $ 和 % | MySQL 和 PHP

2023-12-02

所以基本上我一直在深入研究 MySQL 和 PHP 领域……特别是在处理数据库和表单输入时应该采取的安全措施。到目前为止,我发现强烈推荐以下内容:

  1. 准备好的报表
  2. 使用 mysqli_real_escape_string()
  3. 不要使用魔术引号,因为它会混淆数据库并最终给您提供诸如“您的名字不是……”之类的内容。

所有这一切都很棒,我一直在关注它。然而,我想知道是否也应该转义诸如美元符号 [$]、百分号 [%] 以及其他可能的字符。查询可能无法将美元符号解释为 PHP 变量吗?我听说过使用 % 符号甚至通配符的 LIKE 语法怎么样?从技术上讲,准备好的声明应该能够解决所有这些问题,但我只是想保证安全并确保所有内容都正确逃脱。如果我忘记使用准备好的陈述或只是忽略了这样做,我希望这第二道防线可以让我免于头痛。

这是我目前用于转义的方法:

function escape($connection, $data){
    $new_data = trim($data);
    $new_data = mysqli_real_escape_string($connection, $new_data);
    $new_data = addcslashes($new_data, '%_$');
    $new_data = htmlspecialchars($new_data, ENT_NOQUOTES);

    return $new_data;

}

那么这是否合适呢?我做错了什么可怕的事情吗?请注意,在检索数据库数据时,我必须删除 $、% 和 _ 字符之前的反斜杠。


您不需要转义美元符号。 MySQL 不会特殊对待该字符,并且 PHP 仅在源代码中识别它,而不是在字符串值中识别它(除非您调用eval在绳子上,但那是完全不同的蠕虫)。

你只需要逃离% and _如果您使用用户输入作为参数LIKE并且您不希望用户能够使用通配符。如果您正在处理搜索表单,则可能会出现这种情况。存储到数据库时不需要使用它。

你不需要使用htmlspecialchars访问数据库时。仅当您在 HTML 页面中向用户显示数据时才应使用它,以防止 XSS 注入。

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

转义字符,例如 $ 和 % | MySQL 和 PHP 的相关文章

  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 通过 facebook graph API 检索 facebook 用户的邮政编码

    我正在尝试使用 facebook graph API 检索用户的邮政编码 我正在使用以下代码 代码在php ini中 facebook new Facebook array appId gt APP ID secret gt APP SEC
  • 如何在类似 MVC 的页面中加载基于漂亮 URL 的类?

    我想请教一些关于如何解决这个问题的提示 我正在尝试构建自己的 MVC 网站 我了解了 URL 的基础知识 http example com blog cosplay cosplayer expo today 博客 gt 控制器cosplay
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • apache_request_headers() 与 $_SERVER

    据我所知 apache request headers 提供与以下相同的信息 SERVER 但按键略有不同 为什么有人应该使用apache request headers 而不仅仅是从那里获取这些信息 SERVER 我在 Centos 上使
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • PHP 数组通过 JSON 转为 jquery 数组

    我有点困惑为什么以下不起作用 get php
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 生成重复序列

    我需要使用 R 生成以下格式的向量 1 10 1 10 11 20 11 20 121 130 121 130 有没有比创建 12 个向量然后将每个向量重复两次更简单的方法 你也可以这样做 rep 1 10 26 rep seq 0 120
  • 避免多次快速点击按钮

    我的应用程序有一个问题 如果用户快速单击按钮多次 那么在按住按钮的对话框消失之前就会生成多个事件 我知道一个解决方案 通过在单击按钮时将布尔变量设置为标志 以便可以防止将来的单击 直到对话框关闭 然而 我有很多按钮 每次都必须为每个按钮执行
  • 在 mongodb 集合中查找一些值?

    我正在尝试使用 java 读取 mongodb 用户数据库 在教程页面上我看到了如何阅读整个集合 我可以做这样的事情 DBCursor cursor col find while cursor hasNext System out prin
  • 创建表,检查可能的文本值

    我正在使用 MS Access 2010 并尝试使用 SQL 创建表 我想加入一些检查约束 但我遇到了一些麻烦 CREATE TABLE Test tester Text CHECK tester IN ABC BCD CDE 我遇到语法错
  • `use` 包作用域:如何使其跨文件?

    In scriptA pl 有use DBI In scriptB pl 有require scriptA pl 但我们仍然不能使用DBI包scriptB pl 除了重复之外有任何方法可以处理这个问题use DBI in scriptB p
  • 在 PIL 中制作拼贴画

    我是 卡住 我已经为此工作了一个多星期了 但我似乎无法让我的代码正确运行 我对 PIL 和 Python 整体来说还很陌生 我正在尝试制作一些图片的 2x3 拼贴画 下面列出了我的代码 我试图让我的照片适合新创建的拼贴画中的任何访问黑色空间
  • 如何在 python 3.6 而不是默认的 python 2.7 上安装 pip?

    所以一整天我都在尝试安装pip 我已经执行了curl https bootstrap pypa io get pip py gt get pip py Then sudo python get pip py 接下来我去安装 numpysud
  • 嵌套片段可能吗?

    我有一个 ViewPager 包含三个片段 我想将 3 个新片段放入第三个片段中 这可能吗 ViewPager Fragment 1 Fragment 2 Fragment 3 Fragment 3 1 Fragment 3 2 Fragm
  • 物体(汽车)检测与分割

    I am trying to segment cars from image that consist of only one car and an easy background like but what I get from my i
  • Dictionary.ContainsKey() 未按预期工作

    我有一本字典 Dictionary
  • vim,在html中缩进css和js的正确方法

    老问题找不到正确的解决方案 所以
  • 按report_id获取前'n'条记录

    我的 MSSQL 数据库中有一个简单的视图 它由以下字段组成 report id INT ym VARCHAR YYYY MM keyword VARCHAR MAX visits INT 我可以通过以下查询轻松获得排名前 10 的关键字命
  • 使用鼠标滚轮缩放条形图

    我发现了许多如何放大图表的示例 但我正在寻找用户可以使用鼠标滚轮滚动的基本示例 import javafx application Application import javafx scene Scene import javafx sc
  • 我无法使用 YouTube Data API v3 获取频道 ID

    我试图通过用户名获取 YouTube 频道 ID 但最终我什么也没得到 用户名和 API 密钥正确 可能是什么问题呢 HTTP 请求 https www googleapis com youtube v3 channels part id
  • VirtualAlloc 和 HeapAlloc 有什么区别?

    Windows环境下分配内存的方法有很多 例如VirtualAlloc HeapAlloc malloc new 那么 它们之间有什么区别呢 每个 API 都有不同的用途 每一种方法还要求您在使用完内存后使用正确的释放 释放函数 虚拟分配
  • 如何从 ksqldb 表中删除值或插入逻辑删除值?

    如何通过 Rest api 或至少作为 ksqldb cli 中的语句来标记 ksql 表中的行以进行删除 CREATE TABLE movies title VARCHAR PRIMARY KEY id INT release year
  • PutExtra 在检索器端不起作用

    我想将意图从第一个活动发送到另一个活动 第一个活动向第二个活动发送意图 以便创建一个新的 AlertDialog 从用户接收一个号码并将该号码发送回第一个活动 这就是 putExtra 数据失败的地方 第一个活动的代码 GuessItAct
  • 在 Statsmodel 公式 API 中使用变量代替列名称

    我有一个变量cols包含我的表的列名称列表 现在我想通过循环遍历不同的列来在我的表上运行回归cols多变的 我正在尝试使用 Statsmodel Formula API Patsy 但无法构建正确的公式 我现在正在尝试的代码是 model
  • 如何使用 PHP 从文件夹中读取文件列表? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想使用 php 读取网页文件夹中文件名的列表 有没有简单的脚本可以实现它 最简单 最有趣的方法 imo 是glob foreach glob as filename echo
  • 转义字符,例如 $ 和 % | MySQL 和 PHP

    所以基本上我一直在深入研究 MySQL 和 PHP 领域 特别是在处理数据库和表单输入时应该采取的安全措施 到目前为止 我发现强烈推荐以下内容 准备好的报表 使用 mysqli real escape string 不要使用魔术引号 因为它