从python cgi执行用户shell命令

时间:2012-12-10 13:20:09

标签: python linux cgi

我有一个任务分配给我来创建一个python脚本,当它被称为cgi时,应该在用户机器上执行该命令。

我是否可以执行从html表单传递给python cgi的shell命令?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title>xyz</title>
</head>
<body>
<big><big>Login
Here<br>
<br>
</big></big>
<form action="/var/www/cgi-bin/xyz.py" name="xyzform"><big>xyz
<br>
 enter your value<br>
  <input name="text"><br>
  <br>
  <br>
<input type="submit">
  <br>
</form>
&nbsp;__&nbsp;<br>
</body>
</html>

当用户提交此表单时,文本应该在python cgi中匹配,然后执行命令以访问用户调用机器上的nfs文件。

是否可以使用cgi或cgitb模块?如果没有,那我该如何实现呢?

2 个答案:

答案 0 :(得分:1)

您可以在用户的计算机上执行的最佳功能是javascript 除此之外的任何事情都会危及安全性,因此显然是不可能的

答案 1 :(得分:1)

通常出于安全原因和设计,您无法使用典型的Web技术在用户计算机上执行代码。但是有可能并且有时需要做这样的事情。一个示例是基于Web的应用程序,其具有需要与用户的硬件设备交互的某些屏幕。以下是一些可以让您在用户计算机上执行代码的潜在解决方案:

  1. ActiveX仅适用于IE,仅适用于Windows。但是这将允许您编写在用户计算机上执行的代码。
  2. Firefox extension using nsIProcess。这是我过去使用的一种很好的交叉操作系统方法。它将在Linux,Win,Mac上运行,让你创建一个可以在机器上执行代码的扩展。然后,您的网页可以与您的扩展程序通信,以运行您需要的代码。
  3. Window's RPC是一种可以从服务器在用户计算机上执行代码的方法。这仅在所有计算机都是Windows计算机时才有效,并且通常所有计算机都在同一个LAN上,并且是同一个Windows域的一部分。您的服务器还应具有域上的权限,以在用户的​​桌面上执行代码。这样做的真正好处是您不必在用户计算机上安装任何东西,并且它是跨浏览器兼容的。
  4. 我确信有很多方法可以做到这一点,上面的列表只是它们的一个示例。实现这一点时,牢记安全性非常重要。您必须在设计中确定只有您应该被授权执行此类操作的网站才能在用户计算机上执行命令。