SQL 注入
① 转义字符处理不当 如 单引号 '没处理
www.demo.com?query=1'
② 数据类型处理不当 整型数据需要强转 避免夹杂其他参数
③ 查询语句组织不当
user.php?table=user&
④ 错误处理不当 将站点错误信息暴露给用户
$res = mysql_query($getid) or die('<pre>'.mysql_error().'</pre>');
数据入库时将转换单引号、双引号、反斜杠为实体
先将字符串用htmlspecialchars()转换为实体后存储到数据库,然后从数据库读出来时htmlspecialchars_decode()转为HTML标签
XSS攻击
被动式且用于客户端的攻击方式 ,攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie信息、破坏页面结构、重定向到其它网站等
只要存在能提供输入的表单并且没做安全过滤或过滤不彻底,都有可能存在XSS漏洞
① 插入JS脚本
② 插入网页代码
<meta http-equiv="refresh" content="0;">
<iframe src=http://xxxx width=250 height=250></iframe>
function clean_xss( & $string, $low = False) {
if (!is_array($string)) {
$string = trim($string);
$string = strip_tags($string);
$string = htmlspecialchars($string);
if ($low) {
return True;
}
$string = str_replace(array('"', "\\", "'", "/", "..", "../", "./", "//"), '', $string);
$no = '/%0[0-8bcef]/';
$string = preg_replace($no, '', $string);
$no = '/%1[0-9a-f]/';
$string = preg_replace($no, '', $string);
$no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
$string = preg_replace($no, '', $string);
return True;
}
$keys = array_keys($string);
foreach($keys as $key) {
clean_xss($string[$key]);
}
}