PHP安全技术之 实现php基本安全


Posted in PHP onSeptember 04, 2010

1.不要依赖注册全局变量功能(register_globals)

注册全局变量的出现曾经让PHP变得非常易用,但也降低了安全性(方便之处经常会破坏安全性)。建议在编程时把register_globals指令关闭,在PHP6中这个功能也会被取消。

2.在使用变量之前对其进行初始化。

如果register_globals功能是启动的,即使程序员不使用它,恶意用户也可能利用为初始化变量的漏洞来侵入我们的系统。比如:

if(conditon){

$auth=TRUE;

}

如果变量$auth没有在这段之前被初始化为FALSE,那么用户就可以向脚本传递$_GET[‘auth']、$_POST[‘auth']或$_COOKIE[‘auth']轻易的实现验证。

3.检验和净化全部输入数据。

4.在利用变量引用包含文件时要小心。

如果脚本中有这样的代码:

require($page);

那么就应该确保$page不会来自外部资源(比如$_GET),或者,如果它的确来自于外部资源,那么就要确保它包含适当的值。

5.在使用任何服务器上执行命令的函数都要多加小心。

这些函数包括eval()、exec()、system()、passthru()、popen()和反撇号(``)。这些函数都能够在服务器上执行命令,永远都不要随意使用。如果在命令里不得不包含便来那个,就应该对这个变量进行彻底的安全检查。还应该使用escapeshellarg() escapeshellcom()进行额外的预处理。

6.更改默认的会话目录,或者使用数据库保存会话数据。

7.不要使用浏览器提供的文件名在服务器上保存上传的文件。

8.如果被提交的数据需要在web页面中重新显示,一定要注意其中的HTML,更重要的是JAVASCRIPT

可以利用函数

string htmlspecialchars ( string string [, int quote_style [, string charset]])

对提交的数据进行处理

9。不要在站点上暴露你的PHP错误信息

PHP错误信息能够在你开发的过程中把错误信息输出方便你的检查,但是如果暴露在Web上面,很可以成为攻击者的入口。

10.防止SQL注入攻击。

应该使用特定语言的数据库转义函数,比如mysqli_real_escape_data(),确保提交的内容不会破坏查询操作。

11.永远不要在服务器上保存phpinfo()脚本。

PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击(上)
Oct 09 PHP
我用php+mysql写的留言本
Oct 09 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
PHP filesize函数用法浅析
Feb 15 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 PHP
小文件php+SQLite存储方案
Sep 04 #PHP
PHP中文件上传的一个问题
Sep 04 #PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 #PHP
PHP开发需要注意的安全问题
Sep 01 #PHP
php中函数的形参与实参的问题说明
Sep 01 #PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 #PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 #PHP
You might like
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
JS跨域问题详解
2014/11/25 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
vue实现信息管理系统
2020/05/30 Javascript
Python 正则表达式(转义问题)
2014/12/15 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
Python类的继承和多态代码详解
2017/12/27 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
详解python中的hashlib模块的使用
2019/04/22 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
Linux开机引导的步骤是什么
2014/02/26 面试题
工作自我评价分享
2013/12/01 职场文书
学生手册家长评语
2014/02/10 职场文书
大学专科自荐信
2014/06/17 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
JavaScript 对象创建的3种方法
2021/11/17 Javascript