即使我们在浏览器地址栏中传递了URL,我也有很少的Perl脚本可以执行。我只是想阻止这种行为。我想要的是当用户点击附加脚本的按钮或链接时,只有他们应该执行。
www.example.com/cgi-bin/abc.cgi --- Should not work.
<button on-click="/cgi-bin/abc.cgi"> Execute me </button> -- it should work
怎么做?
答案 0 :(得分:4)
你可以这样做,有两种方法可以解决它。 一,当单击按钮时,您可以使用POST方法提交表单,并且只有在使用POST方法调用脚本时才能执行代码,例如:
HTML:
<form method="POST" action="/cgi-bin/abc.cgi"><input type="submit" name="submit_button" value="Execute me"><form>
Perl代码:
if($ENV{REQUEST_METHOD} eq 'POST') {
## execute special code
}
二,您可以在查询字符串中检查参数:
HTML:
<input type="button" value="Execute me" onClick="window.location.href='/cgi-bin/abc.cgi?doExecute=1';">
的Perl:
use CGI;
my $cgi = new CGI;
if(defined $cgi->param('doExecute') && $cgi->param('doExecute')) {
## execute special code
}
我希望这会有所帮助。