applyweb

时间:2018-07-30   来源:经典美文   点击:

【www.gbppp.com--经典美文】

applyweb 第一篇_WebApplication和WebSite区别

WebApplication和WebSite区别

相同点web应用程序可能是微软为了让程序员很好的从winform过渡到web开发而保留了。Web网站就完全要应用到web开发的。其实两者之间没有什么大的区别。

不同点1、最主要的是编译模型不一样website发布的时候是对每个aspx生成的代码文件单独编译所以在bin目录下面会生成很多类似App_Web_4xjy5_p1.dll的文件特殊目录App_Code中代码文件才编译成单独一个程序集。这种设计可以单独生成一个页和该页程序集。上传的时候可以只更新此页web应用程序发布的时候bin目录下面就一个dll文件但这个“网站”项目编译速度慢类型检查不彻底。两个不同的ASPX可以生成相同的两个名称的类。发布的时候也很慢会删除所有原始发布目录中的所有文件且复制所有新的文件。并且中间还有停顿需要用户主动按覆盖文件的按钮才能发布。

2、Web网站Default.aspx显示有一个原有文件Default.aspx.csweb应用程序Default.aspx显示有两个原有文件及Default.aspx.cs和Default.aspx.designer.csdesigner文件通常存放的是一些页面控件中控件的配置信息3、Web网站只有一个发布网站web应用程序有重新生成和发布两项4、Web网站在引用后出现一个bin文件夹那里存放dll和pdb文件web应用程序和一般的winform没有什么区别都有引用的是命名空间等5、Web网站则不可以作为类库被引用web应用程序可以作为类库被引用6、Web网站可以添加ASP.Net文件夹包括bin、App_Codeweb应用程序可以添加ASP.Net文件夹中不包括bin、App_Code7、web应用程序还可添加组件和类Web网站则没有8、源文件虽然都是Default.aspx.cs但是web应用程序有命名空间多了一项System.Collections空间引用9、Web应用程序在修改了页面底层的代码之后需要重新进行编译网站不需要重新编译10、网站在发布的时候会自动生成Dll文件但是每次的Dll文件名都不一样Web应用程序的项目会生成Dll文件11、Web应用程序会有解决方案和项目文件12、web应用程序在vs.net2002、2003中就存在了web网站是2005新发明的。

applyweb 第二篇_Selenium 2介绍 (四) -- WebDriver的高级用法

WebDriver: 高级用法

显式和隐式等待

等待是在执行下一步骤之前让自动任务等定量的时间。

显示等待

一个显式等待就是在继续执行代码之前编码等待定义一个特定条件发生。最糟糕的例子是Thread.sleep(),这设置了一个准确的等待时间。WebDriver提供了一些方便的方法帮助您些代码来等待要求的时间。WebDriverWait和ExpectedCondition的结合就是一种实现的方法。 WebDriver driver = new FirefoxDriver();

