#cgi #handler #rocket #rfc #directory #web-programming-rocket #3875

rocket-cgi

为Rocket提供简单的CGI(RFC 3875)处理器。

3个不稳定版本

0.2.1 2022年12月31日
0.2.0 2022年12月30日
0.1.0 2022年12月29日

#1247 in HTTP服务器

MIT/Apache

39KB
697

为Rocket提供简单的CGI(RFC 3875)处理器。

简单的符合标准CGI处理器。这仍然是一个WIP,并且将在安全待办事项得到处理之前保持如此。

用法

只需挂载一个带有CGI处理器的目录。

rocket().mount("/cgi", CGIDir::new("./cgi"))

配置

  • cgi数据限制(默认1 MiB)

注意

此CGI处理器将尽可能快地尝试终止脚本。如果进程关闭stdout、打印了HEAD请求的头部行或发送了重定向,都将导致进程被终止。

这也没有实现规范中的几个可选部分。例如,扩展方法(甚至包括PUT & DELETE)都不受支持。

待办事项

  • 安全
    • 检查文件权限 - 禁止可写文件?
    • 检查文件权限 - 禁止setuid位
    • 阻止路径遍历
    • 忽略点文件/隐藏文件
  • 功能
    • 添加默认文件类型
    • 重定向
    • 扩展头部
  • 测试
    • 测试仅Windows特有的功能(隐藏文件 & 系统临时文件)

依赖

~15–50MB
~801K SLoC