PHP安全篇之XSS攻击

2022-10-11 21:47:45 122
魁首哥

什么是XSS?

php安全之XSS

XSS,全称Cross Site script ing,即 跨站脚本攻击 ,从某种意义上来讲也是一种注入攻击,具体指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它 脚本语言 。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS。

什么是反射型XSS攻击,在这里分四个安全级别的代码进行说明:

1、低安全级别

//服务器端代码:
if(isset($_GET[‘username’])){
//todo业务代码

echo’Hello’.$_GET[‘username’];
}

上面代码直接使用了$_GET[‘username’]参数,并没有做任何的过滤与检查,存在明显的xss漏洞。

漏洞利用

输入后,成功弹窗。

低安全级别

2、中等安全级别

//服务器端代码
if(isset($_GET[‘username’])){
//todo业务代码

$username=str_replace(‘

上面的代码对输入进行了过滤,基于黑名单的思想,使用str_replace函数将输入中的

漏洞利用

输入ript>alert(/xss/),会成功弹框。

输入,也会成功弹框。

中等安全级别防御

3、高安全级别

//服务器端代码
if(isset($_GET[‘username’])){
//todo业务代码

$name=preg_replace(‘/

echo”Hello${username}”;
}

上面的代码同样使用黑名单过滤输入, 使用正则表达式 函数对相关黑名单字符进行替换空,这种防御机制虽然可以有效过滤掉2中两种漏洞利用,但仍然可以进行攻击。

漏洞利用

虽然无法使用

高安全级别

4、非常高安全级别(impossible)

//服务器端代码
if(isset($_GET[‘username’])){
//todo业务代码

//使用htmlspecialchars函数过滤
$name=htmlspecialchars($_GET[‘username’]);
echo”Hello${username}”;
}

上面的代码使用PHP提供的函数htmlspecialchars把预定义的字符转为HTML实体,防止浏览器将其作为 HTML元素 解析。到这个级别已经可以达到大多数系统的要求了,当然也可以自己写方法进行xss攻击防御。

写代码,不仅要知道怎么写,还应该知道为什么这么写,举一反三,多思考,才能在以后的技术道路上越走越远。

php安全篇

我是一名从传统制造业转行过来的码农,现已在it行业工作快3年,自我感觉转行成功,虽然跟科班出身的同事相比基础差了些,但是我也在不断努力提升自己,希望自己变的越来越好。如果喜欢我的文章,欢迎转发~~ 关注我,后续更精彩哦~~

分享
海报
122
上一篇:php高级-session保存用户信息实例 下一篇:「基础编程学习」 「PHP7数组详解」:第1章 (8)数组和对象

忘记密码?

图形验证码