php安全(二):xss攻击

   XSS 全称为 Cross Site Scripting,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,进而达到某些人的攻击目的。

分类
1、XSS反射型攻击,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。

2、XSS存储型攻击,恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性,比较常见场景是在博客,论坛等社交网站上,但OA系统,和CRM系统上也能看到它身影,比如:某CRM系统的客户投诉功能上存在XSS存储型漏洞,黑客提交了恶意攻击代码,当系统管理员查看投诉信息时恶意代码执行,窃取了客户的资料,然而管理员毫不知情,这就是典型的XSS存储型攻击。

危害
1.窃取cookies,读取目标网站的cookie发送到黑客的服务器上

2.读取用户未公开的资料,如果:邮件列表或者内容、系统的客户资料,联系人列表等等

防御

1、最简单的处理办法,只需要在接受数据处理的时候用上过滤函数htmlspecialchars,这个函数会把代码中的特殊字符转义成HTML实体,输出的时候就不会影响页面了

htmlspecialchars($_POST['content']);

2、另一种方法是直接过滤掉html标签,这里要用到正则表达式

<?php
        $rege = '/<\/?[^>]+>/';
        $result = preg_replace($rege,"",$_POST['content']);
        echo $result;

    ?>

3、PHP提供了一个内置的strip_tags函数可以出去字符串中HTML和PHP标签,仅保留参数中指定的标签

<?php

        $str = '<p>Test parjlkasdf </p><a href="#test">Other text</a>';
        echo strip_tags($str);
        echo "</br>";
        echo strip_tags($str,'<p> <a>');//允许p标签和a标签
    ?>

猜你喜欢

转载自blog.csdn.net/llllllloooooo/article/details/80492858