我目前在CentOS机器上托管Drupal 6网站.Drupal(CMS)配置包含几十个不应该作为一般最佳编码实践分叉的第三方模块.但是,其中一些模块使用phpexec命令才能正常运行.
该站点允许管理员通过UI配置在任何页面中嵌入php代码片段,并授予他们可以访问php代码输入格式的权限.我需要将此输入格式保留给管理员,因为有几个节点(页面)和面板窗格使用小的,无害的PHP代码片段,例如,将特定表单嵌入到内容区域中.
问题是,如果有人妥协的管理员帐户,然后他们可以在网站上运行任意PHP代码,从而通过PHP的运行shell命令exec,passthru等有什么办法,从操作系统层面,限制什么shell命令php可以传递给机器吗?这可以通过限制从PHP的某些程序的文件权限来完成吗?
注意:我不能使用php.ini disable_functions指令,因为exec在许多情况下我仍然需要正常运行,例如,模块使用某些shell命令,例如视频编码.
我试图找出如何检索完整(这意味着所有的数据)的HTML页面源来自<iframe>其src来自同一原始域作为它嵌入页面.我想在任何给定时间获得确切的源代码,由于Javascript或php生成<iframe>html输出,这可能是动态的.这意味着AJAX调用$.get()对我来说不起作用,因为页面可能已经通过Javascript修改或根据请求时间或mt_rand()在php中唯一生成.我无法<!DOCTYPE>从我的身上找到确切的声明<iframe>.
我一直在试验并搜索Stack Overflow并且没有找到一个解决方案来检索所有页面源代码,包括<!DOCTYPE>声明.
一位在回答如何获得与jQuery整个页面的HTML?建议,为了检索<!DOCTYPE>信息,你需要手动构造此声明,通过检索<iframe>的document.doctype属性,然后将所有的属性到<!DOCTYPE>申报自己.这真的是从<iframe>HTML页面源中检索此信息的唯一方法吗?
以下是我看过的一些值得注意的Stack Overflow帖子,这不是重复的:
下面是我的一些本地测试代码,说明到目前为止我最好的尝试,只检索内包括数据<iframe>的<html>标签:
main.html中
<html>
<head>
<title>Testing with iframe</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function test() {
var doc = document.getElementById('iframe-source').contentWindow.document;
var html = $('html', doc).clone().wrap('<p>').parent().html();
$('#output').val(html);
}
</script>
</head>
<body>
<textarea id="output"></textarea> …Run Code Online (Sandbox Code Playgroud) 我有一个以下格式的表格:
STATE SURVEY_ANSWER
NC high
NC moderate
WA high
FL low
NC high
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个可以得到以下结果的查询:
STATE HIGH MODERATE LOW
NC 2 1 0
WA 1 0 0
FL 0 0 1
Run Code Online (Sandbox Code Playgroud)
不幸的是,这些是我得到的结果:
STATE HIGH MODERATE LOW
NC 3 1 1
WA 3 1 1
FL 3 1 1
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
Select mytable.STATE,
(SELECT COUNT(*) FROM mytable WHERE mytable.survey_answer = 'low' and state = mytable.state) AS low,
(SELECT COUNT(*) FROM mytable WHERE mytable.survey_answer = 'moderate' and state = mytable.state) AS moderate,
(SELECT COUNT(*) …Run Code Online (Sandbox Code Playgroud)