什么XSS攻击?PHP防止XSS攻击函数

发布时间: 2013-05-14 浏览次数:22325 分类: PHP教程

XSS 全称为 Cross Site Scripting,用户在表单中有意或无意输入一些恶意字符,从而破坏页面的表现!

看看常见的恶意字符XSS 输入:

1.XSS 输入通常包含 JavaScript 脚本,如弹出恶意警告框:<script>alert("XSS");</script>

2.XSS 输入也可能是 HTML 代码段,譬如:

(1).网页不停地刷新 <meta http-equiv="refresh" content="0;">

(2).嵌入其它网站的链接 <iframe src=http://xxxx width=250 height=250></iframe>

防止XSS攻击测试路径:
 
其实有很多测试XSS攻击的工具:
  • Paros proxy (http://www.parosproxy.org)
  • Fiddler (http://www.fiddlertool.com/fiddler)
  • Burp proxy (http://www.portswigger.net/proxy/)
  • TamperIE (http://www.bayden.com/dl/TamperIESetup.exe)
对于PHP开发者来说,如何去防范XSS攻击呢?php防止xss攻击的函数
可以用如下函数:
    1. <?PHP
    2. /**
    3. * @blog http://www.phpddt.com
    4. * @param $string
    5. * @param $low 安全别级低
    6. */
    7. function clean_xss(&$string, $low = False)
    8. {
    9. if (! is_array ( $string ))
    10. {
    11. $string = trim ( $string );
    12. $string = strip_tags ( $string );
    13. $string = htmlspecialchars ( $string );
    14. if ($low)
    15. {
    16. return True;
    17. }
    18. $string = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $string );
    19. $no = '/%0[0-8bcef]/';
    20. $string = preg_replace ( $no, '', $string );
    21. $no = '/%1[0-9a-f]/';
    22. $string = preg_replace ( $no, '', $string );
    23. $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
    24. $string = preg_replace ( $no, '', $string );
    25. return True;
    26. }
    27. $keys = array_keys ( $string );
    28. foreach ( $keys as $key )
    29. {
    30. clean_xss ( $string [$key] );
    31. }
    32. }
    33. //just a test
    34. $str = 'phpddt.com<meta http-equiv="refresh" content="0;">';
    35. clean_xss($str); //如果你把这个注释掉,你就知道xss攻击的厉害了
    36. echo $str;
    37. ?>
    38. 通过clean_xss()就过滤了恶意内容!

什么XSS攻击?PHP防止XSS攻击函数的更多相关文章

  1. web攻击之一:XSS跨站脚本

    一.浏览器安全 同源策略 影响源的因素:host,子域名,端口,协议 a.com通过以下代码: <script scr=http://b.com/b.js> 加载了b.com上的b.js, ...

  2. XSS CSS Cross SiteScript 跨站脚本攻击

    XSS攻击及防御 - 高爽|Coder - CSDN博客 https://blog.csdn.net/ghsau/article/details/17027893 XSS又称CSS,全称Cross S ...

  3. XSS攻击(跨站攻击)

    漏洞描述 跨站脚本攻击(Cross-site scripting,简称XSS攻击),通常发生在客户端,可被用于进行隐私窃取.钓鱼欺骗.密码偷取.恶意代码传播等攻击行为.XSS攻击使用到的技术主要为HT ...

  4. Java Web使用过滤器防止Xss攻击,解决Xss漏洞

    转: Java Web使用过滤器防止Xss攻击,解决Xss漏洞 2018年11月11日 10:41:27 我欲乘风,直上九天 阅读数:2687   版权声明:本文为博主原创文章,转载请注明出处!有时候 ...

  5. 浏览器常见攻击方式(XSS和CSRF)

    常见的浏览器攻击分为两种,一种为XSS(跨站脚本攻击),另一种则为CSRF(跨站请求伪造). XSS(跨站脚本攻击) 定义 XSS 全称是 Cross Site Scripting,为了与“CSS”区 ...

  6. 小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF

    存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留 ...

  7. 常见的php攻击(6种攻击详解)

    1.SQL注入 SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行.还有一种是通过system()或exec()命令注入的,它具有相同的SQL注入机制,但只针对sh ...

  8. [80Sec]深掘XSS漏洞场景之XSS Rootkit

    顶80SEC的牛. 深掘XSS漏洞场景之XSS Rootkit[完整修订版] EMail: rayh4c#80sec.com Site: http://www.80sec.com Date: 2011 ...

  9. xss构造--如何使用xss语句

    XSS的构造 1.利用[<>]构造html/js 如[<script>alert(/xss/)</script>] 2.伪协议 使用javascript:伪协议来构 ...

  10. Metasploit自动攻击和选择模块攻击详解

    Author:魔术@Freebuf.com 0×1自动攻击 终端启动Metasploit,因为我现在Source Code,所以这样启动! 连接数据库 安装方法,执行以下命令即可(请用ROOT执行). ...

随机推荐

  1. CMDB机柜平台结合zabbix告警展示

    前段时间看了刘天斯老师的机柜展示平台,非常绚丽,而且有大屏显示的话也是能够体现运维价值的.刚好最近自己也在协助朋友做一个开源的CMDB平台,这里就说下我们CMDB平台的一些数据: 开源项目地址:Git ...

  2. Quartz定时任务学习(四)调度器

    org.quartz.Scheduler 类层次 作为一个 Quartz 用户,你要与实现了 org.quartz.Scheduler 接口的类交互.在你调用它的任何 API 之前,你需要知道如何创建 ...

  3. 实践javascript美术馆的小案例,学习到的东西还是蛮多的,包括javascript编程中的预留退路、分离javascript、以及实现向后兼容等

    javascript美术馆(改进2) 一.javascript编程过程中的好习惯 1.实现预留退路 js被禁掉,图片也可以显示出来,href属性带有图片路径 <script src=" ...

  4. Java appendReplacement 和 appendTail 方法

    Matcher 类也提供了appendReplacement 和appendTail 方法用于文本替换: 看以下的样例来解释这个功能: import java.util.regex.Matcher; ...

  5. java基础入门-arraylist存储开销

    今天我们来看一下arraylist的存储开销,由于在项目其中,我尝试了一个很大的arraylist.然后内存爆了 所以我看了下源代码.原来arraylist的存储开销是比較大的,先上代码 import ...

  6. [TypeScript] Function Overloads in Typescript

    It's common in Javascript for functions to accept different argument types and to also return differ ...

  7. Codeforces 417E Square Table(随机算法)

    题目链接:Codeforces 417E Square Table 题目大意:给出n和m.要求给出一个矩阵,要求每一列每一行的元素的平方总和是一个平方数. 解题思路:构造.依照 a a a b a a ...

  8. qt 与mysql建立交互式连接

    void QSqlDatabase::setConnectOptions(const QString & options = QString())Sets database-specific ...

  9. Chapter 6 - How to Play Music and Sound Effect

    In this chapter, we would add background music to the game and play sound effect when the hero fires ...

  10. PureMVC(JS版)源码解析(十一):Model类

          这篇博文讲PureMVC三个核心类——Model类.Model类的构造函数及工厂函数[即getInstance()方法]和View类.Controller类是一样的,这里就不重复讲解了,只 ...