济南大学信息科学与工程学院网络信息对抗课件 第25讲.ppt

济南大学信息科学与工程学院网络信息对抗课件 第25讲.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
防范方法:最佳的 XSS 防范方法是对所有输出到页面的数据进行合适编码 如何在一个应用程序中完全阻止 XSS: ? 输入验证。使用一个标准化的验证方法,在所有输入数据被存储或者显示给用户之 前,验证所有输入数据的长度、类型、语法和逻辑,使用“只接受允许类型的数据” 策略,直接在服务端拒绝所有无效的输入,而不要试着对输入的恶意的数据进行清 理。不要忘记页面提示的错误消息也可能包含恶意数据。 ? 强壮的输出编码。在页面显示给用户以前,需要保证用户提交的所有数据都经过了 合适的编码。 ? 不建议采用“黑名单”验证去检测 XSS 输入和输入。检验和替换少数字符(“”””和 其他的相似字符、或者类似”script”的短语)的方法已经被证明是不能防止 XSS 的。甚 至一个未经检查的”b”标记在一些内容中都是不安全的。XSS 可利用的变量非常 多,如果采用黑名单验证,是非常容易绕过的。 ? 提防规范化错误。输入信息在被验证之前可能被解码,并且规范成应用软件当前使 用的内部表达式。请保证你的应用软件没有将输入数据进行两次同样的解码。 IBM Confidential * IBM Confidential * IBM Confidential * IBM Confidential * ◆验证所有输入数据的长度、类型、语法和逻辑,使用“只接受允许类型的数据”的策略,直接在服务端拒绝所有无效的输入,而不是试着对输入的恶意的数据进行清理。不要忘记页面提示的错误消息可能也包含恶意数据。 ◆使用结构化查询。 ◆当连接到数据库或者其他后端系统的时候,使用最小权限。 ◆避免出现详细错误信息,这样的信息对攻击者是有用的。 ◆使用存储过程,因为他们对于 SQL 注入来讲是非常安全的。 ◆不要使用动态查询接口(比如 mysql_query()或者类似函数) ◆不要使用简单的转义功能,比如 PHP 的 addslashes()或者如 str_replace(“’”,”’”)中的字符替换功能,它们非常容易被攻击者利用。对于 PHP,如果使用 mysql 的话,使用 mysql_real_escape_string();推荐使用不需要转义的 PDO。 ◆提防规范化错误。输入信息在被验证之前可能被解码,并且规范成应用程序当前使用的内部表达式。请保证你的应用程序没有将输入数据进行两次同样的解码。 语言规范推荐: ◆JAVA EE-使用参数化查询。 ◆.NET- 使用参数化查询。 ◆ PHP--在 PDO 里面使用参数化查询(使用 bindParam()) IBM Confidential * 例如,在在线银行应用中,将账号作为主 key 很常见,且在 web 接口中直接使用账号是非常常见的。就算当开发者使用参数化的 SQL 查询语句来防止 SQL 注入,如果没有采取额外措施对账号持有者的身份和授权进行验证,攻击者也可能通过篡改账号参数来看到或修改所有账号。 这种类型的攻击在 2000 年时在澳大利亚税务办公室的网站上发生过,一个恶意用户仅仅在URL 中简单的修改了 ABN(一个公司的报税 ID)。这个用户看到了该系统中 17000 家公司的细节,并且向这 17000 家公司发邮件公布了他的攻击细节。这种类型的漏洞非常普遍。 IBM Confidential * IBM Confidential * IBM Confidential * 现在大多数的 web 应用软件还是仅仅依靠自动化的信任关系,例如 session、cookie、基本的认证信任、源 IP、SSL 认证或 windows 域认证。 IBM Confidential * * 有攻就有防,网站程序员肯定不会放任大家利用XSS,所以他们常会过滤类似javascript的关键字符,让攻击者构造不了XSS,有两个习惯被忽略的字符是和\“. 首先来说说“”字符,熟知SQL注入的知道,注入的语句可以转成16进制再赋给一个变量运行,XSS的转码和它有异曲同工之妙,原因是IE浏览器默认采用UNICODE编码,HTML编码可以用#的ASCII方式来写,这种XSS转码支持10进制和16进制,SQL注入转码是将16进制字符串赋给一个变量,而XSS转码则是针对属性所赋的值,下面我就拿img src=javascript:alert(XSS);示例: XSS跨站脚本的转码 * 下面以 img src=“javascript:alert(‘XSS’);” 为例: XSS跨站脚本漏洞的转码 十进制转码 * XSS跨站脚本漏洞的转码 * 同样转为十六进制也能达到效果:。 XSS跨站脚本漏洞的转码 十六进制转码 * XSS跨站脚本漏洞的转码 JavaScript中

文档评论(0)

ormition + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档