小编AJ *_*haw的帖子

我该如何解决facebook iframe和浏览器安全之间的这种冲突?

我有一个我作为FBML应用程序构建的facebook应用程序.最近我注意到FBML已被弃用,Facebook现在只推荐使用iframe应用程序.我最初避免的东西,因为我的理解是iframe不是有效的xhtml代码,当时我试图为所有内容编写100%经过验证的代码.

但是我也不喜欢构建不受支持的应用程序,所以我开始使用iframe方法显示更改我的应用程序以使用完全呈现的html页面.

当我在自己的窗口中显示它们时,我的页面会完美呈现,但是当在Facebook提供的帧内渲染时,它们在Safari中完全空白.起初我很难过,无法弄清楚为什么没有渲染,直到使用Internet Explorer的朋友告诉我他看到以下错误:

为帮助保护您在本网站上输入的信息的安全性,此内容的发布者不允许其在框架中显示.

所以我开始谷歌搜索这个错误,并在困惑的人们试图让他们的框架代码工作之间找到大量的论坛讨论,并发现这是一个错误,在2009年IE8推出时发生在一夜之间.微软网站上的一点点挖掘再次表明它是微软为防止点击而发明的安全功能.

显而易见的原因是服务器发送X-Frame-Options标题,Firefox和Internet Explorer的响应是显示有关安全性和帧的错误消息,而Chrome和Safari等Webkit浏览器的响应是一个无益的空白框架.我拥有运行apache服务器的硬件,我写了所有的html,我当然从未明确发送过X-Frame-Options标头,所以我必须假设我的php安装默认在它提供的所有页面上发送这个标头作为一个全面的安全增强(或者是Apache正在做的).

显然,既然我知道是什么导致它,我可以弄清楚是谁发送标题并停止它,但我的问题是关于最佳实践:点击预防显然是一个值得的原因,并且因为我的服务器链的某些部分认为重要的是发送这个标题而不要求,显然有人认为这是一个好主意.然而,Facebook应用程序,根据设计,从iframe中的另一个网站加载内容,所以我很惊讶在互联网上我很少或根本没有谈论这个.是否有另一种解决方法,或者仅仅是针对打算从iframe中查看的页面不应该打开的情况?

此外,如果摆脱标题是正确的方法,有没有人知道为什么它被发送和在哪里关闭它?我正在使用apache和php的默认安装运行Snow Leopard Server.

php apache security iframe facebook

6
推荐指数
1
解决办法
850
查看次数

如何让PHP 5.3.8读取.user.ini文件?

我有一台运行Apache 2.2.21和PHP 5.3.8的Mac OS X服务器

我想在每个目录的基础上设置一些php.ini样式指令.根据PHP 手册页,从PHP 5.3.0开始,通过在目录中放置一个名为".users.ini"的文件,可以在每个目录的基础上覆盖主php.ini运行时配置文件中的指令.包含您想要影响的脚本.

对我来说,这个解决方案非常适合使用.htaccess文件中包含的php_value和php_flag指令,但我创建的.user.ini文件被PHP忽略.

根据phpinfo(),我的.user.ini文件应每5分钟重新缓存一次,文件名正确设置为".user.ini":

user_ini.cache_ttl   300
user_ini.filename    .user.ini
Run Code Online (Sandbox Code Playgroud)

Apache设置为AllowOverides,我已经确认通过.htaccess文件正确设置PHP指令会覆盖我想要控制的ini设置.我尝试过的最简单的测试文件是一个只包含以下行的.user.ini文件:

display_errors = On
Run Code Online (Sandbox Code Playgroud)

这不起作用,使用系统范围的目录(= Off).但是,等效的.htaccess文件按预期工作,覆盖系统范围的指令:

php_flag display_errors on
Run Code Online (Sandbox Code Playgroud)

我能找到的一个线索是主php.ini文件开头的神秘[PHP].我在手册中找不到任何关于此节标记的提及,所以我想也许有必要用[PHP]启动文件.我尝试将其添加到我的.user.ini文件的开头,并重新加载我的页面,再等待五分钟,再次重新加载,以确保我没有加载缓存版本,不幸的是它没有任何区别.

我发现的另一个线索是上述PHP 手册页中同样神秘的声明,描述了如何使用.user.ini文件:"这些文件仅由CGI/FastCGI SAPI处理." 不幸的是我不知道如何确认除了我的phpinfo()输出中的行之外还满足这个条件:"GATEWAY_INTERFACE CGI/1.1"因为我的phpinfo中几乎没有其他字符串"cgi"的实例( )输出.我不得不假设这个神秘的陈述并不重要,只是说CGI/FastCGI SAPI进行处理(无论那意味着什么),而不是警告我需要打开一些东西.如我错了请纠正我.

在同一个.user.ini手册页的评论中还提到,使用php-fpm时,.user.ini文件的处理将不起作用.据我所知,我没有使用它,但如果有一个简单的方法可以检查,请告诉我.这确实提出了是否存在与该功能冲突的其他配置选项或模块以及禁用.user.ini文件加载的问题.有人知道答案吗?

为了完整性,我包括我的configure命令,以防有人可以看到一些明显的问题,虽然我不认为我已经从默认值更改它:

'/private/var/tmp/apache_mod_php/apache_mod_php-53.8~2/php/configure'' - prefix =/usr'' - mandir =/usr/share/man'' - infodir =/usr/share/info'' - disable-dependency-tracking'' - sysconfdir =/private/etc'' - with-apxs2 =/usr/sbin/apxs''-enable-cli'' - with-config-file -path =/etc'' - with-libxml-dir =/usr'' - with-openssl =/usr'' - with-kerberos =/usr'' - with-zlib =/usr'' - -enable-bcmath'' - with-bz2 =/usr'' - enable-calendar'' - with-curl =/usr'' - …

php osx-server

3
推荐指数
1
解决办法
3814
查看次数

标签 统计

php ×2

apache ×1

facebook ×1

iframe ×1

osx-server ×1

security ×1