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小偷的核心程序
Apr 09 PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
php简单防盗链实现方法
Jul 29 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
实例讲解PHP页面静态化
Feb 05 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
php简单截取字符串代码示例
2016/10/19 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
python文件与目录操作实例详解
2016/02/22 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
python让列表倒序输出的实例
2018/06/25 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
中科软测试工程师面试题
2012/06/16 面试题
生态学毕业生自荐信
2013/10/27 职场文书
小学信息技术教学反思
2014/02/10 职场文书
表彰大会策划方案
2014/05/13 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL