热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

什么是XSS攻击,怎么防御?

知了堂姐
2024-07-08 17:22:16
0

什么是XSS攻击


XSS是一种网站应用程序的安全漏洞攻击,是代码注入的一种,它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼攻击而变得广为人知。


XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。。

XSS攻击的危害


XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器


执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列


表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实


施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼,它带来的危害是巨


大的,是web安全的头号大敌。


XSS攻击的危害包括


1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号


2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力


3、盗窃企业重要的具有商业价值的资料


4、非法转账


。。。。


怎么防御?

一、HttpOnly防止劫取Cookie


HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。


我们来看下百度有没有使用。


未登录时的Cookie信息

可以看到,所有Cookie都没有设置HttpOnly,现在我登录下


发现在个叫BDUSS的Cookie设置了HttpOnly。可以猜测此Cookie用于认证。


下面我用PHP来实现下:


header(“Set-Cookie: cookie1=test1;”);

header(“Set-Cookie: cookie2=test2;httponly”,false);


setcookie(‘cookie3’,‘test3’,NULL,NULL,NULL,NULL,false);

setcookie(‘cookie4’,‘test4’,NULL,NULL,NULL,NULL,true);

?>

js只能读到没有HttpOnly标识的Cookie


二、输入检查


输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如<、>、’、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。


例如网站注册经常用户名只允许字母和数字的组合,或者邮箱电话,我们会在前端用js进行检查,但在服务器端代码必须再次检查一次,因为客户端的检查很容易绕过。


网上有许多开源的“XSS Filter”的实现,但是它们应该选择性的使用,因为它们对特殊字符的过滤可能并非数据的本意。比如一款php的lib_filter类:


$filter = new lib_filter();

echo $filter->go(‘1+1>1’);

它输出的是1,这大大歪曲了数据的语义,因此什么情况应该对哪些字符进行过滤应该适情况而定。


三、输出检查


大多人都知道输入需要做检查,但却忽略了输出检查。


在HTML属性中输出



这种情况防御也是使用htmlEncode

在owasp-php中实现:


KaTeX parse error: Expected group after '_' at position 41: …,', '.', '-', '_̲'); this->htmlEntityCodec->encode($this->immune_htmlattr, “”><"");


3、在


如代码:

c = " 1 ; a l e r t ( 3 ) " ; ? > < s c r i p t t y p e = " t e x t / j a v a s c r i p t " > v a r c = < ? = c = "1;alert(3)"; ?>

知了堂信息安全培训,渗透工程师面试案例分享(上)

2024-07-08 浏览次数:0

零基础学Java怎么学?零基础能学Java吗

2024-07-08 浏览次数:0

自学前端怎么进大厂?自学前端怎么找工作?

2024-07-08 浏览次数:0

如何自学前端?前端开发怎么自学?

2024-07-08 浏览次数:0

程序员月薪8000,丢人吗?

2024-07-08 浏览次数:0
最新资讯