driver.get("

WebElementmyDynamicElement = (new WebDriverWait(driver, 10)) .until(new ExpectedCondition<WebElement>(){ @Override publicWebElement apply(WebDriver d) { returnd.findElement(By.id("myDynamicElement")); }});

在抛出TimeoutException之前这会等待最多10秒钟,或者它找到了元素,在0-10秒之间返回。WebDriverWait默认每500毫秒调用ExpectedCondition直到它成功返回。ExpectedCondition类型的成功返回是布尔值true或非null的返回值。

ExpectedConditions

有些自动化web浏览器时常用的条件。下面列出的是每个实现。Java恰巧有方便的方法,因此您不需要编写一个ExpectedCondition类自己或为它们创建自己的实用程序。  元素可点击–元素显示并且可用。

WebDriverWait wait = new WebDriverWait(driver, 10);

WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid"))); 类中包含了一组与定义条件,可用于WebDriverWait

隐式等待

隐式等待告诉WebDriver一段特定的时间轮训一下DOM,来查找一个元素或者元素组,如果它们没有马上找到的话。默认设置是0。一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用。

WebDriver driver = new FirefoxDriver();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.get("

WebElementmyDynamicElement = driver.findElement(By.id("myDynamicElement"));

RemoteWebDriver

截屏

importjava.io.File; import java.net.URL;

importorg.openqa.selenium.OutputType; importorg.openqa.selenium.TakesScreenshot; importorg.openqa.selenium.WebDriver;

importorg.openqa.selenium.remote.Augmenter;

importorg.openqa.selenium.remote.DesiredCapabilities; importorg.openqa.selenium.remote.RemoteWebDriver;

public class Testing {

public void myTest() throws Exception { WebDriver driver = new RemoteWebDriver( new URL("DesiredCapabilities.firefox());

driver.get("");

// RemoteWebDriver does not implement the TakesScreenshot class // if the driver does have the Capabilities to take a screenshot

// then Augmenter will add the TakesScreenshot methods to the instance WebDriveraugmentedDriver = new Augmenter().augment(driver); File screenshot = ((TakesScreenshot)augmentedDriver). getScreenshotAs(OutputType.FILE); } }

使用FirefoxProfile

FirefoxProfilefp = new FirefoxProfile();

// set something on the profile...

DesiredCapabilities dc = DesiredCapabilities.firefox(); dc.setCapability(FirefoxDriver.PROFILE, fp); WebDriver driver = new RemoteWebDriver(dc);

使用ChromeOptions

ChromeOptions options = new ChromeOptions(); // set some options【applyweb】

DesiredCapabilities dc = DesiredCapabilities.chrome(); dc.setCapability(ChromeOptions.CAPABILITY, options); WebDriver driver = new RemoteWebDriver(dc);

高级用户交互

Actions类允许你创建一个Actions的链然后执行它们。组合的可能多得数不清。以下是一些您可能想要使用的常用的交互。对于完整的Action,请参看API文档JavaC#RubyPython 高级用户交互要求启用native events。这是目前支持的native events的矩阵:

[1]

Using the emulator

[2] (1, 2) With explicitly enabling native events

浏览器启动操作

使用代理

Internet Explorer

最简单和推荐的方法是在运行测试的机器中手工设置代理。如果不可能,或者你想让你的测试运行在不同的配置或者代理中,那么你需要使用以下技巧来使用一个Capabilities对象。这会暂时改变系统的代理设置,在测试结束后再改回原来的设置。

String PROXY = "localhost:8080";

【applyweb】

org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy(); proxy.setHttpProxy(PROXY) .setFtpProxy(PROXY) .setSslProxy(PROXY);

DesiredCapabilities cap = new DesiredCapabailities(); cap.setPreference(CapabilityType.PROXY, proxy);

WebDriver driver = new InternetExplorerDriver(cap);

Chrome

基本上与IE相同。它与IE一样,使用相同的配置(Windows)。在Mac中,使用System Preference->Network settings。在Linux使用System>Preferences>Network Proxy Preferences(或者/tec/environment设置http_proxy)

Firefox

Firefox用一个proxy来维护代理配置。你可以在一个profile中预先设置一个proxy,然后使用这个Profile。或者你也可以随机生成一个Profile,然后设置代理,如下例子:

StringPROXY="localhost:8080";

org.openqa.selenium.Proxyproxy=neworg.openqa.selenium.Proxy(); proxy.setHttpProxy(PROXY) .setFtpProxy(PROXY) .setSslProxy(PROXY);

DesiredCapabilitiescap=newDesiredCapabailities(); cap.setPreference(CapabilityType.PROXY,proxy); WebDriverdriver=newFirefoxDriver(cap);

applyweb 第三篇_2016前端面试题第一套含答案

1) 下列哪个样式定义后,内联(非块状)元素可以定义宽度和高度 a. display:inline b. display:none c. display:block d. display:inherit 2) css 属性 overflow 属性定义溢出元素内容区的内容会如何处理。如果值为 scroll,不论是否需要,用户代理都 会提供一种滚动机制。 True False 3) 新窗口打开网页,用到以下哪个值()。 a. _self b. _blank c. _top d. _parent 4) 下面有关 jquery 事件的响应,描述错误的是? a. b. c. d. onclick 鼠标点击某个对象 onfocus 元素失去焦点 onload 是某个页面的 css js html 文档结构和图像被完成加载 onmousedown 某个鼠标按键被按下 5) 元素的 alt 和 title 有什么异同,选出正确的说法?不同的浏览器,表现一样 a. alt 和 title 同时设置的时候,alt 作为图片的替代文字出现,title 是图片的解释文字 b. alt 和 title 同时设置的时候,title 作为图片的替代文字出现,alt 是图片的解释文字 c. 以上说法都不正确 6) 下列 js 可以让一个 input 的背景颜色变成红色的是? A. inputElement.style.backgroundColor = 'red'; b. inputElement.backgroundColor = 'red'; c. inputElement.style.backgroundColor = '#0000'; d. inputElement.backgroundColor = '#0000';

