昨天晚上分析了一下危险字符,有以下几点结论:
1、对于用户注册,可以限定运行注册的字符,比较常用的有“abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789”,其它的字符就最好不要允许注册了!一方面,免得除Unicode编码外输出特殊字符出错,一方面也免得被注入。
2、对于GET参数,最危险的字符应该就是单引号“'”了,但是,注意,有的程序员以为只有这个字符不被允许就安全了,错!GET参数的危险字符有这些:“'”、“"”、“=”、“<”、“>”。其实空格也算是个危险字符,但是其实只要过滤了上面5个字符的话,空格不空格也就无所谓了~
3、对于POST提交的数据,当然要比GET的多一些,但是基本上,GET的危险参数也就是POST的主要危险参数字符了。但是对于POST的内容数据,有的时候应该处理成转换(注意:是“转换”而不是“过滤”)。
“'”to“'”
“"”to“"”
“=”to“=”
“<”to“<”
“>”to“>”
“&”to“&”(这个必须在最后替换,否则对前面的替换造成混乱)
“回车”to“<br />”
这里要特别声名!有的站长喜欢把空格替换成“ ”。千万不要,否则将造成很多问题。
在这里有关内容替换的说明并不多,请大家多研究一下!
注意:PHP及有这样类似特效的程序的转换方法就自行研究一下
