我需要将文本框的内容传递给一个变量。即在 html 页面的 texbox 中输入的任何内容都需要传递给变量。这是因为我在 linux shell 编程中调用 HTML(也包括 CGI)。我需要根据需要操纵该变量。你有什么想法吗?
我需要做的是,我想从用户那里获取 MAC 地址作为输入。即我们应该有一个带有文本框的 HTML 页面,用户将能够输入 MAC 地址。因此,无论用户在文本框中输入什么,都需要传递给一个变量。
一旦我们有了这个变量,这个脚本就会自动将这个 MAC 地址添加到 linux 防火墙中以拒绝访问。
代码应类似于以下内容:
!/bin/bash
echo "Content-type: text/html"
echo ""
echo ""
echo "enter the MAC address "
iptables -A INPUT -m mac --mac-source $mac_address -j DROP
service iptables save
service iptables restart
我会将此文件 (test.cgi) 保存在/var/www/cgi-bin 目录下,然后我将从 firefox 运行此脚本。
所以现在的问题是我有变量$mac_address
。 CGI 不会将文本框输入传递到变量 $mac_address。
最佳答案
这个问题的真正答案是不要。
您的 Web 服务器似乎以 root
权限运行。这是第一个禁忌。
您真的想让整个世界都能够修改您的防火墙配置吗?您无法控制 shell 脚本的调用方式以及传递给它的内容。您正在打开主要安全漏洞。
参见 WWW Security FAQ on CGI scripts和 Writing secure CGI scripts以及CGI Security : Better Safe than Sorry .
关于security - 使用 shell 脚本进行 CGI 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1206494/