可以采用以下几点措施。
作为一家“创意+整合+营销”的成都网站建设机构,我们在业内良好的客户口碑。成都创新互联提供从前期的网站品牌分析策划、网站设计、成都做网站、网站制作、成都外贸网站建设、创意表现、网页制作、系统开发以及后续网站营销运营等一系列服务,帮助企业打造创新的互联网品牌经营模式与有效的网络营销方法,创造更大的价值。
(1)在用户数据进入数据库之前使用addslashes()函数过滤,可以进行一些字符的转义,并过滤掉可能引起数据库问题的字符。可以使用stripslashes()将数据返回到原始形式。
(2)在php.infi中开启magic_quotes_gpc和magic_quotes_runtime指令。它们可以自动的添加和过滤斜杠,前者主要用于格式化GET,POST,和cookie变量,后者用于过滤进出数据库的数据。
(3)当在system()或者exex()函数中使用用户输入数据作为参数时,必须使用escapeshellcmd()。用来避免怀有恶意的用户强迫系统运行某些命令。
(4)可以使用stip_tags()从一个字符串中去掉HTML和PHP标记,这样可以避免用户将恶意节本植入到用户的数据中。
(5)可以使用htmlspecialchars(),可以将字符专程它们的HTML等价实体。例如,将被转换成lt; ,该函数可以将任何脚本转换成无害的字符。
总之,在使用用户的数据时,一定要小心,原则即是不要相信用户输入的任何数据,必须要进行过滤和转换。
调度方法
这种方法是用一个单一的 php 脚本调度(通过 URL)。其他任何操作在必要的时候使用include或require包含进来。这种方法一般需要每个 URL 都传递一个单独的GET变量用于调度。这个GET变量可以被认为是用来替代脚本名称的更加简化的设计。
我来解释一下吧
preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);
去掉控制字符,你google一下ascii table就知道了,php里面 - 代表范围,比如\x00-\x08指的是ASCII代码在\x00到\x08范围的字符,\x0A和\x0D代表回车换行,所以没包含在这个里面,否则直接\x00-\x1F了,
$string = str_replace(array("\0","%00","\r"),'',$string);
\0表示ASCII 0x00的字符,通常作为字符串结束标志
$string = preg_replace("/(?!(#[0-9]+|[a-z]+);)/si",'',$string);
我们知道HTML里面可以用xx;来对一些字符进行编码,比如 (空格), ߷ Unicode字符等,A(?!B) 表示的是A后面不是B,所以作者想保留 ߷类似的 HTML编码字符,去掉其他的问题字符,比如 123; nbsp;
str_replace(array("%3C",''),'',$string);
第一个''多余吧,%3C是编码以后的 , 一般用在URL编码里
str_replace(array("%3E",''),'',$string);
str_replace(array('"',"'","\t",' '),array('"',"'",'',''),$string);
略过
有问题再追问