热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XSS攻防详解

一、原理跨站脚本Cross-SiteScripting(XSS)是最为流行的Web安全漏洞之一。跨站脚本,就是攻击者可以将恶意的脚本代码注

一、原理

跨站脚本Cross-Site Scripting(XSS)是最为流行的Web安全漏洞之一。

跨站脚本,就是攻击者可以将恶意的脚本代码注入到用户浏览的其它网页上。

XSS攻击主要分类为两种:

1、站内攻击,攻击者将攻击脚本提交到网站数据库内(如攻击者的个人信息内含攻击脚本),再欺骗其它人(系统管理员)浏览该页,触发该面的攻击脚本。

2、站外攻击,攻击都自制Email或网页,再欺骗其它人浏览该页,触发该面的攻击脚本。

二、跨站脚本介绍

有如下代码:

ContractedBlock.gifExpandedBlockStart.gifView Code

1 <asp:TextBox ID&#61;"txbUserName" runat&#61;"server">asp:TextBox>
2 <asp:Button ID&#61;"btnSave" runat&#61;"server" Text&#61;"Button" onclick&#61;"btnSave_Click" />

ContractedBlock.gifExpandedBlockStart.gifView Code

1 protected void btnSave_Click(object sender, EventArgs e)
2 {
3 Response.Write(txbUserName.Text);
4 }

当我们在输入框里输入时就会弹出用户的COOKIE。

而把这段代码存入数据库或自制一个网面&#xff0c;让其他用户触发&#xff0c;就可以取得其他用户的相关资源。&#xff08;COOKIE是可以用来review页面原&#xff0c;可以用被攻击者的身份登陆到网页上。相关方法网上很多&#xff0c;大家感兴趣可以去百度一下。&#xff09;

攻击者可以写JS将这些资源发到指定的网址或邮箱&#xff0c;用于下一步攻击。

攻南者也可以写JS抓取当前用户的页面内容&#xff0c;如帐户信息等等。

且JS还可以用ActinveObject来做很多事&#xff0c;如下载病毒和木马球、甚至是修改注册表&#xff08;在客户机没有防火墙的情况下&#xff09;。总之让用户输入了代码&#xff0c;再让这段代码可执行是非常危险的。

关于这些东西的的具体代码&#xff0c;有兴趣的可以一起学习&#xff0c;写起来不难。

三、防御方法

1、页面或web.config中配置 ValidateRequest&#61;”false”&#xff0c;ValidateRequest只是ASP.NET提供的深层防御手段&#xff08;Defense-in-Depth&#xff09;。Web开发中不能仅依赖它&#xff0c;而没有专门的对输入的校验代码。

2、用正则表达式过滤或转换特殊字符。&#xff08;不推荐&#xff0c;容易出问题&#xff09;

3、使用ASP.NET自身支持的HttpUtility。&#xff08;这个比较方便&#xff09;

例如&#xff1a;

Response.Write(HttpUtility.HtmlEncode(Request.Form["name"]));

4、使用微软提供的反跨站脚本库&#xff08;Microsoft Anti-Cross Site Scripting Library V1.5 - AntiXss&#xff09;。&#xff08;这是最安全的&#xff09;

AntiXSS是一个单独下载的软件库。开发人员可以从http://www.microsoft.com/download/en/details.aspx?id&#61;5242直接下载。&#xff08;安装后在项目里引用AntiXSSLibrary.dll用可以调用了。注意这个是.net4.0的版本&#xff0c;请根据自己需求下载相应版本。&#xff09;

AntiXss的使用方式与HttpUtility类似&#xff1a;

String Name &#61; AntiXss.HtmlEncode(Request.QueryString["Name"]);

那么HttpUtilityAntiXss的区别是什么&#xff1f;开发人员应该使用哪一种&#xff1f;

它们最大的区别在于HttpUtility.HtmlEncode采用的是黑名单验证&#xff08;Black list&#xff09;方式。即HttpUtility.HtmlEncode仅仅过滤它知道的特殊字符&#xff0c;而允许其它的输入。AntiXss.HtmlEncode采用的白名单验证&#xff08;White list&#xff09;方式。它只允许输出它认为合法的字符&#xff0c;而过滤掉其它的所有字符。

两者中&#xff0c;AntiXss.HtmlEncode要更为安全&#xff0c;是推荐的使用手段。


 

转:https://www.cnblogs.com/jimmyzhou/archive/2011/09/16/2179044.html



推荐阅读
  • MVVM架构~mvc,mvp,mvvm大话开篇
    返回目录百度百科的定义:MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:ControllerPresenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • 优化后的标题:数据网格视图(DataGridView)在应用程序中的高效应用与优化策略
    在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ... [详细]
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
  • 基于Java和JSP的电子医疗记录管理平台
    随着信息技术的快速发展,各类管理系统已在各行各业得到广泛应用。传统的人工管理模式已逐渐无法满足现代需求。本文介绍了一种基于Java和JSP技术开发的电子医疗记录管理平台,旨在提高医疗行业的信息化水平和管理效率。该平台通过整合先进的数据库技术和Web开发框架,实现了医疗记录的高效存储、查询和管理,为医护人员提供了便捷的操作界面和强大的数据支持。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了如何在社交媒体平台上高效地获取和管理好友列表。通过分析当前流行的社交应用,如微信、Facebook等,提出了一系列实用的方法和技巧,帮助用户优化好友管理流程,提升社交体验。文章还介绍了相关工具和插件,以进一步简化操作步骤,确保用户能够快速、准确地管理和维护好友关系。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
author-avatar
我的天空有点蓝2012_916
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有