7) 下面有关 html5 标签说法错误的有? a. <audio> 标签定义声音,比如音乐或其他音频流 b. <canvas> 比如来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来自论坛的文本。亦 或是来自其他外部源内容 c. <menu> 标签定义菜单列表。当希望列出表单控件时使用该标签 d. <command> 标签定义命令按钮,比如单选按钮、复选框或按钮 8) 下述有关 css 属性 position 的属性值的描述,说法错误的是? a. b. c. d. static:没有定位,元素出现在正常的流中 fixed:生成绝对定位的元素,相对于父元素进行定位 relative:生成相对定位的元素,相对于元素本身正常位置进行定位。 absolute:生成绝对定位的元素,相对于 static 定位以外的第一个祖先元素进行定位。【applyweb】9) 下面符合一个有效的 javascript 变量定义规则的是? a. b. c. d. _$te$t2 with a bc 2a 10) 下面有关 JavaScript 中 call 和 apply 的描述,错误的是? a. b. c. d. call 与 aplly 都属于 Function.prototype 的一个方法,所以每个 function 实例都有 call、apply 属性 两者传递的参数不同,call 函数第一个参数都是要传入给当前对象的对象,apply 不是 apply 传入的是一个参数数组,也就是将多个参数组合成为一个数组传入 call 传入的则是直接的参数列表。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对 象。 11) 什么会被打印在控制台上? b 是局部变量还是全局变量 (function() { var a = b = 5; })(); console.log(b); 12) 执行这段代码,输出什么结果。 function test() { console.log(a); console.log(foo()); var a = 1; function foo() { return 2; } } test(); 13) 执行这段代码,输出什么结果。 var fullname = 'John Doe'; var obj = { fullname: 'Colin Ihrig',

prop: { fullname: 'Aurelio De Rosa', getFullname: function() { return this.fullname; } } }; console.log(obj.prop.getFullname()); var test = obj.prop.getFullname; console.log(test()); 14) 下面这个 JS 程序的输出是什么: function Foo() { var i = 0; return function() { console.log(i++); } } var f1 = Foo(), f2 = Foo(); f1(); f1(); f2(); 15) 下面这个 JS 程序的输出是什么: <SCRIPT LANGUAGE="JavaScript"> var bb = 1; function aa(bb) { bb = 2; alert(bb); }; aa(bb); alert(bb); </SCRIPT> 16) Doctype 作用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? 17) CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3 新增伪类有那些? 18) 谈谈 This 对象的理解。 19)请用 js 实现全选和取消全选的功能,只需要写出 js 代码(可以使用 jquery 框架) <input type=”checkbox” id=”checkall” />全选 <div class=”list”> <input type=”checkbox” name=” type” value=”1” /> 这是 1

<input type=”checkbox” name=”type” value=”2” /> 这是 2 </div> 20)面试官问你有没有女/男朋友? 答案 1,C。内联元素加上 display:block;后被块级化。块级元素一般是其他元素的容器, 可容纳内联元素和其他块状元素, 块状元素排斥其他元素与其位于同一行,宽度(width)高度(height)起作用。因此,可以定义其宽度和高度。 ,2,TRUE。参数是 scroll 时候,必会出现滚动条。 参数是 auto 时候,子元素内容大于父元素时出现滚动条。 参数是 visible 时候,溢出的内容出现在父元素之外。 参数是 hidden 时候,溢出隐藏。, 3,选 B。在 html 中通过<a>标签打开一个链接,通过 <a> 标签的 target 属性规定在何处打开链接文档。 如果在标签<a>中写入 target 属性,则浏览器会根据 target 的属性值去打开与其命名或名称相符的 框架<frame>或 者窗口. 在 target 中还存在四个保留的属性值如下, 属性值 值 描述 _blank 在新窗口中打开被链接文档。 _self 默认。在相同的框架中打开被链接文档。 _parent 在父框架集中打开被链接文档。 _top 在整个窗口中打开被链接文档。 framename 在指定的框架中打开被链接文档。 4,选 b。onfocus 获得焦点 onblur 失去焦点

