gpt4 book ai didi

html - 使用C通过cgi生成简单的html页面

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:51 25 4
gpt4 key购买 nike

C 程序:

#include <stdio.h>
#include <stdlib.h>
int main()
{
char *data = getenv("QUERY_STRING");
char userName[30];
sscanf(data,"uname=%s", userName);
printf ("Content-Type: text/html\n\n");
printf ("<html>");
printf ("<head> </head>");
printf ("<body>");
printf ("<h2 style=""text-align:center;color=red"";> %s </h2>", userName);
printf ("</body> </html>");
return 0;
}

HTML:

<!doctype html>

<html lang="en">

<head>

</head>

<body>
<form action="echo.cgi" method="get">
Please enter your name: <input type="text" name="uname"> <br>
<input type="submit" value="Submit">
</form>
</body>

</html>

我正在尝试使用 C 程序制作一个简单的 html 页面,该页面仅显示变量 uname 以及来自 html 的 GET。我试图通过首先将 C 编译为 CGI 来做到这一点:

gcc echo.c -o echo.cgi

它做得很好。但是,每当我按下提交时,cgi 文件就会开始下载。我做错了什么

最佳答案

您必须通过配置了 CGI 的 HTTP 服务器运行它。简单地将浏览器导航到磁盘上的本地 HTML 文件不会执行您的代码。服务器将执行您的代码并将输出作为响应返回。

此外,我想指出 CGI 存在安全风险。我意识到这可能只是最小的示例代码,但是因为您在调用 sscanf 之前没有检查字符串的边界,您有一个漏洞,有人可以利用该漏洞来访问您的服务器。 https://en.m.wikipedia.org/wiki/Buffer_overflow

关于html - 使用C通过cgi生成简单的html页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46982843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com