php安全(二):xss攻击

本文介绍了XSS(跨站脚本攻击)的概念及其两种主要类型:反射型和存储型攻击,并详细解释了这两种类型的攻击方式及可能造成的危害。此外,还提供了几种防御XSS攻击的方法,包括使用htmlspecialchars函数进行转义、利用正则表达式过滤HTML标签以及采用PHP内置的strip_tags函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   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标签
    ?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值