logo
  • write-homewrite-home-active首页
  • icon-chaticon-chat-activeAI 智能助手
  • icon-pluginicon-plugin-active浏览器插件
  • icon-subjecticon-subject-active学科题目
  • icon-uploadicon-upload-active上传题库
  • icon-appicon-app-active手机APP
首页
/
计算机
题目

Web应用程序是否存在跨站点脚本漏洞 到目前为止,对于跨站点脚本攻击具有很大的威胁这一点大家并无异议。如果您很精通XSS并且只想看看有什么好的________方法可供借鉴,那么请直接跳到本文的________部分。如果您对此一无所知,请按顺序认真阅读!如果某个怀有恶意的人(攻击者)可以强迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那么便会发生跨站点脚本攻击。“跨站点脚本”这个词应该属于用词不当的情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点的。所以,它就是一个在发现这种攻击时起的一个名字,并且一直沿用至今。从现在开始,我们将使用它常见的缩写名称“XSS”。 XSS攻击的过程涉及以下三方: •攻击者 •受害者 •存在漏洞的网站(攻击者可以使用它对受害者采取行动) 在这三方之中,只有受害者会实际运行攻击者的代码。网站仅仅是发起攻击的一个载体,一般不会受到影响。可以用多种方式发起XSS攻击。例如,攻击者可通过电子邮件[1][1][1]、IM或其他途径向受害者发送一个经过经心构造的恶意URL。当受害者在Web浏览器中打开该URL的时侯,网站会显示一个页面并在受害者的计算机上执行脚本。 XSS漏洞是什么样的呢? 作为一名Web开发人员或测试人员,您肯定知道Web应用程序的技术基础是由HTTP和HTML组成的。HTTP________是HTML的传输机制,可使用代码设计Web页面布局和生成页面。 如果Web应用程序接受用户通过HTTP请求(如GET或POST)提交的输入信息,然后使用输出HTML代码在某些地方显示这些信息,便可能存在XSS漏洞。下面是一个最简单的例子: 1. Web请求如下所示: GET https:/www.somesite.com/page.asp?pageid=10lang=entitle=Section%20Title 2.在发出请求后,________返回的HTML内容包括: Section Title 可以看到,传递给“title”查询字符串参数的用户输入可能被保存在一个字符串变量中并且由Web应用程序插入到标记中。通过提供输入内容,攻击者可以控制HTML。 3.现在,如果站点没有在________端对用户输入加以过滤(因为总是可以绕过客户端控件),那么恶意用户便可以使用许多手段对此漏洞加以滥用: 攻击者可以通过摆脱标记来注入代码: https:/www.somesite.com/page.asp?pageid=10lang=entitle=Section%20Title 这个请求的HTML输出将为: Section Title 即便是这个最简单的例子,攻击者也可以利用此连接完成数不清的事情。让我们看看会有哪些潜在的威胁,然后讨论一些更高级的测试方法。 XSS攻击的威胁有多么严重? 由于能够在生成的Web页面中注入代码,能想到的威胁有多么严重,就可以有多么严重的威胁。攻击者可以使用XSS漏洞窃取Cookie,劫持帐户,执行ActiveX,执行Flash内容,强迫您________软件,或者是对硬盘和数据采取操作。 只要您点击了某些URL,这一切便有可能发生。每天之中,在阅读来自留言板或新闻组的受信任的电子邮件的时侯,您会多少次地单击其中的URL? 网络钓鱼[2][2][2]攻击通常利用XSS漏洞来装扮成合法站点。可以看到很多这样的情况,比如您的银行给你发来了一封电子邮件,向您告知对您的帐户进行了一些修改并诱使您点击某些超链接[3][3][3]。如果仔细观察这些URL,它们实际上可能利用了银行网站中存在的漏洞,它们的形式类似于https:/mybank.com/somepage?redirect=,这里利用了“redirect”参数来执行攻击。 如果您足够狡猾的话,可以将管理员定为攻击目标,您可以发送一封具有如下主题的邮件:“求救!这个网站地址总是出现错误!”在管理员打开该URL后,便可以执行许多恶意操作,例如窃取他(或她)的凭证。 好了,现在我们已经理解了它的危害性--危害用户,危害管理员,给公司带来坏的公共形象。现在,让我们看看本文的重点--测试您的网站是否存在这些问题。 测试XSS漏洞 多年以来,我一直是一名全职的________顾问,已经做过无数次的这种测试了。我将好的测试计划[4][4][4]归结为两个字:彻底。对于你我来说,查找这些漏洞与能够有机会在Bugtraq或Vulnwatch上吹嘘一番没有任何关系;它只与如何出色完成负责的工作有关。如果这意味着对应用程序中所有的单个查询字符串参数、cookie值以及POST数据值进行检查,那么这只能表明我们的工作还不算太艰巨。 显然,一次完整的________性检查所涉及的内容通常远远超出寻找XSS漏洞那样简单;它需要建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL注入、身份验证和授权错误。好在执行这样彻底的工作时,各个领域之间都存在重叠。比如,在测试XSS漏洞时,经常会同时找出错误处理或信息泄漏问题。 我假设您属于某个负责对Web应用程序进行开发和测试的小组。在这个幸运的位置上,您可以混合使用黑盒和白盒方法。每种方法都有它自己的优点,结合使用时甚至能相互提供支持。 1.按顺序准备您的工具包 测试工作也可以是自动化的,但是我们在这里只讨论手动操作。手动测试的必备工具包括: •Paros proxy (https:/www.parosproxy.org),用于截获HTTP通信数据 • Fiddler (https:/www.fiddlertool.com/fiddler),用于截获HTTP通信数据 • Burp proxy (https:/www.portswigger.net/proxy/) • TamperIE (https:/www.bayden.com/dl/TamperIESetup.exe),用于修改GET和POST 我们以上至少列出了三种Web代理软件。也可以寻找其他不同的类似产品,因为每种产品都有它自己的独到之处。下面,您需要在Web浏览器发出HTTP请求之前截获这些请求,并修改它们以注入XSS测试代码。上面所有这些工具都可以完成这项任务,某些工具还会显示返回的HTML源代码(如果您选择了截获服务器响应)。 截获客户端发出的GET和POST请求非常重要。这样可以绕过所有的客户端javascript.输入验证代码。我在这里要提醒所有Web开发人员--客户端安全控制是靠不住的。应该总是在服务器端执行有效性验证。 2.确定站点及其功能--与开发人员和PM交流 绘制一些简单的数据流图[5][5][5]表,对站点上的页面及其功能进行描述。此时,可以安排一些与开发人员和项目经理的会议来建立威胁模型。在会议上尽可能对应用程序进行深入探讨。站点公开了Web服务吗?是否有身份验证表单?有留言板吗?有用户设置页面吗?确保列出了所有这些页面。 3.找出并列出所有由用户提供输入的点 对站点地图进行进一步细化。我通常会为此创建一个电子表格。对于每个页面,列出所有查询字符串参数、cookie值、自定义HTTP标头、POST数据值和以其他形式传递的用户输入。不要忘记搜索Web服务和类似的SOAP请求,并找出所有允许用户输入的字段。 分别列出每个输入参数,因为下面需要独立测试每个参数。这可能是最重要的一个步骤!如果阅读下面的电子表格,您会看到我已经在示例站点中找出了一大堆这样的东西。如forwardURL和lang这样的查询字符串。如name、password、msgBody、msgTitle和这样的POST数据,甚至某些Cookie值。所有这些都是我们感兴趣的重要测试内容。 4.认真思考并列出测试用例[6][6][6] 使用已经得到的电子表格并列出各种用来测试XSS漏洞的方法。我们稍候将讨论各种方法,但是现在先让我们看看我的电子表格的屏幕截图,请注意,我列出了页面上允许的每个值以及每个值的所有测试类型。这种记录测试的方法仅是我自己的习惯,您可以使用自己的方法。我喜欢记录所有东西,以便我能知道已经做了哪些工作和哪些工作没有做。 5.开始测试并注意输出结果 在查找漏洞的过程中,最重要的部分并不是您是否找到了漏洞。而是您是否真正知道究竟发生了哪些事情。对于XSS,只需检查HTML输出并看看您输入的内容在什么地方。它在一个HREF标记中吗?是否在IFRAME.标记中?它在CLSID标记中吗?在IMG SRC中吗?某些Flash内容的PARAM NAME是怎样的? 我会检查所有这些情况,如果您对所输入内容的目的十分了解,可以调整您的测试来找出问题。这意味着您可能需要添加一个额外的封闭括号“>”来让某个标记变得完整,或者添加一个双引号来关闭标记内的一个元素。或者,您可能需要使用URL或HTML来编码您的字符,例如将双引号变为%22或"。 嗯,并不那么容易,这个站点看来防范比较严密。现在该怎么办呢? 那么,也许您的简单测试用例并不能产生期望中的警告对话框。仔细想想这个问题并在可能的情况下与开发人员进行交流。也许他们对输入中的尖括号、单引号或圆括号进行了过滤。也许他们会过滤“script”这个词。重新研究为何输入会产生这样的输出,并理解每个值(查询字符串、cookie、POST数据)的作用。“pageId=10”这样的查询字符串值可能对输出没有影响,因此不值得花费时间测试它。有时,最好试着注入单个字符(例如尖括号、双引号标记或者圆括号),看看应用程序是否过滤这些字符。然后,便可以知道您面对的过滤级别究竟如何。接着,可以调整测试方法,对这些字符进行编码并重试,或者寻找其他注入办法。