5,A 这两个属性是有些重复了。在不同浏览器里面表现有些不同。在 alt 和 title 同时设置的时候,alt 作为图片的替 代文字出现,title 是图片的解释文字。 6,A #0000 是不正确的写法,至少要为六位,应该是#FF0000 A 写法是正确的,有两种写法: document.getElementById("input").style.backgroundColor = "red"; inputElement.style.backgroundColor = "#FF0000"; 7, B 这里考察 HTML 标签的使用: <audio> 标签定义声音,比如音乐或其他音频流。 A 正确。 <canvas> 标签定义图形,比如图表和其他图像。<canvas> 标签只是图形容器,您必须使用脚本来绘制图形。 B 错误, <article>标签定义外部的内容。比如来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来 自论坛的文本。亦或是来自其他外部源内容。 <menu> 标签定义命令的列表或菜单。<menu> 标签用于上下文菜单、工具栏以及用于列出表单控件和命令。 C 正确 command 元素表示用户能够调用的命令。<command> 标签可以定义命令按钮,比如单选按钮、复选框或按钮。只有当 command 元素位于 menu 元素内时,该元素才是可见的。否则不会显示这个元素,但是可以用它规定键盘快捷键。 D 正确。 8,B static 元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元 素中。 relative 元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。 absolute 元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原 先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流 中生成何种类型的框。 fixed 元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。 9,A 正确; B 是关键字; C 有空格; D 开头为数字; 第一个字符必须是一个 ASCII 字母(大小写均可),或一个下划线(_)。注意第一个字符不能是数字。 后续的字符必须是字母、数字或下划线。 变量名称一定不能是 保留字。 10,B; call()方法和 apply()方法的作用相同,他们的区别在于接收参数的方式不同。对于 call(),第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数。(在使用 call()方法时,传递给函数的参数必须逐个列举出来。 使用 apply()时,传递给函数的是参数数组)如下代码做出解释: function add(c, d){ return this.a + this.b + c + d; }

applyweb 第四篇_Web应用防火墙(WAF,Web Application Firewall)入门

Web应用防火墙(WAF,Web Application Firewall)入门

-

Web应用防火墙正日趋流行,过去这些工具被很少数的大型项目垄断,但是,随着大量的低成本产品的面市以及可供选择的开源试用产品的出现,它们最终能被大多数人所使用。在这篇文章中,先向大家介绍Web应用防火墙能干什么,然后快速的概览一下Web应用防火墙最有用的一些特征。通过这篇文章的阅读,大家能清楚地了解web应用防火墙这个主题,掌握相关知识。

什么是web应用防火墙?

有趣的是,还没有人能真正知道web应用防火墙究竟是什么,或者确切的说,还没有一个大家认可的精确定义。从广义上来说,Web应用防火墙就是一些增强 Web应用安全性的工具。然而,如果我们要深究它精确的定义,就可能会得到更多的疑问。因为一些Web应用防火墙是硬件设备,一些则是应用软件;一些是基于网络的,另一些则是嵌入WEB服务器的。

国外市场上具有WEB应用防火墙功能的产品名称就有不同的几十种,更不用说是产品的形式和描述了。它难以界定的原因是这个名称包含的东西太多了。较低的网络层(Web应用防火墙被安置在第七层)被许多设备所覆盖,每一种设备都有它们独特的功能,比如路由器,交换机,防火墙,入侵检测系统,入侵防御系统等等。然而,在HTTP的世界里,所有这些功能都被融入在一个设备里:Web应用防火墙。

总体来说,Web应用防火墙的具有以下四个方面的功能:

1. 审计设备:用来截获所有HTTP数据或者仅仅满足某些规则的会话

2. 访问控制设备:用来控制对Web应用的访问,既包括主动安全模式也包括被动安全模式

3. 架构/网络设计工具:当运行在反向代理模式,他们被用来分配职能,集中控制,虚拟基础结构等。

4. WEB应用加固工具:这些功能增强被保护Web应用的安全性,它不仅能够屏蔽WEB应用固有弱点,而且能够保护WEB应用编程错误导致的安全隐患。

但是,需要指出的是,并非每种被称为Web应用防火墙的设备都同时具有以上四种功能。

由于WEB应用防火墙的多面性,拥有不同知识背景的人往往会关注它不同方面的特点。比如具有网络入侵检测背景的人更倾向于把它看作是运行在HTTP层上的 IDS设备;具有防火墙自身背景的人更趋向与把它看作一种防火墙的功能模块。还有一种理解来自于“深度检测防火墙”这个术语。他们认为深度检测防火墙是一种和Web应用防火墙功能相当的设备。然而,尽管两种设备有些相似之处,但是差异还是很大的。深度检测防火墙通常工作在的网络的第三层以及更高的层次,而 Web应用防火墙则在第七层处理HTTP服务并且很好地支

持它。

直接更改WEB代码解决安全问题是否更好?这是毋庸置疑的,但也没那么容易(实现)。

因为,通过更改WEB应用代码是否一定就能增强系统安全性能,这本身就存在争论。而且现实也更加复杂:

* 不可能确保100%的安全。人的能力有限,会不可避免地犯错误。

* 绝大多数情况下,很少有人力求100%的安全。如今的现实生活中那些引领应用发展的人更多注重功能而不是安全。这种观念正在改变,只是有点缓慢。

* 一个复杂的系统通常包含第三方产品(组件,函数库),它们的安全性能是不为人知的。如果这个产品的源代码是保密的,那么你必须依赖商品的厂商提供补丁。即使有些情况下源代码是公开的,你也不可能有精力去修正它们。

