从IBM AppScan报告中,我知道我的代码没有进行任何CGI EVENT_PARAMETER验证来防止站点遭受XSS(跨站点脚本)攻击,链接注入(促进跨站点请求伪造)。
我在CGI.pm中尝试了以下所有验证,以检查EVENT_PARAMETERS是否包含不需要的字符。
但是什么都没做。
perl中是否还有其他方法可以针对XSS攻击对CGI EVENT_PARAMETERS进行验证?
sub string_param{ #my local function in cgi.pm to validate the parameter
# othere code snippets here
foreach my $val (@raw){
$val =~ s/.*<\/?(script|img|a).*//igs;
$val =~ s/%//igs;
$val =~ s/[^A-Za-z0-9 ]*/ /g;
$val =~ s/[^0-9\-].*//g;
$val = encode_entities($val);
push( @cooked, $val );
# returning the event parameter here
}
想知道perl中是否还有其他CGI EVENT_PARAMETER验证方法可以解决XSS跨站点脚本攻击。
答案 0 :(得分:1)
https://perldoc.perl.org/CGI.html
使用CGI cpan模块,您可以使用子例程escapeHTML并防止XSS在显示用户输入之前对其进行转义,因为没有来自用户的html输入是可行的,因此用户也将无法插入链接。