nigelhorne/CGI-Info
GitHub: nigelhorne/CGI-Info
一个Perl编写的CGI环境信息处理库,旨在简化路径与参数解析,并提供基础的Web安全过滤功能。
Stars: 3 | Forks: 4
# CGI-Info
[](https://ci.appveyor.com/project/nigelhorne/cgi-info)
[](https://dl.circleci.com/status-badge/redirect/circleci/8CE7w65gte4YmSREC2GBgW/THucjGauwLPtHu1MMAueHj/tree/main)
[](https://coveralls.io/github/nigelhorne/CGI-Info?branch=master)
[](http://search.cpan.org/~nhorne/CGI-Info/)


[](SECURITY.md)
[](https://x.com/intent/tweet?text=Information+about+the+CGI+Environment+#perl+#CGI&url=https://github.com/nigelhorne/cgi-info&via=nigelhorne)
# 名称
CGI::Info - 关于 CGI 环境的信息
# 版本
版本 1.11
# 概要
`CGI::Info` 模块是一个 Perl 库,旨在提供有关 CGI 脚本运行环境的信息。
它旨在消除硬编码的脚本细节,
增强代码的可读性和可移植性。
此外,它提供了一个简单的 Web 应用防火墙以增加一层安全性。
很多时候,
Perl 程序将脚本名称等信息
硬编码到其源代码中。
一般来说,
硬编码是一种糟糕的风格,因为它会使程序难以阅读,并降低可读性和可移植性。
CGI::Info 试图消除这种情况。
此外,为了辅助脚本调试,当你不在 CGI 环境中运行程序时,CGI::Info 会尝试做一些合理的
处理。
虽然你不应该仅仅依靠它来为你的网站提供安全保障,
但它是另一层防御,积少成多。
```
use CGI::Info;
my $info = CGI::Info->new(allow => { id => qr/^\d+$/ });
my $params = $info->params();
if($info->is_mobile()) {
print "Mobile view\n";
} else {
print "Desktop view\n";
}
my $id = $info->param('id'); # Validated against allow schema
```
# 子程序/方法
## new
创建一个 CGI::Info 对象。
它接受四个可选参数:allow、logger、expect 和 upload\_dir,
这些参数在 params() 方法中有文档说明。
它接受其他可选参数:
- `auto_load`
启用/禁用 AUTOLOAD 功能。
默认为启用。
- `config_dirs`
查找 `config_file` 的位置
- `config_file`
指向一个配置文件,其中包含传递给 `new()` 的参数。
该文件可以是任何常见格式,
包括 `YAML`、`XML` 和 `INI`。
这允许在运行时设置参数。
在非 Windows 系统上,
可以使用以 "CGI::Info::" 开头的环境变量来配置该类。
例如:
export CGI::Info::max_upload_size=65536
由于 Windows 系统不区分大小写,因此它在该系统上无法工作。
如果配置文件中有一个名为 `CGI::Info` 的部分,
则仅使用该部分,
以及 `global` 部分(如果存在)。
- `syslog`
接受可选参数 syslog,以将消息记录到
[Sys::Syslog](https://metacpan.org/pod/Sys%3A%3ASyslog)。
它可以是一个用于启用/禁用 syslog 日志记录的布尔值,或者是一个
将传递给 Sys::Syslog::setlogsock 的哈希引用。
- `cache`
用于缓存 IP 查找的对象。
此缓存对象是一个理解 get() 和 set() 消息的对象,
例如 [CHI](https://metacpan.org/pod/CHI) 对象。
- `max_upload_size`
你可以上传的最大文件大小(-1 表示无限制),默认为 512MB。
该类可以在运行时使用环境和配置文件进行配置,
例如,
设置 `$ENV{'CGI__INFO__carp_on_warn'}` 会导致警告使用 [Carp](https://metacpan.org/pod/Carp)。
有关在运行时配置对象构造函数的更多信息,
请参阅 [Object::Configure](https://metacpan.org/pod/Object%3A%3AConfigure)。
## script\_name
检索正在执行的 CGI 脚本的名称。
这对于 POSTing 很有用,
从而避免了在表单中硬编码路径。
```
use CGI::Info;
my $info = CGI::Info->new();
my $script_name = $info->script_name();
# ...
print "
标签:AppImage, CGI, CPAN, DNS解析, Perl, Syscall, WAF, Web应用防火墙, Web开发, 代码可移植性, 动态网页, 后端开发, 库文件, 开源项目, 环境变量, 系统信息, 网络安全, 脚本配置, 隐私保护