繁体   English   中英

使用C生成带有cgi的简单html页面

[英]using C to generate simple html page with cgi

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页面,该页面仅显示html中的GET变量uname。 我正在尝试通过以下方式将C编译为CGI:

gcc echo.c -o echo.cgi

很好。 但是,每按一下提交,CGI文件就会开始下载。 我究竟做错了什么

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM