设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
php打开远程文件的方法和风险及解决方法 ...
返回列表
查看:
104
|
回复:
0
php打开远程文件的方法和风险及解决方法
[复制链接]
yj1281
当前离线
积分
7391
2487
主题
2487
帖子
7391
积分
论坛元老
论坛元老, 积分 7391, 距离下一级还需 9992608 积分
论坛元老, 积分 7391, 距离下一级还需 9992608 积分
积分
7391
发消息
电梯直达
楼主
发表于 2018-2-14 08:15:22
|
只看该作者
|
倒序浏览
|
阅读模式
PHP有一个配置选项叫allow_url_fopen,该选项默认是有效的。它允许你指向许多类型的资源,并像本地文件一样处理。例如,通过读取URL你可以取得某一个页面的内容(HTML),看下面的代码
[U]复制代码[/U] 代码如下:
当被污染数据用于include和require的文件指向时,会产生严重漏洞。实际上,我认为这种漏洞是PHP应用中最危险的漏洞之一,这是因为它允许攻击者执行任意代码。尽管严重性在级别上要差一点,但在一个标准文件系统函数中使用了被污染数据的话,会有类似的漏洞产生:
[U]复制代码[/U] 代码如下:
该例使用户能操纵file_get_contents( )的行为,以使它获取远程资源的内容。考虑一下类似下面的请求:
http://example.org/file.php?file ... mple.org%2Fxss.html
这就导致了$content的值被污染的情形,由于这个值是通过间接方式得到的,因此很可能会忽视这个事实。这也是深度防范原则会视文件系统为远程的数据源,同时会视$content的值为输入,这样你的过滤机制会潜在的起到扭转乾坤的作用。
由于$content值是被污染的,它可能导致多种安全漏洞,包括跨站脚本漏洞和SQL注入漏洞。例如,下面是跨站脚本漏洞的示例:
[U]复制代码[/U] 代码如下:
解决方案
是永远不要用被污染的数据去指向一个文件名。要坚持过滤输入,同时确信在数据指向一个文件名之前被过滤即可:
[U]复制代码[/U] 代码如下:
尽管无法保证$content中的数据完全没有问题,但这还是给出了一个合理的保证,即你读取的文件正是你想要读取的文件,而不是由攻击者指定的。为加强这个流程的安全性,你同样需要把$content看成是输入,并在使用前对它进行过滤。
[U]复制代码[/U] 代码如下:
上面的流程提供了防范多种攻击的强有力的方法,同时在实际编程中推荐使用。
您可能感兴趣的文章:
php下载远程文件类(支持断点续传)
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
获取远程文件大小的php函数
PHP 获取远程文件内容的函数代码
PHP 网络开发详解之远程文件包含漏洞
php带密码功能并下载远程文件保存本地指定目录 修改加强版
php下利用curl判断远程文件是否存在的实现代码
PHP读取文件并可支持远程文件的代码分享
PHP 获取远程文件大小的3种解决方法
php实现按文件名搜索文件的远程文件查找器
PHP实现的一个保存远程文件到本地的函数分享
PHP下载远程文件到本地存储的方法
php获取远程文件大小
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
今日头条
电商运营
用户反馈
客户端