* 我们不得不使用存在安全隐患的业务系统,尽管这些旧系统根本无法改进。

因此,为了获得最好的效果,我们需要双管齐下:一方面,必须提高管理者和开发者的安全意识;另一方面,尽可能提高应用系统的安全性。

Web应用防火墙的特点

Web应用防火墙的一些常见特点如下:

异常检测协议

如果阅读过各种RFC,就会发现一个被反复强调的主题。大多数RFC建议应用自己使用协议时要保守,而对于接受其他发送者的协议时可以自由些。Web服务器就是这样做的,但这样的行为也给所有的攻击者打开了大门。几乎所有的WAF对HTTP的请求执行某种异常检测,拒绝不符合Http标准的请求。并且,它也可以只允许HTTP协议的部分选项通过,从而减少攻击的影响范围。甚至,一些WAF还可以严格限定HTTP协议中那些过于松散或未被完全制定的选项。

增强的输入验证

【applyweb】

就频繁发生的Web安全问题而言,有些是源于对Web设计模型的误解,有些则来自于程序师认为浏览器是可信的。很多WEB程序员用JavaScript在浏览器上实现输入验证。而浏览器只是一个用户控制的简单工具,因此攻击者可以非常容易地绕过输入验证,直接将恶意代码输入到WEB应用服务器。

有一个解决上述问题的正确方法,就是在服务端进行输入验证。如果这个方法不能实现,还可以通过在客户和应用服务器之间增加代理,让代理去执行Web页面上嵌入的JavaScript,

实现输入验证。

消极的安全模型VS积极的安全模型

曾经设置过防火墙规则的人,可能会碰到这样的建议:允许已知安全的流量,拒绝其他一切访问。这就是一种很好的积极安全模型。恰恰相反,消极安全模型则是默认允许一切访问,只拒绝一些已知危险的流量模式。

每种安全模型方式都存在各自的问题:

消极安全模型:什么是危险的?

积极安全模型:什么是安全的?

消极安全模式通常使用的更多。识别出一种危险的模式并且配置自己的系统禁止它。这个操作简单而有趣,却不十分安全。它依赖于人们对于危险的认识,如果问题存在,却没有被意识到(这种情况很常见),就会为攻击者留下可趁之机。

积极安全模式(又称为白名单模式)看上去是一种制定策略的更好方式,非常适于配置防火墙策略。在Web应用安全领域中,积极安全模式通常被概括成对应用中的每一个脚本的枚举。对枚举的每一个脚本,需要建立一个相应列表,表中内容如下所示:

* 允许的请求方式(比如,GET/POST或者只POST)

* 允许的Content-Type

* 允许的Content-Length

* 允许的参数

* 指定参数和可选参数

* 参数类型(比如,文本或整数)

* 附加参数限制

上述列表仅仅是个例子,实际的积极安全模式通常包括更多的要素。它试图从外部完成程序员本应从内部完成的工作:为提交到Web应用的信息验证每一个比特。如果肯花时间的话,使用积极安全模式就是一个比较好的选择。这个模式的难点之一,在于应用模式会随着应用的发展而改变。每当应用中添加新脚本或更改旧脚本,就需要更新模式。但是,它适用于保护那些稳定的、无人维护的旧应用。

自动开发策略可以解决以上问题:

* 一些WAF能够监视流量,并根据这些流量数据自动配置策略,有些产品可以实时进行这样的工作。

* 通过白名单,可以标识特定的IP地址是可信的,然后,依据观察的流量,配置WAF,更新安全策略。

* 如果通过一个全面的衰减测试,(仿真正确的行为,)来创建一个应用,并且在WAF处于监控状态时执行测试,那么WAF可以自动生成策略。

可见,没有哪个模式是完全令人满意的。消极安全模式适用于处理已知问题,而积极安全模式则适用于稳定的Web应用。理想的做法是,在现实生活中,将二者结合使用,取长补短。

及时补丁

积极安全模式理论上更好一些因为浏览器和WEB应用程序之间的通信协议通过HTML规范进行了很好的定义。现在的Web开发语言都可以处理带有多个参数的 HTTP请求。因为这些参数在Web应用防火墙中都是可见的,因此WEB应用防火墙可以分析这些参数判断是否存在允许该请求。,

当一个应用中的漏洞被发现时大多数情况下我们会尽可能在代码中修补它。受诸多因素的影响(如应用的规模,是否有开发人员,法律问题等等 ),开发补丁的过程可能需要几分钟,或者一直到无限长的是时间。这些时间正是攻击者发起攻击的好机会。

