• 0
  • 0

常见代码注入

2020-01-19 28 0 admin 所属分类:PHP 记录

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]);
    }
}



 

返回顶部