Web应用程序是否存在跨站点脚本漏洞

 到目前为止,对于跨站点脚本攻击具有很大的威胁这一点大家并无异议。如果您很精通XSS并且只想看看有什么好的________方法可供借鉴,那么请直接跳到本文的________部分。如果您对此一无所知,请按顺序认真阅读!如果某个怀有恶意的人(攻击者)可以强迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那么便会发生跨站点脚本攻击。“跨站点脚本”这个词应该属于用词不当的情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点的。所以,它就是一个在发现这种攻击时起的一个名字,并且一直沿用至今。从现在开始,我们将使用它常见的缩写名称“XSS”。

    XSS攻击的过程涉及以下三方:

    •攻击者     •受害者     •存在漏洞的网站(攻击者可以使用它对受害者采取行动) 

   在这三方之中,只有受害者会实际运行攻击者的代码。网站仅仅是发起攻击的一个载体,一般不会受到影响。可以用多种方式发起XSS攻击。例如,攻击者可通过电子邮件[1][1][1]、IM或其他途径向受害者发送一个经过经心构造的恶意URL。当受害者在Web浏览器中打开该URL的时侯,网站会显示一个页面并在受害者的计算机上执行脚本。

    XSS漏洞是什么样的呢?

   作为一名Web开发人员或测试人员,您肯定知道Web应用程序的技术基础是由HTTP和HTML组成的。HTTP________是HTML的传输机制,可使用代码设计Web页面布局和生成页面。

   如果Web应用程序接受用户通过HTTP请求(如GET或POST)提交的输入信息,然后使用输出HTML代码在某些地方显示这些信息,便可能存在XSS漏洞。下面是一个最简单的例子:

    1. Web请求如下所示:    GET https://www.somesite.com/page.asp?pageid=10lang=entitle=Section%20Title

    2.在发出请求后,________返回的HTML内容包括:   