如果开发人员能够在非常短的时间内在代码中修补好漏洞,那你就不用担心了。但如果修补这个漏洞需要花费几天,甚至几周来修复呢?Web应用防火墙就是处理这个问题的理想工具:只要给一个安全专家不错的WAF和足够的漏洞信息,他就能在不到一个小时的时间内屏蔽掉这个漏洞。当然,这种屏蔽掉漏洞的方式不是非常完美的,并且没有安装对应的补丁就是一种安全威胁,但我们在没有选择的情况下,任何保护措施都比没有保护措施更好。

及时补丁的原理可以更好的适用于基于XML的应用中,因为这些应用的通信协议都具规范性。

基于规则的保护和基于异常的保护

现在市场上大多数的产品是基于规则的WAF。其原理是每一个会话都要经过一系列的测试,每一项测试都由一个过多个检测规则组成,如果测试没通过,请求就会被认为非法并拒绝。

基于规则的WAFs很容易构建并且能有效的防范已知安全问题。当我们要制定自定义防御策略时使用它会更加便捷。但是因为它们必须要首先确认每一个威胁的特点,所以要由一个强大的规则数据库支持。WAF生产商维护这个数据库,并且他们要提供自动更新的工具。

这个方法不能有效保护自己开发的WEB应用或者零日漏洞(攻击者使用的没有公开的漏洞),这些威胁使用基于异常的WAF更加有效。

异常保护的基本观念是建立一个保护层,这个保护层能够根据检测合法应用数据建立统计模型,以此模型为依据判别实际通信数据是否是攻击。理论上,一但构建成功,这个基于异常的系统应该能够探测出任何的异常情况。拥有了它,我们不再需要规则数据库而且零日攻击也不再成问题了。但基于异常保护的系统很难构建,所以并不常见。因为用户不了解它的工作原理也不相信它,所以它也就不如基于规则的WAF应用广范。

状态管理

HTTP的无状态性对Web应用安全有很多负面影响。会话只能够在应用层上实现,但对许多应用来说这个附加的功能只能满足业务的需要而考虑不到安全因素了。Web应用防火墙则将重点放在会话保护上,它的特征包括:

强制登录页面。在大多数站点, 你可以从任何你所知道的URL上访问站点,这通常方便了攻击者而给防御增加了困难。WAF能够判断用户是否是第一次访问并且将请求重定向到默认登录页面并且记录事件。

分别检测每一个用户会话。如果能够区分不同的会话,这就带来了无限的可能。比如,我们能够监视登陆请求的发送频率和用户的页面跳转。通过检测用户的整个操作行为我们可以更容易识别攻击。

对暴力攻击的识别和响应。通常的Web应用网络是没有检测暴力攻击的。有了状态管理模式,WAF能检测出异常事件(比如登陆失败),并且在达到极限值时进行处理。此时它可以增加更多的身份认证请求的时间,这个轻微的变化用户感觉不到,但对于足以对付自动攻击脚本了。如果一个认证脚本需要50毫秒完成,那它可以发出大约每秒20次的请求。如果你增加一点延时,比如说,一秒种的延迟,那会将请求降低至每秒不足一次。与此同时,发出进一步检测的警告,这将构成一个相当好的防御。

实现会话超时。超出默认时间会话将失效,并且用户将被要求重新认证。用户在长时间没有请求时将会自动退出登录。

会话劫持的检测和防御。许多情况下,会话劫持会改变IP地址和一些请求数据(HTTP请求的报头会不同)。状态监控工具能检测出这些异常并防止非法应用的发生。在这种情况下应该终止会话,要求用户重新认证,并且记录一个警告日志信息。

只允许包含在前一请求应答中的链接。一些WAF很严格,只允许用户访问前一次请求返回页面中的链接。这看上去是一个有趣的特点但很难得到实施。一个问题在于它不允许用户使用多个浏览器窗口,另一个问题是它令使用JavaScript自动建立连接的应用失效。

其他防护技术

WAF的另外一些安全增强的功能用来解决WEB程序员过分信任输入数据带来的问题。比如:

隐藏表单域保护。有时,内部应用数据通过隐藏表单变量实现,而它们并不是真的隐藏的。程序员通常用隐藏表单变量的方式来保存执行状态,给用户发送数据,以确保这些数据返回时未被修改。这是一个复杂繁琐的过程,WAF经常使用密码签名技术来处理。

Cookies保护。和隐藏表单相似的是,cookies经常用来传递用户个人的应用数据,而不一样的是,一些cookies可能含有敏感数据。WAFs 通常会将整个内容加密,或者是将整个cookies机制虚拟化。有了这种设置,终端用户只能够看到cookies令牌(如同会话令牌),

