宿迁腾云网络网站建设公司

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • APP开发
    • SEO优化
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > PHP脚本滥用1.漏洞原因及学习与理解(一)

PHP脚本滥用1.漏洞原因及学习与理解(一)

2021-10-18

本文主要讲解《如何防止PHP程序漏洞》。文章中的讲解简单明了,易学易懂。现在,请跟随小编的思路,深入了解《如何防止PHP程序产生的漏洞》吧!

虐待

1.漏洞原因:

是写PHP网站最常用的函数,支持相对路径。很多PHP脚本直接使用某个输入变量作为参数,导致脚本任意引用、绝对路径泄露等漏洞。看下面的代码:

...

$=$_GET[""];

($);

...

显然,我们只需要提交不同的变量就可以得到想要的页面。如果提交的页面不存在,可以在 PHP 脚本中报错,并显示实际绝对路径(此问题的解决方法在下一篇文章中说明)。

2.漏洞解决方案:

这个漏洞的解决方法很简单,就是先判断页面是否存在再继续。或者更严格地说,使用数组来指定可用文件。看下面的代码:

复制代码代码如下:

$=(".php",".php",".php"); //此处指定可用文件

if(($_GET[""])) //判断是否有$

{

$=$_GET[""];

($ 为 $)

{

if($==$) //检查文件是否在允许列表中

{

($);

$=真;

;

}

}

if($==true){ ($);}

else{ die("无效的参考页!");}

}

这将很好地解决问题。

Tips:还有其他函数有这个问题:()、()、()、()等,写的时候也要注意。

输入变量未过滤

1.漏洞原因:

这个漏洞最早出现在ASP中,当时造成的注入漏洞数不胜数。但是由于当时 PHP 的影响力比较小,所以没有多少人能够关注到这一点。对于 PHP 来说,这个漏洞的影响要大于 ASP,因为更多的 PHP 脚本使用了基于文本的数据库。当然,还有SQL语句注入的问题。举一个更经典的例子,首先是数据库:

复制代码代码如下:

$id=$_GET["id"];

$=" * FROM id='".$id."'"; //很经典的SQL注入漏洞

$=($);

这里很明显,我们可以使用注入来获取数据库的其他内容。这里就不细说了,和ASP注入一样,大家可以看前面的hack。然后我们看一下文本数据库的问题:

复制代码代码如下:

$=$[""];

$=$[""];

$=$[""];

$fd=("test.php","a");

($fd,"\r\n$&line;$&line;$");

($fd);

文中的漏洞可以说是比较严重了。如果我们在提交的变量中插入一小段 PHP 代码,我们就可以将这个文本数据库 test.php 变成一个 PHP 后门。甚至插入上传代码,这样我们就可以上传一个完整的PHP后门。然后提升权限,服务器就是你的了。

2.漏洞解决方案:

这个漏洞的解决方法其实很简单,就是严格过滤所有提交的变量。替换一些敏感字符。我们可以使用 PHP 提供的 () 函数来替换 HTML 内容。下面是一个例子:

复制代码代码如下:

//构造过滤函数

($文本)

{

$=("操","操"); //词汇过滤列表

$text=($text);

($ as $) //这里进行词汇过滤

{

if(($text,$)==true){ die("错误:您提交的内容包含敏感词,请不要提交敏感内容。");}

}

$text=($text); //HTML 替换

//将回车替换为

$text=("\r"," ",$text);

$text=("\n","",$text);

$text=("&line;","│",$text); //替换文本数据库分隔符“&line;” 全角“│”

$text=("/\s{ 2 }/"," ",$text); //空间替换中国网管联盟

$text=("/\t/"," ",$text); //或空格替换

if(()){ $text=($text);} //如果开启,则替换\'

$文本;

}

$=$[""];

$=$[""];

$=$[""];

//过滤所有输入

$=($);

$=($);

$=($);

$fd=("test.php","a");

($fd,"\r\n$&line;$&line;$");

($fd);

经过一些替换和过滤后,您可以安全地将数据写入文本或数据库。

管理员判断不完整

1.漏洞原因:

我们使用PHP编写脚本,通常涉及到管理员的权限。并且有些脚本只对管理员权限做出“是”的判断,而往往忽略“否”的判断。在PHP配置文件中打开的情况(4.2.0及以后的版本默认是关闭的,但是很多人为了方便打开,是极其危险的行为),会出现提交变量 假装是管理员。我们来看一下示例代码:

复制代码代码如下:

$=""; //判断是否的变量

$=$["符号"]; //获取用户变量

如果($==$)

{

$=真;

}

if($){ echo "现在是管理员状态。";}

