gpt4 book ai didi

perl - 防止用户在perl中上传太大的文件

转载 作者:行者123 更新时间:2023-12-02 08:50:41 26 4
gpt4 key购买 nike

大家好,我在 perl 脚本中有这行代码,我允许用户将 5 秒的麦克风录音上传到我的服务器。进行录音的闪光灯会自动将麦克风限制为 5 秒,然后将录音发布到我的服务器。

 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

现在我的问题是,如果有人想要恶意,他们可以直接将内存、带宽和可能的缓冲区溢出张贴到我的服务器脚本。有没有办法防止有多少信息来自用户?

我在读取行之前试过这个,但我不完全确定这是正确的方法。有任何想法吗?谢谢。

if ($ENV{'CONTENT_LENGTH'} > 100000) {
#then return some error message / exit
}

我的问题的编辑和解决方案:

 use CGI qw/:standard/;
use CGI::Carp 'fatalsToBrowser';
$CGI::POST_MAX=1024 * 100; # max 100K posts
#$CGI::DISABLE_UPLOADS = 1; # no uploads

$uploaded_file = param( 'POSTDATA' );
if (!$uploaded_file && cgi_error()) {
print header(-status=>cgi_error());
exit 0;
}

我想感谢你们所有人的快速回复(所有人都点赞),但我必须给第一个发布正确链接的人提供正确答案,尽管他们没有努力写任何东西。我想那才公平?大家有什么看法,欢迎在下方留言。

最佳答案

你说这是一个 Perl 脚本,但没有提到 Perl CGI.pm模块。如果您使用该模块(我推荐),则对拒绝服务保护的支持有限。例如,您可以设置:

$CGI::POST_MAX = 100000;

如果出现任何过大的帖子,CGI.pm 将退出您的脚本并出错。

有一个 decent discussion在手册页中介绍如何避免拒绝服务攻击。

关于perl - 防止用户在perl中上传太大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671995/

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