applyweb 第五篇_微软Web Application Stress 的使用体验

微软Web Application Stress 的使用体验

有个朋友来信说下了微软的Web压力测试工具,但不会使用,也没有中文的版本,有幸我做B/S下的CRM系统时曾经用过,为了方便大家,我写了一下简单使用的说明,当然只是简单的使用,起个抛砖引玉的作用

Web Application Stress 从英文上看就知道是Web的压力测试工具。它可以用来模拟多个用户操作网站,特别在.Net开发B/S的应用程序时,在程序投入运行时,可以用它来进行程序的测试并得到Web站点的稳定参数。

说了很多也许大家会说WAS一定不好上手,这是大家多虑了,微软的东东从来就是方便大家的(我可没有替微软做广告的意思,事实如此),下面我就把WAS的简单使用说一下:

1. 如图1,选择Scripts|Create|Record 创建一个测试脚本。 图1 2. 如图2,选取要记录的内容,有下例3种,request(请求),cookies(网上信息块),和host headers(主机标题)。 图2 3. 选中后按next,再按入Finish按钮,会自动打开IE,如图3,你就可在这个IE中输入你要测试的URL,并在站内按照你想要测试的方式进行站内的浏览,让WAS进行解本记录。我这里对系统分析员网站进行测试。 ] 图3 4. 如果你要结束你要的步骤,你可在WAS工具的Record 标签上单击Stop Recording按钮。 这时你就可以用刚刚记录的脚本进行测试了,选中菜单栏中的Scripts|Run来运行刚刚记录下的脚本。当然如果你不满意你刚刚记录的脚本,你也可以手动修改。下图就是手动修改的图面,如图4 图4 5. 运行完脚本后,你就可以查看报告了,在View|Report中,图6就是报告。 图6【applyweb】

利用Web Application Stress Tool(WAS)做性能测试(1)

Duwamish Online

Aaron Ching, Pedro Silva, and Allen Wagner

Microsoft Developer Network

January 2001

摘要:这篇文章讨论了性能测试对于成功发布一个网络应用的重要性,集中讨论了微软的Web Application Stress (WAS)这个用于测试Duwamish Online的性能的工具。

内容

介绍

使用WAS的好处

WAS的缺陷

安装WAS

创建测试脚本

配置测试脚本

运行测试脚本

结论:最好的习惯

介绍

性能测试是成功发布一个网络应用的关键因素。当越来越多的用户访问你的站点时,清楚地知道你的应用程序和你的服务器群是怎样工作的就显得非常重要了。

为了给你的网络应用程序模拟出那种类型的使用,你可以协同几百甚至上千的真实用户在一段设计好的时间段里访问你的站点,你也可以只与一个能复制这么多用户负载的测试工具一起工作, 许多性能测试工具可以帮你的忙。基本上,这些工具都允许你以有限的客户端模拟大量的虚拟用户,并发地访问预先确定的页面或网站的URLs (Uniform Resource Locators)。每一个虚拟用户都能精确地仿效在真实浏览器和网站服务器之间进行通讯协议。

在这篇文章里,我们将专注于其中一个这样的工具:Microsoft® Web Application Stress (WAS)工具。你可以在微软的Microsoft Windows® 2000 Resource Kit CD (WAS version 288)里面找到这个工具。

注意 WAS不能再从Microsoft的网站下载了,Visual Studio .NET 的企业架构 和 企业开发版本都包含一个新的网络压力测试工具,这个工具叫做Application Center Test,是受Microsoft技术支持的工具。这个工具包含在Visual Studio .NET安装时的Enterprise

Development Tools部分。在写这篇文章时,Application Center Test还没有正式公开发表。关于如何得到Visual Studio .NET,请访问Visual Studio网站。

使用WAS的好处

首先,我们来讨论一下使用WAS测试你的应用程序的好处。

它简单

WAS允许你以不同的方式创建测试脚本:你可以通过使用浏览器走一遍站点来录制脚本,可以从服务器的日志文件导入URL,或者从一个网络内容文件夹选择一个文件。当然,你也可以手工地输入URL来创建一个新的测试脚本。

不像其它的工具,你可以使用任何数量的客户端运行测试脚本,全部都有一个中央主客户端来控制。在每一个测试开始前,主客户机透明地执行以下任务:

 与其他所有的客户机通讯

【applyweb】

 把测试数据分发给所有的客户端

 在所有客户端同时初始化测试

 从所有的客户端收集测试结果和报告

这个特性非常重要,尤其对于要测试一个需要使用很多客户端的服务器群的最大吞吐量时非常有用。

