php.ini安全设置 register_global = off magic_quotes_gpc = off display_error = off log_error = on # allow_url_fopen = off expose_php = off open_basedir = safe_mode = on disable_function = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source,get_cfg_var safe_mode_include_dir =
DB SQL预处理 mysql_real_escape_string (很多PHPer仍在依靠addslashes防止SQL注入,但是这种方式对中文编码仍然是有问题的。addslashes的问题在于黑客可以用0xbf27来代替单引号,GBK编码中0xbf27不是一个合法字符,因此addslashes只是将0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,具体见这篇文章)。用mysql_real_escape_string函数也需要指定正确的字符集,否则依然可能有问题。 prepare + execute(PDO) ZendFramework可以用DB类的quote或者quoteInto, 这两个方法是根据各种数据库实施不用方法的,不会像mysql_real_escape_string只能用于mysql
必须保留HTML标签情况下可以考虑以下工具: HTML Purifier: HTML Purifier is a standards-compliant HTML filter library written in PHP. PHP HTML Sanitizer: Remove unsafe tags and attributes from HTML code htmLawed: PHP code to purify & filter HTML