问题标签 [magic-quotes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP中的魔术引号
根据PHP 手册,为了使代码更便携,他们建议使用类似以下的东西来转义数据:
我还有其他将要执行的验证检查,但就转义数据而言,上述内容的安全性如何?我还看到 PHP 6 将弃用魔术引号。这将如何影响上述代码?我宁愿不必依赖于特定于数据库的转义函数,如 mysql_real_escape_string()。
php - 理解 PHP 中的输入转义
一直让我感到困惑的一件事是输入转义以及您是否受到保护免受 SQL 注入等攻击。
假设我有一个使用 HTTP POST 将数据发送到 PHP 文件的表单。我在输入字段中输入以下内容并提交表单:
如果您在接收此 POST 数据的 PHP 页面上打印/回显输入,则会显示为:
这是令人困惑的地方。如果我将此输入字符串放入 (My)SQL 并执行它,它会很好地进入数据库(因为引号被转义),但这会停止 SQL 注入吗?
如果我接受输入字符串并在其上调用类似mysqli real_escape_string
的东西,结果如下:
所以当它通过 (My)SQL 进入数据库时,它最终会变成:
这显然有太多的斜线。
因此,如果输入通过 HTTP POST 转义,您是否必须再次转义以使其对(My)SQL 安全?或者我只是在这里没有看到明显的东西?
提前感谢您的帮助。
php - PHP 检查 bool 和 int 有什么价值吗?
我有以下行:
我get_magic_quotes_gpc()
将它存储在我的对象中,因为它在我生成 SQL 时被多次使用。我也将其转换为布尔值。
我想知道将其转换为布尔值是否值得。我的主要原因是速度,因为检查的语句是:
如果测试严格是布尔值,我认为会稍微快一些。
是否有任何原因它不更快,或者是否有任何其他原因不这样做?
php - 如何在运行时禁用 PHP 魔术引号?
我正在编写一组 PHP 脚本,它们将在一些不同的设置中运行,其中一些共享主机并带有魔术引号(恐怖)。如果无法控制 PHP 或 Apache 配置,我可以在我的脚本中做任何事情来在运行时禁用 PHP 引号吗?
如果代码没有假设魔术引号打开会更好,这样我就可以在可能有或没有魔术引号的不同主机上使用相同的脚本。
php - 为什么 php 不能将引号转换为 mysql 的 html 实体?
PHP 在默认情况下使用“魔术引号”,但因此受到了很多批评。我知道它将在 PHP 的下一个主要版本中禁用它。
虽然反对它的论点是有道理的,但我不明白的是为什么不只使用 HTML 实体来表示引号而不是剥离和删除斜杠?毕竟,绝大多数 mySQL 用于输出到 Web 浏览器?
例如,' 使用而不是 ' 并且它根本不会影响数据库。
另一个问题,为什么 PHP 不能只为每个版本的 PHP 设置配置,带有这个标签 <?php4 或 <?php5 以便可以为这些版本加载适当的解释器?
只是好奇。:)
php - 在 PHP 中使用默认魔术引号或用户定义的 addlash/stripslash 哪个更好?
在 PHP 中使用默认魔术引号或用户定义的 addlash/stripslash 哪个更好?我想用最好的。请帮我。
php - 转义引号的函数无法正常工作
我试图弄清楚为什么这个功能不能正常工作。
\
每次我编辑我的条目时,它都会增加一个额外的内容。
在线服务器具有以下设置:
这是代码:
编辑说明:
我已经尝试完全删除这个函数来看看它做了什么......它做同样的事情,所以我意识到它addslashes
也在代码中用于同样的事情。
额外\
的存在是magic_quote
因为ON
php - 如何关闭 PHP 配置文件中的魔术引号?我正在使用 XAMPP
文件是什么?我的电脑上有 php.ini 和 php.ini-dist。
php - 旧版本和新版本 PHP 的魔术引号
此代码应该确保干净的代码进入数据库
它应该适用于早期版本的 PHP(早于 4.3.0)和更高版本的 php(早于 4.3.0)
它运行良好,因为数据可以毫无问题地进入数据库,但我在浏览器上遇到错误
是我如何调用 mysql_prep 函数
php - PHP - 更短的魔术报价解决方案
我正在编写一个需要便携的应用程序。我知道我应该在 PHP 配置上禁用魔术引号,但在这种情况下我不知道我是否可以这样做,所以我使用以下代码:
为了简化禁用魔术引号的过程,我有以下想法:
但我试过了,但我遇到了一个我无法理解的错误,例如?name=O'Reilly
:
但是unserialize(stripslashes(serialize($_GET)))
给了我这个奇怪的错误:
注意:反序列化():32字节偏移量30处出错
编辑:由于serialize()
我将代码更改为使用 JSON 函数的长度属性:
但是现在数组是空的$_GET
,谁能解释我为什么?