美文网首页
【PHP防卫战】单引号,双引号,以及反引号的区别

【PHP防卫战】单引号,双引号,以及反引号的区别

作者: 故不忧_y | 来源:发表于2019-08-19 16:42 被阅读0次

回顾

继上周修复了一波紧急漏洞之后,逐渐分析出一些规律,黑客发掘命令注入漏洞,大多采用反引号(`)包裹脚本命令做一些命令攻击。意识到这些之后,发觉除了要了解单双引号的区别外,还得熟悉反引号的意义,这样才能更好的防范命令注入漏洞的产生。

分析

字符串以单(')、双(")或倒引号(`)围住分别有不同的义意。

1、单引号

例如:

$str = 'An apple a day keeps the docter away.'

当字符串出现 ' 符号时,必须加上反斜杠(\)转义,或者用双引号(")包裹:

'I'm wing'

应改成:

'I\'m wing' 

或者

"I'm wing"

才对,其中 ' 即称为跳脱字符 (escape character)。

2、双引号

以双引号围住的字符串 PHP 会对该字符串做 variable interpolation 的动作,亦即做变量的取代:

$name = "Wing";
echo 'Name: $name';
echo "Name: $name";

执行结果为:

Name: $name
Name: Wing

在双引号里的字符串如果有 $ (dollar sign),只要改成跳脱字元的写法即可:

$total = 12000;
echo "Total: $ $total"; //输出 Total: $ 12000

在做 variable interpolation 时,变量名称是以一个以上空格做为界线,例如:

$n_file = 5;
if ($n_file == 1) {
    echo "There are $n_file.";
} else {
    echo "There are $n_files.";
}

n_file 不为 1 时,"There aren_files." PHP 所看到的变量为 n_files,而不是正确n_file,所以必须改成:

$n_file = 5;
if ($n_file == 1) {
    echo "There are $n_file.";
} else {
    echo "There are {$n_file}s.";
}

单引号内的双引号,或是双引号内的单引号都视为有效字符,不需使用跳脱字符,例如:

echo "I'm a happy bird.";
echo 'I\'m a happy "bird"!';

输出结果为:

I'm a happy bird.
I'm a happy "bird"!

3、反引号

利用反引号可以执行 Unix 下的命令,并传回执行结果。例如:

echo `ls -l *.txt`;

表示将 ls -l *.txt 命令的执行结果输出,以反引号围住的字符串为要执行的 UNIX 指令。

相关文章

  • 【PHP防卫战】单引号,双引号,以及反引号的区别

    回顾 继上周修复了一波紧急漏洞之后,逐渐分析出一些规律,黑客发掘命令注入漏洞,大多采用反引号(`)包裹脚本命令做一...

  • 四 常量以及数据类型

    一:PHP的定义方式以及各自区别 定义方式 单引号,双引号,heredoc和newdoc 区别 单引号不能解析 变...

  • PHP基础篇

    php基础部分常见考点 1. 双引号单引号区别 双引号解释变量,单引号不解释变量 双引号里插入单引号,其中单引号里...

  • PHP面试(转自慕课网)

    PHP经典面试题目汇总(上篇) 1、双引号和单引号的区别 双引号解释变量,单引号不解释变量 双引号里插入单引号,其...

  • php的一些易错点

    1.单引号与双引号的区别 一般用单引号或双引号标识一个字符串。单引号串与双引号串,在PHP中的处理是不同的。双引号...

  • 体验shell(语法学习)

    基础语法 获取命令结果 反引号, 兼容老版本 $() 单引号、双引号、反引号区别在单引号中,所有特殊字符没有特殊含...

  • PHP 三种字符串定义的区别详解

    php中定义字符串有3中形式: 单引号 双引号 heredoc和newdoc 区别 单引号不能解析变量 单引号不能...

  • ``反单引号‘’单引号“”双引号的区别

    反单引号()”:在中的命令会被先执行,执行结果将做外部输出信息 单引号(‘’):使用单引号应注意,内部变量会失效 ...

  • PHP中的小知识点-学员石鑫

    单引号 ('') 和 双引号 ("") 的区别PHP不会检查单引号内字符串中的变量,所以采用单引号来定义字符串相当...

  • PHP-数据类型与常量

    PHP字符串的定义方式及各自区别 定义方式:单引号双引号heredoc 和newdoc 区别单引号不能解析变量单引...

网友评论

      本文标题:【PHP防卫战】单引号,双引号,以及反引号的区别

      本文链接:https://www.haomeiwen.com/subject/zjlesctx.html