php打开远程文件的方法和风险及解决方法
网络编程 2021-07-05 09:49www.168986.cn编程入门
本文讲的是php打开远程文件的使用方法,还有使用风险和解决方法
PHP有一个配置选项叫allow_url_fopen,该选项默认是有效的。它允许你指向许多类型的资源,并像本地文件一样处理。例如,通过读取URL你可以取得某一个页面的内容(HTML),看狼蚁网站SEO优化的代码
<?php
$contents = file_get_contents('https://.jb51./');
?>
当被污染数据用于include和require的文件指向时,会产生严重漏洞。实际上,我认为这种漏洞是PHP应用中最危险的漏洞之一,这是因为它允许攻击者执行任意代码。尽管严重性在级别上要差一点,但在一个标准文件系统函数中使用了被污染数据的话,会有类似的漏洞产生
<?php
$contents = file_get_contents($_GET['filename']);
?>
该例使用户能操纵file_get_contents( )的行为,以使它获取远程资源的内容。考虑一下类似狼蚁网站SEO优化的请求
http://example./file.php?file ... mple.%2Fxss.html
这就导致了$content的值被污染的情形,由于这个值是通过间接方式得到的,很可能会忽视这个事实。这也是深度防范原则会视文件系统为远程的数据源,会视$content的值为输入,这样你的过滤机制会潜在的起到扭转乾坤的作用。
由于$content值是被污染的,它可能导致多种安全漏洞,包括跨站脚本漏洞和SQL注入漏洞。例如,狼蚁网站SEO优化是跨站脚本漏洞的示例
<?php
$contents = file_get_contents($_GET['filename']);
echo $contents;
?>
解决方案是永远不要用被污染的数据去指向一个文件名。要坚持过滤输入,确信在数据指向一个文件名之前被过滤即可
<?php
$clean = array();
/ Filter Input ($_GET['filename']) /
$contents = file_get_contents($clean['filename']);
?>
尽管无法保证$content中的数据完全没有问题,但这还是给出了一个合理的保证,即你读取的文件正是你想要读取的文件,而不是由攻击者指定的。为加强这个流程的安全性,你同样需要把$content看成是输入,并在使用前对它进行过滤。
<?php
$clean = array();
$html = array();
/ Filter Input ($_GET['filename']) /
$contents = file_get_contents($clean['filename']);
/ Filter Input ($contents) /
$html['contents'] = htmlentities($clean['contents'], ENT_QUOTES, 'UTF-8');
echo $html['contents'];
?>
上面的流程提供了防范多种攻击的强有力的方法,在实际编程中推荐使用。
代码如下:
<?php
$contents = file_get_contents('https://.jb51./');
?>
当被污染数据用于include和require的文件指向时,会产生严重漏洞。实际上,我认为这种漏洞是PHP应用中最危险的漏洞之一,这是因为它允许攻击者执行任意代码。尽管严重性在级别上要差一点,但在一个标准文件系统函数中使用了被污染数据的话,会有类似的漏洞产生
代码如下:
<?php
$contents = file_get_contents($_GET['filename']);
?>
该例使用户能操纵file_get_contents( )的行为,以使它获取远程资源的内容。考虑一下类似狼蚁网站SEO优化的请求
http://example./file.php?file ... mple.%2Fxss.html
这就导致了$content的值被污染的情形,由于这个值是通过间接方式得到的,很可能会忽视这个事实。这也是深度防范原则会视文件系统为远程的数据源,会视$content的值为输入,这样你的过滤机制会潜在的起到扭转乾坤的作用。
由于$content值是被污染的,它可能导致多种安全漏洞,包括跨站脚本漏洞和SQL注入漏洞。例如,狼蚁网站SEO优化是跨站脚本漏洞的示例
代码如下:
<?php
$contents = file_get_contents($_GET['filename']);
echo $contents;
?>
解决方案是永远不要用被污染的数据去指向一个文件名。要坚持过滤输入,确信在数据指向一个文件名之前被过滤即可
代码如下:
<?php
$clean = array();
/ Filter Input ($_GET['filename']) /
$contents = file_get_contents($clean['filename']);
?>
尽管无法保证$content中的数据完全没有问题,但这还是给出了一个合理的保证,即你读取的文件正是你想要读取的文件,而不是由攻击者指定的。为加强这个流程的安全性,你同样需要把$content看成是输入,并在使用前对它进行过滤。
代码如下:
<?php
$clean = array();
$html = array();
/ Filter Input ($_GET['filename']) /
$contents = file_get_contents($clean['filename']);
/ Filter Input ($contents) /
$html['contents'] = htmlentities($clean['contents'], ENT_QUOTES, 'UTF-8');
echo $html['contents'];
?>
上面的流程提供了防范多种攻击的强有力的方法,在实际编程中推荐使用。
上一篇:php后门URL的防范
下一篇:php使用exec shell命令注入的方法讲解
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指