请问以下这段代码会有什么安全问题吗?
<?php
if(isset($code)) {
eval("\$html=\"$code\";");
}
?>
$code的值是用户可控的。

解决方案 »

  1.   

    eval 本身就是一个不太安全的函数
      

  2.   

    太危险了,$code 中只要出现一个双引号加一个分号,后面跟的内容就被当作 PHP 代码执行了。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  3.   

    test.php?code=aaa";phpinfo();//
    这样就能执行phpinfo()了,不过这要求magic_quotes_gpc为Off,不知道gpc为On还有没办法执行代码呢?
      

  4.   


    对于很多的网站,实际上是magic_quotes_gpc是off的。
      

  5.   

    $code = '";unlink("index.php");';
      

  6.   

    有 magic_quotes_gpc 当然好很多,但那个也只是处理 single-quote, double-quote, backslash and NUL's,如果用户写个 '{$secret_key}' 进去,你就可能泄漏敏感信息了。总之,危险可能来自各个方向…… hehe
      

  7.   

    嗯,magic_quotes_gpc为on时可以demo.php?code=${@phpinfo()}来注入代码。