欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP web项目进行XSS漏洞测试中存在的问题

程序员文章站 2022-06-27 21:25:35
概念:跨站脚本攻击(XSS)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞 ......

概念:跨站脚本攻击(xss)是指恶意攻击者往web页面里插入恶意script代码,当用户浏览该页之时,嵌入其中web里面的script代码会被执行,从而达到恶意攻击用户的目的。xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。

我们可以将其分成三类:

    (1)反射型xss:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发xss代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

    (2)存储型xss:<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种xss非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种dom型xss,但是也还是包括在存储型xss内)。

    (3)dom型xss:基于文档对象模型document objeet model,dom)的一种漏洞。dom是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。dom中有很多对象,其中一些是用户可以操纵的,如uri ,location,refelter等。客户端的脚本程序可以通过dom动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得dom中的数据在本地执行,如果dom中的数据没有经过严格确认,就会产生dom xss漏洞。

    这些攻击主要存在搜索功能,我们输入:<script>alert('xss')</script> 结果如下图:

     PHP web项目进行XSS漏洞测试中存在的问题

    我们查看网页代码时候可以在其中发现有一行如下:

        PHP web项目进行XSS漏洞测试中存在的问题

    解决方法:用htmlentities() 函数把字符转换为 html 实体。

        PHP web项目进行XSS漏洞测试中存在的问题

 

    此时再次输入<script>alert('xss')</script>,发现网页显示正常!!