我尝试做一个简单的上传表单。
我正在使用jQuery上传(https://github.com/blueimp/jQuery-File-Upload/archive/master.zip)
以简单的形式(http://pastebin.com/wCUB2EkR)(数据url="server/php/?index.php"(
我把index.html和.js放在"www"目录中,把server/php/[index.php,UploadHandler.php]放在csp文件夹中。我在"server/php/index.php"的末尾添加了"exit(200(;",这样就不会有空的响应
我将"entity_size"更改为没有413错误(请求实体太大(
当我试图上传一个文件时,我有几个问题:
在G-WAN控制台中,我有以下输出:
sh: 2: Content-Disposition:: not found
sh: 3: Content-Type:: not found
: not found
在access.log中,我有这个"[Mon Feb 25 10:29:53 2013 GMT] xxx "POST /server/php/?index.php" 127 828 "http://yy:8080/index.html"
我使用的是最新版本(4.2.19(
[更新]安全问题?
我刚刚注意到一个可怕的行为(链接到我的GWAN输出结果…(
我使用的不是"server/php/?index.php",而是一个简单的Perl脚本,它可以获取STDIN并打印到一个文件(http://pastebin.com/SnXkjFya)
为了测试,我尝试上传一个带有示例命令的.sh脚本,并在GWAN控制台中注意到服务器实际上试图在我的.sh文件中执行所有命令。。。
我尝试使用另一个包含"touch-testgwan"的文件(名为test.txt(,通过POST在表单中上传。
文件"testgwan"是在GWAN目录的根目录创建的…
我肯定做错了什么,但GWAN不应该用"post"执行命令。。。
更新:
由于我们无法复制此问题,Geoffrey通过电子邮件向我们发送了他在以下平台上的测试(他使用的是AMD Phenom(tm(II X4 955处理器和未经修改的系统管理程序(:
Ubuntu 12.04 32bits, G-WAN 4.2.19: problem
Ubuntu 12.04 32bits, G-WAN 4.2.27: OK
Ubuntu 10.04 32Bits, G-WAN 4.2.19: OK
Ubuntu 10.04 64Bits, G-WAN 4.2.19: OK
Ubuntu 10.04 32Bits, G-WAN 4.2.27: OK
Ubuntu 10.04 64Bits, G-WAN 4.2.27: OK
因此,对于Geoffrey来说,G-WAN的最新版本已经解决了他的问题,而G-WAN的前一版本在Ubuntu 12.04 32位版本中也存在这个问题。
如果您查看G-WAN提供的entity.c
示例(我们知道它的源代码(,那么您将看到G-WAN不可能"执行"POST实体。
当得到明确授权时,G-WAN将上传POST实体,达到您定义的限制——这是它唯一能做的事情。
现在,由于不是提供PHP
和Python
脚本的源代码(这两个都被G-WAN盲目执行(,所以任何人都没有机会告诉你做错了什么。
考虑到你的英语水平,你可能会从联系像你一样会说法语的G-WAN支持团队中获益。
由于G-WAN不是开源的(我理解原因并同意你的观点(,我无法告诉你G-WAN为什么会这样做。
我提供了源代码,甚至是"PHP"文件。
这些文件在jQuery上传文件的"master.zip"中,这是我的第一个链接。
忘记php、perl或python内容脚本。对于"helloworld"perl脚本,我有完全相同的行为。(打印"你好世界";(
GWAN有一个奇怪的行为,我猜是安全问题(因为GWAN执行输入文件中的所有命令(。
我的表单将输入文件发送到"helloworld"perl脚本,但GWAN执行文件中的所有命令(就像GWAN执行"sh-test.txt"一样(
我的问题可能会引起其他尝试GWAN的人的兴趣,所以,即使我的英语不完美,我也会继续在这里回答。
ps:不要轻视潜在客户。你的名声不是很好。在法语中,我们会说"Donner le bâton pour se fair battre"。