一些托管服务提供商禁用了 PHP 函数 parse_ini_file()。
任何在那里使用它的尝试都将失败,并显示错误“parse_ini_file() 出于安全原因已被禁用”。
这种配置是如此普遍,以至于作为最流行的 CMS 之一的 Joomla 避免直接使用 parse_ini_file() 而是将任务分为两步:
我的问题是,如何使用 parse_ini_file() 可以被视为安全威胁,或者如何禁用 PHP 函数 parse_ini_file() 可以提高安全性?
会不会是骗局?
我的意思是,也许有人在过去的某个地方混淆了 parse_ini_file() 和 ini_set(),并认为 parse_ini_file() 可以更改 PHP 环境的配置。
博主可以在这里和那里提出建议,天真的系统管理员可以在不问自己任何问题的情况下遵循这些建议。
最佳答案
parse_ini_file 的限制试图防范的安全风险是从任意文件读取,而不是解析其内容。
如果您能够读取您通常不应访问的文件(例如,系统的密码文件;或属于另一个用户的用户),则从任意文件读取可被视为安全威胁。即使文件不是 ini 格式,parse_ini_file() 返回的结果仍然可能提供信息。
在 PHP <= 5.3.x="">=>parse_ini_file() was restricted什么时候safe mode被启用。在 PHP >= 5.4 中,安全模式被删除(支持要求实际系统级安全性,而不是使用越来越多的功能可以读取的打地鼠游戏的语言以越来越有创意的方式来自任意文件)。
禁止 parse_ini_file() 的建议是一个古老的建议,从安全模式仍然存在的时候开始。它并不比从文件读取的任何其他 PHP 函数更危险。现在禁止 parse_ini_file() 的托管服务提供商(尤其是在 file_get_contents() 打开之后)是被误导的,根据不再有效的旧建议操作,甚至有可疑的好处什么时候有效。
parse_ini_file() 的 PHP 源代码基本上可以归结为调用与 parse_ini_string 相同的代码,只是初始化模式略有不同(因此可以从文件中读取,另一个是字符串)。否则,他们使用相同的代码来实际解析 ini 文件并返回结果。
关于php - PHP函数parse_ini_file()真的有那么危险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067087/
从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时