security - 使用 shell 脚本进行 CGI 编程

标签 security bash shell cgi

我需要将文本框的内容传递给一个变量。即在 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 scriptsWriting secure CGI scripts以及CGI Security : Better Safe than Sorry .

关于security - 使用 shell 脚本进行 CGI 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1206494/

相关文章:

linux - virsh destroy 和 virsh undefine 有什么区别

bash - docker '$ yes | true' 中的 Gitlab runner 以 exit 1 返回

linux - 允许容器的非 root 用户执行需要功能的二进制文件

asp.net - 如何查看针对 ASPNETDB 发出的 SQL 命令并观察数据流?

security - 我什么时候应该在我的应用程序中使用 ACL

bash - WGet的下载顺序逻辑

linux - 使用 sed 提取多个值

shell - 使用 Golang 安全执行命令(避免远程执行)

ios - SecKeyEncrypt SecPaddingNone iOS

python - 在 python 2.6 脚本中执行从终端获取参数的终端命令