看起来很安全,哈哈。现在我们假设 PHP 配置文件已打开。我们提交这样一个地址“test.php?=true”,你看到结果了吗?虽然我们没有正确的,但我们提交的变量由于打开状态自动注册为真。而且,脚本缺少“否”判断,这让我们可以通过=true 成功获取管理员权限。这个问题存在于大多数网站和论坛中。

2.漏洞解决方案:

解决这个问题,我们只需要在脚本中给管理员添加一个“否”判断即可。我们仍然假设 PHP 配置文件是打开的。看一下代码:

复制代码代码如下:

$=""; //判断是否的变量

$=$["符号"]; //获取用户变量

如果($==$)

{

$=真;

}

别的

{

$=;

}

if($){ echo "现在是管理员状态。";}

这样,即使攻击者提交的变量=true 不正确,脚本也会在以后的判断中设置$为。这解决了部分问题。但是,因为$是一个变量,如果以后其他脚本引用出现漏洞,重新给$赋值,就会造成新的危机。因此,我们应该使用常量来存储管理员权限的判断。使用()语句定义一个常量来记录管理员的权限。之后,如果重新赋值,就会报错,达到保护的目的。看下面的代码:

复制代码代码如下:

$=""; //判断是否的变量

$=$["符号"]; //获取用户变量

如果($==$)

{

(,真的);

}

别的

{

(,);

}

if(){ echo "现在是管理员状态。";}

值得注意的是,我们已经使用了语句,所以在调用常量之前不要习惯性地添加变量符号$,而是使用and!。

文本数据库曝光

1.漏洞原因:

如前所述,由于文本数据库具有很大的灵活性,因此不需要任何外部支持。此外,PHP 具有非常强的文件处理能力,因此在 PHP 脚本中广泛使用文本数据库。甚至有几个使用文本数据库的优秀论坛程序。但有得有失,文本数据库的安全性低于其他数据库。

2.漏洞解决方案:

作为普通文件,可以下载文本数据库,就像MDB一样。所以我们必须通过保护MDB来保护文本数据库。将文本数据库的后缀更改为.PHP。并加入数据库的第一行。这样,文本数据库就会作为PHP文件使用,第一行就退出执行。即返回一个空页面,从而达到保护文本数据库的目的。

错误路径泄漏

1.漏洞原因:

PHP遇到错误时,会给出错误脚本的位置、行号和原因,例如:

: 在 D:\\\test.php 第 3 行使用 test-'test'

很多人说这没什么大不了的。但是泄露实际路径的后果是难以想象的。对于某些入侵者来说php代码执行漏洞,这些信息非常重要。其实现在很多服务器都有这个问题。

有的网管干脆把PHP配置文件里的设置设为Off,但我觉得这个方法太消极了。有时,我们确实需要 PHP 返回错误消息以进行调试。并且可能需要在发生错误时给用户一个解释,甚至导航到另一个页面。

2.漏洞解决方案:

PHP提供了一个从4.1.0开始的自定义错误处理函数(),但是很少有脚本编写者知道。在很多 PHP 论坛中,我只看到了一些处理这种情况的。使用方法如下:

([, 整数 ])

现在我们使用自定义错误处理来过滤掉实际路径。

复制代码代码如下:

//身份判断为管理员,true为管理员。

//自定义错误处理函数必须有这4个输入变量$,$,$,$,否则无效。

($,$,$,$)

{

//如果你不是管理员,过滤实际路径

如果(!)

{

$=((),"",$);

$=((),"",$);

}

($)

{

案件:

echo ": [ID $] $ (行: $ of $)

\n";

echo "程序已停止运行,请联系管理员。";

//遇到关卡错误时退出脚本

出口;

;

案件:

echo ": [ID $] $ (行: $ of $)

\n";

;

:

//不显示电平错误

;

}

}

//将错误处理设置为函数

("");

…

这样就可以很好的解决安全性和调试方便性之间的矛盾。而且你也可以花一点时间思考,让错误信息更美观,以配合网站的风格。但有两点需要注意:

(1), ,,,, 不会被这个句柄处理,也就是会以最原始的方式显示出来。不过,这些错误是编译或者PHP内核错误,一般情况下不会发生。

(2)使用()后,()会失效,即所有的错误(除了上面的错误)都会由自定义函数处理。

关于()的其他信息可以参考PHP官方手册。

POST 漏洞

1.漏洞原因:

如前所述,依赖注册变量是一个坏习惯。在一些留言簿和论坛程序中,需要严格检查获取页面的方法和提交的时间间隔。防止泛滥的发帖和外部提交。下面我们来看看一个留言板程序的代码:

复制代码代码如下:

...

$=($);

$=($);

$=($);

$fd=("data.php","a");

($fd,"\r\n$&line;$&line;$");

