当前位置: 首页 > 面试题库 >

PHP中的魔术引号

容远
2023-03-14
问题内容

根据PHP手册,为了使代码更易于移植,他们建议使用类似于以下内容的转义数据:

if (!get_magic_quotes_gpc()) {
    $lastname = addslashes($_POST['lastname']);
} else {
    $lastname = $_POST['lastname'];
}

我还有其他将要执行的验证检查,但是从转义数据的角度来看,上述检查严格地安全吗?我还看到在PHP
6中将不再使用魔术引号。这将如何影响上述代码?我希望不必依赖于特定于数据库的转义函数,例如mysql_real_escape_string()。


问题答案:

魔术引号天生就坏了。它们本来是要清理PHP脚本的输入,但不知道该输入将如何使用,就不可能正确地清理。如果有的话,最好检查一下是否启用了魔术引号,然后在$
_GET / $ _ POST / $ _ COOKIES / $ _ REQUEST上调用stripslashes(),然后在某个地方使用变量时对其进行清理。例如,如果在URL中使用urlencode(),则将其打印回网页,则使用htmlentities();如果将其存储到数据库,则使用数据库驱动程序的转义功能。请注意,这些输入数组可能包含子数组,因此您可能需要编写一个可以递归到子数组中的函数,以去除这些斜杠。

有关引号的PHP 手册页同意:

“此功能自PHP 5.3.0起已弃用,PHP 5.4.0起已取消。强烈不建议使用此功能。Magic
Quotes是一种自动将输入数据转义到PHP脚本的过程。首选使用Magic进行编码引用,然后根据需要在运行时转义数据。”



 类似资料:
  • 主要内容:__LINE__,实例,__FILE__,实例,__DIR__,实例,__FUNCTION__,实例,__CLASS__,实例,__TRAIT__,实例,__METHOD__,实例,__NAMESPACE__,实例PHP 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。 有八个魔术常量它们的值随着它们在代码中的位置改变而改变。 例如 __LINE__ 的值就依赖于它在脚本中所

  • 本文向大家介绍php 魔术方法详解,包括了php 魔术方法详解的使用技巧和注意事项,需要的朋友参考一下 从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。PHP 将所有以 _ _(两个下划线)开头的类方法保留为魔术方法。 __toString() 和__invoke()

  • 本文向大家介绍浅谈PHP中的那些魔术常量,包括了浅谈PHP中的那些魔术常量的使用技巧和注意事项,需要的朋友参考一下 之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都使用过,这里给大家做一个总结。 其实PHP还提供了很多常量但都依赖于各类扩展库,而有几个常量是通用并且是跟随它们所在代码的位置来提供一些与位置有关的信息,这些就是魔术常量。魔术常

  • 本文向大家介绍PHP 中魔术常量的实例详解,包括了PHP 中魔术常量的实例详解的使用技巧和注意事项,需要的朋友参考一下 PHP 中魔术常量的实例详解 本文介绍下,php编程中的魔术常量,掌握并灵活应用这些方法与常量,对于提高php的编程水平,有很大的帮助。有需要的朋友参考学习下。 魔术常量: 运行结果 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 问题内容: 我一直读到魔术引号根本不能停止SQL注入,但是我不明白为什么不这样做!例如,假设我们有以下查询: 现在,如果用户输入make ,则查询将是: 反斜杠将由Magic Quotes添加,而不会造成任何损害! 有没有办法我看不到用户可以在此处绕过Magic Quote插入的地方? 问题答案: 技巧通常是传递一个二进制值,以使反斜杠成为有效的多字节字符的一部分。这是关于它的博客文章。

  • 本文向大家介绍PHP的魔术常量__METHOD__简介,包括了PHP的魔术常量__METHOD__简介的使用技巧和注意事项,需要的朋友参考一下 __METHOD__ 是PHP5之后新增的魔术常量,表示的是类文法的名称。魔术常量是一种PHP预定义常量,它的值可以是变化的,PHP中的其它已经存在的魔术常量有__LINE__、__FILE__、__FUNCTION__、__CLASS__等。 下面就用一