PHP双引号的隐患

PHP很多语法特性会让攻击者有机可乘,例如PHP会检测双引号中的变量。
执行如下代码:

1 function test()
2 {
3 echo "abc";
4 }
5 echo "${@test()}";
6
7 //或者
8 echo "${@phpinfo()}";

原理如下:

1 $a = ‘b‘;
2 $b = ‘a‘;
3
4 echo $$a; //a

以上就利用了PHP可变变量,双引号{}可解析双引号内的变量内容特性制造出来的小麻烦。

时间: 2024-07-31 14:32:54

PHP双引号的隐患的相关文章

PHP双引号小隐患

function test() { echo "hello"; } echo "${@test()}"; echo "${@phpinfo()}"; // 原理: $a = 'b'; $b = 'a'; echo $$a; <?php$a = 'hello';$$a = "test";echo "${$a}";?>  这样输出test <?php$a = 'hello';$$a = &qu

JavaScript基础 输出含有双引号/单引号的字符串

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

PHP 单双引号的区别

PHP中单双引号的区别 "" 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出.'' 单引号里面的不进行解释,直接输出.所以在效率上 单引号比双引号要快了. 例如:$abc = 'my name is tome';echo $abc //结果是:my name is tomecho '$abc' //结果是:$abcecho "$abc" //结果是:my name is tom PHP引号使用原则1.字符串的值用引号2.PHP中尽量用单引号,HTML代

python之双引号和三引号

双引号 多行输入的时候用三引号 ========================== Tab补全的文本: ===========================================

关于oracle sql语句查询时表名和字段名要加双引号的问题

oracle初学者一般会遇到这个问题. 用navicat可视化创建了表,可是就是不能查到! 后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引号就可以查到了! ②select * from "user"; 难道oracle跟mysql等不同,查询时候一定要加双引号?那这样不是很麻烦!于是经过查找资料得出如下结论: 1.oracle表和字段是有大小写的区别.oracle默认是大写,如果我们用双引号括起来的就区分大小写,如果没有,系统会自动

php单引号,双引号

$id='0'; $arr=array('a.jpg','b.jpg','c.jpg'); echo "'{$arr[$id]}'"; echo '<br>'; echo '"{$arr[$id]}"'; //out 'c.jpg'"{$arr[$id]}" reason: " " 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出.' ' 单引号里面的不进行解释,直接输出 1.字符串的值用引号 2.PH

前端双引号单引号,正则反向引用,js比较jq

1.js,jq,css,html属性必须双,如果同时出现需要嵌套使用,属性的规范是双但是也可以用单测试有效 单引号现象举例:jq中获取元素标签是单引号:$('input').click:弹出也是单引号: alert('aaaa'):jq根据id获取元素和设置css都一般用单引号:$('#box').css('color', 'red'); 上述两种情况全部换成双引号也是行的!2.分号的用法: {}作为函数体一般是不需要分号结束的,()一般需要分号结束,除非作为一个函数的参数就不需要分号:3.js

单引号 双引号 定界符 之间区别

双引号解析变量,单引号不解析变量,定界符解析变量双引号中直接输出单引号,单引号中直接输出双引号,单引号输出单引号需要转义,双引号输出双引号需要转义.(转义字符"\")双引号输出变量名需要转义('\'); 例: //双引号 $a="123";$b="456";$c=$a.$b;echo "\$c";die;输出结果是变量名$c echo $c; 输出结果是$c=123456: $a='jjjjjj';$b="aaa $

Spring MVC 响应结果有双引号

问题是这样的: 使用MVC框架为Spring MVC,当发出HTTP请求时,数据返回居然是带有双引号的,这样导致我还要在前台对数据进行转换.那么,具体是什么原因造成的呢?看下面代码,就知道了! 1)spring-servlet.xml <!-- 对返回的JavaBean进行json转换返回给前台 --> <bean name="mappingJacksonHttpMessageConverter"        class="org.springframew