CGI编程的安全性——文件名
如果用户输入一个现有文件或对系统的操作是非常重要的部分,比如输入文件名!文件名称是 / /密码等,用户可以修改文件可能被更新时,任何。第二天注册网站,你会发现密码需要修改,然后你只会写信给系统管理员寻求帮助。所以在CGI脚本中确保所有字符都是合法的。
下面的代码可以过滤掉非法字符。
如果(($ file_name = ~ / { ^ a-za-z_ 。} /)| |($ file_name = ~ / ^ , /))
{ #文件包含非法字符。}
最好把上面的代码作为子程序,这样可以反复调用,这样也便于修改。有两种解决方案不允许输入HTML。
1,一个简单的方法是不允许的(小于HTML),因为所有的语法都必须包含在两个字符中,如果它们返回一个错误,就是防止HTML被提交到一个简单的方法中。一行Perl代码快速清除了这两个字符:
user_input美元= ~ / / / S G;
2,更复杂的方法是将这两个字符组合成HTML代码(特殊代码),用于表示每个字符而不使用字符本身。所有LT下面的代码;用GT替换小于符号;替换多于符号,并完成转换:
user_input美元= ~ S / $ user_input = ~ / / / G gt;