php的一些安全性的操作
来源:互联网 发布:淘宝客佣金代扣款 编辑:程序博客网 时间:2024/05/16 11:36
程序的安全性越高,系统受到的保护程序才能越大。然而很多网站的安全漏洞是由于表单漏洞引起的。下面的是我们应该注意的几个地方
1: 在php读取文件的时候首先需要判断这个文件是否存在,存在的话打开。
如果不加这个操作的话,用户可以这样攻击
<?php
$fp= fopen("/com/{$_GET['file']}","r");
?>
程序的本意是打开路径com下的file文件,但是由于用户提交参数缺少充分的过滤,当输入一下的URL访问时:
openfile.php?file=../../etc/passwd%00
攻击者就可以利用它进行目录遍历攻击及获取一些敏感信息。想要拒绝这样的情况发生,可使用PHP提供的basename()函数来检测文件的路径,以避免危险的发生,下面的是使用basename()函数的代码:
<?php
$_GET['file'] = basename($_GET['file']);
if(file_exists("/com/{$_GET['file']}")){
$fp = fopen("/com/{$_GET['file']}");
}
?>
2: 表单的过期处理
有时候提交完一个表单的时候,因为出现了错误,此时点击浏览器上的“后退”按钮回到原先的表单的时候,发现所有字段的信息被清空了或者是出现网页过期的情况,
现在出现了两种问题:一是避免表单过期。在PHP中,一种方式是使用hesder()函数来设置缓存控制,在程序上加上如下的代码:
hesder('Cache-control:private,must-revalidate');
在上面的代码中,Cache-control 指定请求和响应的缓存机制,常用的缓存指令有 private,no-cache,max-age,must-revalidate等,在默认的情况下为private.下面看一下在不同的情况下他们的作用有何不同。
- 在浏览器上后退时:当缓存指令为 private,max-age和must-revalidate时,不会重新访问服务器。当缓存指令为no-cache时,每次后退都会重新访问服务器。
- 打开新窗口:当缓存指令为private,no-catche和must-revalidate时,打开新窗口将会重新访问服务器。当缓存指令为max-age时,在max-age指定的时间范围内不会重新访问服务器。
- 在地址栏按“回车”键:当缓存指令为 private或must-revalidate时,按下“回车”只能第一次访问时才能访问服务器,以后不会访问。当缓存指令为 no-catche时,每次都会访问服务器。
- 刷新页面:每次刷新页面时,无论缓存指令为何值时,都将重新访问服务器
在PHP中,另一种解决表单过期的方式是使用session_cache_limiter()函数,需要注意的是该函数要在session_start()函数之前执行。如:
session_cache_limiter('private,must-revalidate');
或者:
session_cache_limiter('nocache‘);
session_cache_limiter('private');
session_cache_limiter('public');
3;过滤表单的数据
此处掠过
- php的一些安全性的操作
- PHP 文件的一些操作
- 字符串的一些php操作
- php的线程不安全性
- php代码安全性的建议
- PHP网页的安全性问题
- 确保PHP应用程序的安全性
- PHP网站的安全性问题
- PHP网页的安全性问题
- PHP编程的安全性思考
- Android 中能够作为 Log 开关的一些操作以及安全性浅谈
- PHP 文件、正则的一些简单操作
- PHP二叉树的一些操作练习
- php操作mongodb的一些方法
- PHP关于文件的一些基本操作
- PHP常用的一些数组操作总结
- php redis 的一些操作常例!
- php一些操作数组的函数整理
- 利用mysqlcheck命令快速修复mysql数据库
- 55个经典开源Windows工具
- c++中调用汇编
- poj2001 (trie) ----先转过来,日后研究
- 计算机学科经典著作上
- php的一些安全性的操作
- 计算机科学经典书籍下
- POJ 3524 Bug Hunt
- 正则表达式的用法(C++)
- oracle 读书笔记 三
- Linux进程间通信(IPC)之三——信号量(Semaphore)
- 如何在cooja下使用collectview
- 学习建议
- 左上填充规则