2012-09-30 32 views
2

对PHP不太熟悉,用户是否可以利用变量插值来获取秘密值?查询字符串安全性和可变插值

<?php 
    $secret = 'hidden data'; 
    echo $_GET['id']; 
?> 

我想传递的ID:$秘密,%24secret,$ {秘密},{$}秘密,%7D%24secret%7D,%24%7Dsecret%7D。到目前为止,它似乎很安全,但只是想确保我不会错过任何东西。提前致谢。

+2

如果这样的事情是可能的,我不认为会有*这么多* web应用程序编写的PHP。 '$ _GET'也是一个数组,最终你会得到'$ _GET [$ secret]',所以如果'$ secret'的值不是'$ _GET'的有效数组键,那么仍然没有问题。 – Havelock

+1

这是不可能的,除非你不小心写了'$$ _ GET ['id']''。 –

回答

3

不,用户不可能以这种方式检索硬编码的字符串。

1

但使用htmlentities($_GET["id"])无论如何,否则我们可以利用跨站点脚本攻击(窃取登录Cookie,会话数据等)。