它的高可用性

WAS是被设计用于模拟Web浏览器发送请求到任何采用了HTTP1.0或1.1标准的服务器,而不考虑服务器运行的平台。

除了它的易用性外,WAS还有很多其它的有用的特性,包括:

 对于需要署名登录的网站,它允许创建用户帐号。

 允许为每个用户存储cookies 和Active Server Pages (ASP) 的session信息

 支持随机的或顺序的数据集,以用在特定的名字-值对

 支持带宽调节和随机延迟(“思考的时间”)以更真实地模拟显示情形。  支持Secure Sockets Layer (SSL)协议

 允许URL分组和对每组的点击率的说明

 提供一个对象模型,可以通过Microsoft Visual Basic® Scripting Edition (VBScript)处理或者通过定制编程来达到开启,结束和配置测试脚本的效果。 WSA的缺陷

除了优势外,WAS的确有一些缺陷存在。当前知道的bug和有关事项都列在WAS的网站上了。以下是当前WAS不支持的特性:

 以前面所发请求返回的结果为基础,修改URL参数的能力。  运行或模仿客户端逻辑的能力

 为所分配的测试指定一个确定数量的测试周期的能力。

 对拥有不同IP地址或域名的多个服务器的同时测试能力

注意 你可以使用多个主客户端来同时测试多个服务器。然而,如果你想把所有测试结果联系起来成为一个整体,则需要整理从各个WAS数据库得到的数据

 支持页面在不同IP地址或域名间的重定向的能力

 从Web浏览器直接记录SSL页面的能力

注意 WSA已经支持SSL页面的测试,但是没有记录它们。你需要在脚本录制完后,手工地为每个设计好的URL打开SSL支持

虽然对这些限制有一些相应的解决办法,但是如果你的应用依赖一个或多个这样的功能的话,你也许不能完全享受WAS带来的好处。

安装WAS

WAS要求Microsoft Windows NT® 4.0 Service Pack 4或以上版本,包括Windows 2000平台。还要求Internet Explorer 4.0以上版本,与Internet Explorer 5.0工作更好。

要安装WAS,首先下载最新版本的setup.exe程序,按照安装向导的指示。拷贝并在你的测试机器上安装。

注意 在本文介绍的所有步骤均以WAS version 293为蓝本。

创建测试脚本

虽然你可以手动地创建测试脚本,WAS可以通过记录浏览器活动,导入服务器日志文件或评估Web文件夹的内容来帮助你创建测试脚本。在本文,我们将主要通过记录览器活动的方式来创建测试脚本。采用这个方法而不用其它的方法有几个原因,包括:

 记录览器活动的方式以精确的方式捕捉所有用户的交互活动。任何从浏览器发往服务器的URL指向,应用程序参数和HTTP头部信息都会被自动地记录在新的测试脚本里。

 导入服务器日志文件的方法在站点已经进入投入使用阶段,有了真实的用户流量的情况下使用最好。但是,一个新的站点未必有这么多的真实用户使用数据,进一步说,可能还需要合并大量的日志文件来达到较好地体现用户活动的目的,这将需要创建大量的测试脚本,将需要客户端更多的系统资源。

 选取Web内容文件夹的方法最好用在测试多数是静态HTML文件的站点。这种方法允许在已有服务器的Web页面的基础上快速创建测试脚本。然而,这种方法并不捕捉任何由大多数应用程序文件产生的参数,像Common Gateway Interface (CGI)程序或Active Server Pages (ASP).

你只需要在主客户机器创建和存储你的测试脚本,当测试由主客户端初始化时,测试脚本会自动地分发到其他的测试客户端。

准备测试客户端机器

如果你正在你的内部网通过代理服务器使用WAS ,并且从内部网外的客户端发送请求页面,而且你的公司使用Microsoft Proxy Server,那么按照以下的步骤建立你的客户端:

1. 从开始菜单,指向设置\控制面板。双击管理工具图标,然后是服务图标。

2. 双击WebTool服务打开属性对话框

3. 点Log On As标签,然后点This account选择按钮添加你的网络用户名和密码。使用domain\user name的格式

4. 停止并重起WebTool服务

5. 然后,安装Microsoft Windows Proxy client 2.0,也叫Winsock Proxy 客户端,可以在Microsoft Proxy Server CD里找到(更多有关怎样安装和设置这个软件的信息,请参考包含在CD里面的文档)

6. 对于希望使用代理服务器的每个测试客户端,重复步骤1-5。 如果你的公司使用其他的代理服务器,就要

本文来源:http://www.gbppp.com/jd/466978/

推荐访问:
推荐内容:

热门文章