Section Title

   可以看到,传递给“title”查询字符串参数的用户输入可能被保存在一个字符串变量中并且由Web应用程序插入到

标记中。通过提供输入内容,攻击者可以控制HTML。

    3.现在,如果站点没有在________端对用户输入加以过滤(因为总是可以绕过客户端控件),那么恶意用户便可以使用许多手段对此漏洞加以滥用:

   攻击者可以通过摆脱

标记来注入代码:    https://www.somesite.com/page.asp?pageid=10lang=entitle=Section%20Title

   这个请求的HTML输出将为:   

Section Title

   即便是这个最简单的例子,攻击者也可以利用此连接完成数不清的事情。让我们看看会有哪些潜在的威胁,然后讨论一些更高级的测试方法。

    XSS攻击的威胁有多么严重?   由于能够在生成的Web页面中注入代码,能想到的威胁有多么严重,就可以有多么严重的威胁。攻击者可以使用XSS漏洞窃取Cookie,劫持帐户,执行ActiveX,执行Flash内容,强迫您________软件,或者是对硬盘和数据采取操作。

   只要您点击了某些URL,这一切便有可能发生。每天之中,在阅读来自留言板或新闻组的受信任的电子邮件的时侯,您会多少次地单击其中的URL?

   网络钓鱼[2][2][2]攻击通常利用XSS漏洞来装扮成合法站点。可以看到很多这样的情况,比如您的银行给你发来了一封电子邮件,向您告知对您的帐户进行了一些修改并诱使您点击某些超链接[3][3][3]。如果仔细观察这些URL,它们实际上可能利用了银行网站中存在的漏洞,它们的形式类似于https://mybank.com/somepage?redirect=,这里利用了“redirect”参数来执行攻击。

   如果您足够狡猾的话,可以将管理员定为攻击目标,您可以发送一封具有如下主题的邮件:“求救!这个网站地址总是出现错误!”在管理员打开该URL后,便可以执行许多恶意操作,例如窃取他(或她)的凭证。

   好了,现在我们已经理解了它的危害性--危害用户,危害管理员,给公司带来坏的公共形象。现在,让我们看看本文的重点--测试您的网站是否存在这些问题。

   测试XSS漏洞

   多年以来,我一直是一名全职的________顾问,已经做过无数次的这种测试了。我将好的测试计划[4][4][4]归结为两个字:彻底。对于你我来说,查找这些漏洞与能够有机会在Bugtraq或Vulnwatch上吹嘘一番没有任何关系;它只与如何出色完成负责的工作有关。如果这意味着对应用程序中所有的单个查询字符串参数、cookie值以及POST数据值进行检查,那么这只能表明我们的工作还不算太艰巨。

   显然,一次完整的________性检查所涉及的内容通常远远超出寻找XSS漏洞那样简单;它需要建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL注入、身份验证和授权错误。好在执行这样彻底的工作时,各个领域之间都存在重叠。比如,在测试XSS漏洞时,经常会同时找出错误处理或信息泄漏问题。

   我假设您属于某个负责对Web应用程序进行开发和测试的小组。在这个幸运的位置上,您可以混合使用黑盒和白盒方法。每种方法都有它自己的优点,结合使用时甚至能相互提供支持。

    1.按顺序准备您的工具包   测试工作也可以是自动化的,但是我们在这里只讨论手动操作。手动测试的必备工具包括:

    •Paros proxy (https://www.parosproxy.org),用于截获HTTP通信数据     • Fiddler (https://www.fiddlertool.com/fiddler),用于截获HTTP通信数据     • Burp proxy (https://www.portswigger.net/proxy/)     • TamperIE (https://www.bayden.com/dl/TamperIESetup.exe),用于修改GET和POST 

   我们以上至少列出了三种Web代理软件。也可以寻找其他不同的类似产品,因为每种产品都有它自己的独到之处。下面,您需要在Web浏览器发出HTTP请求之前截获这些请求,并修改它们以注入XSS测试代码。上面所有这些工具都可以完成这项任务,某些工具还会显示返回的HTML源代码(如果您选择了截获服务器响应)。

   截获客户端发出的GET和POST请求非常重要。这样可以绕过所有的客户端javascript.输入验证代码。我在这里要提醒所有Web开发人员--客户端安全控制是靠不住的。应该总是在服务器端执行有效性验证。     2.确定站点及其功能--与开发人员和PM交流   绘制一些简单的数据流图[5][5][5]表,对站点上的页面及其功能进行描述。此时,可以安排一些与开发人员和项目经理的会议来建立威胁模型。在会议上尽可能对应用程序进行深入探讨。站点公开了Web服务吗?是否有身份验证表单?有留言板吗?有用户设置页面吗?确保列出了所有这些页面。     3.找出并列出所有由用户提供输入的点   对站点地图进行进一步细化。我通常会为此创建一个电子表格。对于每个页面,列出所有查询字符串参数、cookie值、自定义HTTP标头、POST数据值和以其他形式传递的用户输入。不要忘记搜索Web服务和类似的SOAP请求,并找出所有允许用户输入的字段。

   分别列出每个输入参数,因为下面需要独立测试每个参数。这可能是最重要的一个步骤!如果阅读下面的电子表格,您会看到我已经在示例站点中找出了一大堆这样的东西。如forwardURL和lang这样的查询字符串。如name、password、msgBody、msgTitle和这样的POST数据,甚至某些Cookie值。所有这些都是我们感兴趣的重要测试内容。     4.认真思考并列出测试用例[6][6][6]   使用已经得到的电子表格并列出各种用来测试XSS漏洞的方法。我们稍候将讨论各种方法,但是现在先让我们看看我的电子表格的屏幕截图,请注意,我列出了页面上允许的每个值以及每个值的所有测试类型。这种记录测试的方法仅是我自己的习惯,您可以使用自己的方法。我喜欢记录所有东西,以便我能知道已经做了哪些工作和哪些工作没有做。     5.开始测试并注意输出结果   在查找漏洞的过程中,最重要的部分并不是您是否找到了漏洞。而是您是否真正知道究竟发生了哪些事情。对于XSS,只需检查HTML输出并看看您输入的内容在什么地方。它在一个HREF标记中吗?是否在IFRAME.标记中?它在CLSID标记中吗?在IMG SRC中吗?某些Flash内容的PARAM NAME是怎样的?

   我会检查所有这些情况,如果您对所输入内容的目的十分了解,可以调整您的测试来找出问题。这意味着您可能需要添加一个额外的封闭括号“>”来让某个标记变得完整,或者添加一个双引号来关闭标记内的一个元素。或者,您可能需要使用URL或HTML来编码您的字符,例如将双引号变为%22或"。    嗯,并不那么容易,这个站点看来防范比较严密。现在该怎么办呢?

   那么,也许您的简单测试用例并不能产生期望中的警告对话框。仔细想想这个问题并在可能的情况下与开发人员进行交流。也许他们对输入中的尖括号、单引号或圆括号进行了过滤。也许他们会过滤“script”这个词。重新研究为何输入会产生这样的输出,并理解每个值(查询字符串、cookie、POST数据)的作用。“pageId=10”这样的查询字符串值可能对输出没有影响,因此不值得花费时间测试它。有时,最好试着注入单个字符(例如尖括号、双引号标记或者圆括号),看看应用程序是否过滤这些字符。然后,便可以知道您面对的过滤级别究竟如何。接着,可以调整测试方法,对这些字符进行编码并重试,或者寻找其他注入办法。 

题目解答

答案

测试 测试 协议 服务器 服务器 下载 安全 安全

相关问题

  • 下列哪项属于因果推理模型()A. 因果图B. 符号推理模型C. 神经符号推理D. 结构因果模型

  • 下列哪个方法属于知识图谱推理方法()A. 路径排序算法B. 深度学习推断C. 广度优先搜索D. 归纳逻辑程序设计

  • 2.单选题 讯飞星火可以实现多种文案类型和语言风格的文本写作。讯飞星火(网页版)“内容写作”功能可选的“语言风格”不包括( )。A. 口语化B. 高情商C. 专业D. 热情

  • 3.判断题K-means聚类算法对数据的尺寸敏感。()A. 对B. 错

  • 7、 加强电脑安全防护,及时升级病 毒库,安装防火墙,及时查杀病毒和木马,是防范 电信网络诈骗的有效做法。A. 正确B. 错误

  • AdaBoosting采用多个单一分类器组成一个强分类器()A. 错误B. 正确

  • 网络安全包括物理安全[1]、逻辑安全、操作系统安全及联网安全,其中逻辑安全包括访问控制[2]、加密、安全管理及用户身份认证。A. 正确B. 错误

  • 路径排序算法的工作流程主要有三步()A. 特征计算B. 特征抽取C. 分类器训练D. 因果推断

  • 由脸书(Facebook)公司开发的深度学习编程框架是()A. TensorFlowB. PaddlePaddleC. PyTorchD. Mindspore

  • 下列哪项属于因果推理模型()A. 因果图B. 神经符号推理C. 符号推理模型D. 结构因果模型

  • 下列哪个方法属于知识图谱推理方法()A. 广度优先搜索B. 深度学习推断C. 路径排序算法D. 归纳逻辑程序设计

  • 下列哪项关于广度优先搜索的描述正确()A. 每次扩展时,该算法从边缘集合中取出最下层(最深)的节点B. 广度优先搜索算法是深度优先搜索算法的特例C. 每次扩展时,该算法从边缘集合中取出最上层(最浅)的节点D. 深度优先搜索是广度优先搜索的特例

  • 下列不属于量子机器学习算法的是()A. 量子支持向量机B. 量子主成分分析C. 薛定谔方程求解D. 深度量子学习

  • 路径排序算法的工作流程主要有三步()A. 特征抽取B. 特征计算C. 分类器训练D. 因果推断

  • 下列哪项关于监督学习算法的描述正确()A. 强化学习的训练效果一定优于监督学习B. 主要的监督学习方法包括生成方法和判别方法C. 广度优先搜索算法是一种监督学习算法

  • 网络安全包括物理安全[1]、逻辑安全、操作系统安全及联网安全,其中逻辑安全包括访问控制[2]、加密、安全管理及用户身份认证。A. 正确B. 错误

  • 在决策树建立过程中,使用一个属性对某个结点对应的数集合进行划分后,结果具有高信息熵(highentropy),对结果的描述,最贴切的是()。A. 纯度高B. 纯度低C. 有用D. 无用E. 以上描述都不贴切

  • 以下哪种方法属于卷积神经网络的基本组件()。A. 卷积层B. 池化层C. 激活函数D. 复制层

  • 下列哪项贪婪最佳优先搜索算法的描述正确()A. 贪婪最佳优先搜索不属于启发式搜索算法B. 贪婪最佳优先搜索是一种A*搜索算法C. 贪婪最佳优先搜索是一种广度优先搜索算法D. 贪婪最佳优先搜索属于有信息搜索算法

  • 下列哪项不是求解对抗搜索问题的基本算法( ) A.反向传播算法 B.广度优先排序算法 C.Alpha-Beta剪枝算法D.最小最大搜索算法

上一页下一页
logo
广州极目未来文化科技有限公司
注册地址:广州市黄埔区揽月路8号135、136、137、138房
关于
  • 隐私政策
  • 服务协议
  • 权限详情
学科
  • 医学
  • 政治学
  • 管理
  • 计算机
  • 教育
  • 数学
联系我们
  • 客服电话: 010-82893100
  • 公司邮箱: daxuesoutijiang@163.com
  • qt

©2023 广州极目未来文化科技有限公司 粤ICP备2023029972号    粤公网安备44011202002296号