我最近问了一个关于LAMP堆栈不允许发布< script>的问题。通过textarea标记,请求被apache杀死我猜是因为$ _POST,$ _GET和$ _REQUEST字段都是空的。
我只是想知道wordpress如何允许用户添加小部件,更新的模板文件以及使用textarea控件创建页面,该控件允许< script>标签
更新的 我在这里为表单创建了一个pastebin条目:http://pastebin.com/1Jaz9rRz
基本上它是一个自动生成的表单,我从源代码中复制粘贴。
更新
我已将测试代码移到服务器:http://www.007softwares.com/testing.php
表单正在发布给自己,我已回显$ _REQUEST数组以查看发布的内容。您可以看到提交表单的时间,字段是可见的,当您键入脚本标记时,将显示错误页面。希望这会有所帮助。
答案 0 :(得分:1)
这当然是一种误导的安全机制,无论是在您的浏览器中,还是(更有可能)在服务器上。
如上所述,使用phpinfo()
检查Suhosin:
<?php phpinfo(); ?>
您应该在结果输出中看到一些提及“Suhosin”或“Hardened PHP”的字样。
另外,我不排除mod_security
- 您在.htaccess
添加禁用行时所说的错误可能还有其他原因。例如,它可以配置为无法通过.htaccess
关闭。
询问您的网络托管服务商是否有任何可能导致安全问题的安全措施。
答案 1 :(得分:0)
LAMP堆栈不关心通过TEXTAREA提交的文本。接收表单输入的脚本/应用程序可能有一些逻辑,如果它看到SCRIPT标记就会杀死进程,但通常你可以提交你想要的任何文本。
答案 2 :(得分:0)
你的phpinfo()表示string.strip_tags被注册为流过滤器。这可能会导致您的问题。
此外,您的过滤器扩展程序可能配置为剥离,尽管不太可能。
答案 3 :(得分:0)
当用户提交&lt; p>标记它按预期工作。当用户提交&lt;脚本&gt;标记404返回。这让我相信apache正在使用mod_security,配置类似于:
SecFilterDefaultAction "deny,log,status:404"
SecFilter "<script"