Web安全XSS&CSRF

本文详细介绍了XSS(跨站脚本攻击)和CSRF(跨站请求伪造)两种常见网络安全攻击方式,包括它们的类型、原理及防御措施。通过对反射型XSS、存储型XSS和DOMXSS的区分,以及对HTMLCSRF攻击和JSONHiJacking攻击的说明,帮助读者了解如何有效防止这类攻击。

XSS

xss(Cross Site Scripting)跨站脚本攻击,发生在目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被预期的脚本指令并执行时,XSS就会发生

本质含义:

指攻击者通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击过程。
或者这样解释:还是一种“HTML注入”,用户的数据被当成了HTML代码的一部分来执行,从而混淆了原有的格式

XSS攻击类型

1.反射型XSS(非持久型)
发出请求时,XSS代码出现在URL中,作为输入提交到服务端,服务端解析后响应,在响应内容中出现这段XSS代码,最后浏览器解析执行。这个过程就像一次反射,所以称为反射型XSS
例如:
http://www.foo.com/xss/reflect1.php的代码如下

<?php
    echo $_GET['x'];
?>

输入x的值未经过任何过滤就直接输出,可以提交:
http://www.foo.com/xss/reflect1.php?x=<script>alert(1)</script>
服务器端解析时,echo就会完整的输出<script>alert(1)</script>到响应体中,然后浏览器解析执行触发

反射型xss是一次性的

2.存储型XSS(持久型)
存储型xss和反射型xss的差别仅在于:提交的xss代码会存储在服务端(不管是数据库,还是文件系统,内存等),下次请求目标页面时不用再提交xss代码
特点:
1. 攻击行为伴随攻击数据一直存在
2. 存储型xss的攻击是最隐蔽的
例如:
留言板xss,用户提交一条包含xss代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容就会从数据库查询出来并显示,浏览器发现有xss代码就当做正常的HTML与JS执行,于是就触发了xss攻击

3.DOM XSS
DOM XSS和反射型xss存储型xss的差别在于,DOM XSS的xss代码并不需要服务器解析响应的直接参与,触发xss靠的就是浏览器的DOM解析可以认为完全是客户端的事情

常见的输入点有:

document.URL
document.URLUnencoded
document.location
document.referrer
window.location
window.name
xhrq请求回来的数据
document.cookie
表单项的值

常见的输出项:

直接输出的HTML内容,如:
document.write(...)
document.writeln(...)
document.body.innerHTML=...
直接修改DOM树(包括DHTML事件)如:
document.forms[0].action=...(以及其他集合,如:一些对象的src/href属性等)
document.attachEvent(...)
document.create(...)
document.execCommand(...)
document.body,...(直接通过body对象访问DOM)
window.attachEvent(...)

这些都是javascript的基本点,从这些输入输出可以看到,DOM XSS的处理逻辑就在客户端

XSS防御

  • Httponly,禁止javascript访问带有Httponly属性的cookie
  • 输入检查,格式检查,对特殊字符进行过滤编码
  • 输出检查,编码,转译
    原则
  • 尽可能的减少用户的可控变量在<style>标签,HTML标签、css文件
    中的输出
  • 一些危险标签过滤禁止掉,如<iframe>,<script>,<form>

    CSRF

    CSRF(Cross Site Request Forgery)跨站请求伪造

  • 跨站点的请求

  • 请求是伪造的

    本质:

    伪造合法用户身份

    CSRF类型
    1. HTML CSRF攻击
    2. JSON HiJacking攻击
      • 字典格式
      • 列表格式
    3. Flash CSRF攻击
      • 跨域获取隐私数据
      • 跨域提交数据操作

    CSRF防御

    1. 验证码
    2. referer check,referer告诉服务器从哪个链接请求过来的
    3. 在请求中添加Token,Token在客户端cookies,服务端session同时存放,再加以比较
    4. 禁止iframe的跨域请求
    5. X-Frame-option
      添加Token的
      1. 在session中绑定token
      2. 在form表单中加入token字段
      3. 在Ajax请求中自动添加token
      4. 对比服务端dession中token与post过来的是否一致
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值