($fd);

显然,如果我们提交 URL “post.php?=&=&="。数据将正常写入文件。该程序不检测变量的来源和浏览器获取页面的方式。如果我们多次提交到这个页面,它就会像洪水一样。现在一些软件利用这个漏洞在论坛或留言簿上发布广告。这是一种可耻的行为(我朋友的留言簿一周就塞满了10多页,无奈)。

2.漏洞解决方案:

在处理和保存数据之前,首先要确定浏览器是如何获取页面的。使用 $[""] 变量来获取浏览器获取页面的方式。检查它是否是“POST”。脚本中用于记录用户是否通过正常方式提交数据(即填写待提交内容的页面)。或者使用 $[""] 来检测,但不推荐这样做。因为有些浏览器没有设置,有些防火墙也会屏蔽。另外,我们还需要检查提交的内容,看看数据库中是否有重复的内容。以留言板为例php代码执行漏洞,使用确定:

在填写浏览内容的页面,我们在最前面添加:

$[""]=time(); //注册和填写的时间

在接收和保存消息数据的页面上,我们在处理数据之前也使用如下处理:

复制代码代码如下:

if(($[""])!=”POST”){ die(": Do not .");} //检查页面获取方式是否为POST

if(!($[""]) or (time()-$[""] <10)){ die(": Do not .");} //检查消息并填写时间

if(($[""]) and (time()-$[""] <120)){ die("错误:两次提交的间隔不能少于2分钟。"); } //查看消息间隔

($[""]); //注销变量,防止进入一次填写页面后多次提交

$[""]=time(); //注册发送消息的时间,防止浇水或恶意攻击

...

数据处理和存储

感谢您的阅读。以上就是《如何防止PHP程序产生的漏洞》的内容。看了这篇文章,相信大家对如何防范PHP程序产生的漏洞有了更深入的了解。每个人都需要通过实践来验证。这就是伊素云。小编会为大家推送更多相关知识点的文章,欢迎关注!

Tag: php 数据库脚本 漏洞
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • php 权限管理框架零信任技术的应用发展(一):DISA的探索和实践php开发框架和java开发框架
  • 智能仪器与仪表综合设计(一):数据采集系统的结构原理
  • 机械化的数据处理工作中——字段索与模式
  • 这篇文章主要介绍中设置php代码错误提示的方法
  • 网上商城自定义布局开发php来说说开发一套商城系统应当注意的几个功能? 网上商城系统php开发
  • PHP开发者们最喜欢使用哪个PHP框架前三甲?
  • 大型网站的架构演化过程,你知道吗?(上)
  • 基于php的个人博客系统的实现知名IT信息技术社区全新升级,论坛软件系统采用开源PHP技术基于php的管理系统
  • php 视频网站源码市面上最流行的几种网站源码程序(组图)php视频上传网站源码
  • 智能机器人软件开发需要学习以下多方面的多方面知识:工业机器人

相关

了解常见PHP应用程序安全威胁,掌握6个常见安全性攻击

了解常见PHP应用程序安全威胁,掌握6个常见安全性攻击

如何查看php版本?多种方法助你快速知晓

如何查看php版本?多种方法助你快速知晓

PHP格式化:提升代码质量与协作效率的关键规则

如何查看虚拟主机上的 PHP 版本?这篇文章告诉你

Linux 系统管理员和 web 开发者必知:如何查看 PH

Linux 系统管理员和 web 开发者必知:如何查看 PH

免费开源的轻量级 PHP 开发框架 ThinkPHP,遵循

从零开始开发完整网站:前端、后端与 Web 服务器的关键技术

php框架 Java 与 PHP 之争:为何懂技术的大佬选

BitDefender 发布超级工厂病毒专杀工具,可清除所有

asp语言与php语言的区别 前端和后端的区别,你真的了解吗

标签

seo(1182) 市场营销(661) 网站制作(573) 网站建设(564) 搜索引擎(553) 网站(482) PHP(361) 编程语言(345) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(148) 搜索引擎优化(146) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(107) 时政(103) 排名优化(95) 搜索引擎收录(93) 网站设计(92) 电子商务(88) 引擎(86) 移动互联网(85) 开发框架(79) 开发(75) 网站服务器(74) 框架(68) 前端开发(68) 网站分析(66) 网站建设方案(65) 关键(64) 流量(63) 源码(62) 百度优化(62) 网站权重(61) 开放源代码(59) seo培训(53) 网页设计(51) 百度(51) php框架(50) 网站建设知识(50) 大数据(50) 谷歌(49)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2025 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

百度 下载 2025 2024 2026 货源 货货源 虚拟 禅道 报名 金蝶KIS旗舰版
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们