精华内容
下载资源
问答
  • ☆特别推崇Stephen Walther大师简单实用、清晰明了的编程风格~关于作者Stephen Walther 撰写了有关 ASP.NET 的最畅销著作 — ASP.NET Unleashed他还曾是 ASP.NET Community Starter Kit(一个由 Microsoft 生产的 ...

     ☆特别推崇Stephen Walther大师简单实用、清晰明了的编程风格~

    关于作者

    Stephen Walther 撰写了有关 ASP.NET 的最畅销著作 — ASP.NET Unleashed他还曾是 ASP.NET Community Starter Kit(一个由 Microsoft 生产的 ASP.NET 示例应用程序)的架构师和首席开发人员。他已经通过他的公司 Superexpert (http://www.superexpert.com) 为美国各地的公司(包括 NASA 和 Microsoft)提供了 ASP.NET 培训。

    作者本身毕业于加州大学伯克利分校的艺术专业,并曾在MIT攻读过语言和哲学专业的博士,

    blog地址:http://www.superexpert.com/Default.aspx

    展开全文
  • 为了适应自动化测试的需要,单元测试框架需要满足两个重要的指标。首先当然是程序库的质量了,因为你需要使用它来构建测试。其次是测试框架能够集成到你所使用的...\感兴趣的读者可以在Stephen Walther所发表的名为I...

    为了适应自动化测试的需要,单元测试框架需要满足两个重要的指标。首先当然是程序库的质量了,因为你需要使用它来构建测试。其次是测试框架能够集成到你所使用的工具链当中。对于.NET开发者来说,这意味着可以通过构建脚本在IDE中运行JavaScript测试。虽说如此,但大多数框架只关注于前者,Stephen Walther则对后者展开了研究。

    \

    感兴趣的读者可以在Stephen Walther所发表的名为Integrating JavaScript Unit Tests with Visual Studio的文章中了解完整的设计,我们这里只是介绍一下其中的关键点。

    \

    最重要的事情就是他的设计中并没有浏览器组件,这很有意思。

    \
    • 由于没有使用浏览器,因此测试的运行速度会非常快。\
    • 环境非常纯粹。只有显式导入到测试引擎中的代码会执行,不会掺杂任何浏览器的东西。\
    • 由于是个整洁、无浏览器的环境,因此你没法访问到DOM或是其他特定于Web的对象。\
    • 虽然对于纯JavaScript库来说非常完美,但对于UI测试却完全不适合(这可以通过模拟特定于Web的对象来解决)。\

    虽然任何独立的JavaScript引擎都可以实现这个目标,但Stephen最终选择了IE下的JScript引擎、Windows Script Host以及传统的ASP。这样就可以通过Windows Script Interfaces与Microsoft Script Control公开给.NET了。

    \

    他构建了一个非常原始的JavaScript测试库,用于填平JScript引擎与MSTest框架之间的沟壑。考虑到设计的简洁性,这项技术实际上可以将任意的JavaScript测试库、JavaScript引擎和自动化测试框架组合起来。

    \

    查看英文原文:Stephen Walther on Integrating JavaScript Unit Tests

    展开全文
  • index.haml - no such file

    2020-12-08 21:20:31
    2.1.2 (set by /Users/walther/Documents/RailsProjects/testbandit/.ruby-version) testbandit/ $ bandit Enter the URL of the theme you wish to download (example: http://www.google.com) ...
  • Walther <p>ps: <p>Rake testing: <pre><code> [rails 3] rake ============================&...
  • 图书说明: 利用您现有的JavaScript和HTML技能为Windows 8.1构建应用...这是一个了不起的机会 - 畅销的微软网络开发作者Stephen Walther将向您展示如何充分利用它。 Walther提供了同样深刻的洞察力和实用代码,使...

    图书说明:

    利用您现有的JavaScript和HTML技能为Windows 8.1构建应用程序并将其添加到Windows应用商店。这是一个了不起的机会 - 畅销的微软网络开发作者Stephen Walther将向您展示如何充分利用它。

    Walther提供了同样深刻的洞察力和实用代码,使他的ASP.NET Unleashed成为有史以来第一本的ASP.NET书籍,Walther涵盖了使用JavaScript和HTML5构建出色的Windows应用商店应用所需的一切。

    他指导您使用Microsoft的WinJS 2.0库开发适用于Windows 8.1的应用程序 - 您将学习如何使用JavaScript模板,控件和数据绑定。您将深入了解从使用ListView控件显示数据到支持SkyDrive云存储,创建游戏以及使用IndexedDB和HTML5表单等所有内容。

    针对Windows 8.1的发布进行了大量更新,本书涵盖了WinJS 2.0库的所有新功能,如Repeater,SearchBox,WebView和NavBar控件以及新的WinJS Scheduler。本书已更新为新的示例应用程序,演示如何构建与Windows Azure移动服务交互的Windows应用商店应用。

    如果您是网络开发人员,Windows 8会为您提供数百万新的潜在客户来购买您的应用程序 - 而且您已经掌握了许多技能。拿到这本书,掌握你还不知道的工具和技术,然后去追寻那个巨大的新市场吧!

    有关如何...的详细信息

    • 让您的应用程序在Windows应用商店中发布

    • 使用JavaScript控件,如Tooltip,Rating,DatePicker和FlipView控件

    • 彻底掌握使用WinJS ListView控件来显示,排序和过滤数据

    • 使用Windows 8.1引入的新控件,如Repeater,WebView,NavBar和SearchBox控件

    • 实施Windows搜索和共享合同

    • 使用HTML5 Canvas构建街机游戏

    • 通过Windows Azure移动服务或IndexedDB数据库将数据存储在本地文件系统中

    • 使用Live Services对用户进行身份验证,检索用户配置文件以及与SkyDrive进行交互

    • 使用页面控件创建自定义WinJS控件

    • 构建优雅适应不同屏幕分辨率和方向的应用程序

    • 从计算机的网络摄像头拍摄照片并播放声音8.1应用程序

    下载地址: Windows 8.1 Apps with HTML5 and JavaScript Unleashed

    更多免积分电子书,请访问:IE布克斯网

    转载于:https://my.oschina.net/u/3070312/blog/2997640

    展开全文
  • 原文地址:...摘要:在这个Tip中,Stephen Walther介绍了黑客如何通过操作URL从ASP.NET MVC网站中窃取敏感信息。Stephen Walther还探讨了如何构建单元测试来防止这类攻击。 ...

    原文地址:http://weblogs.asp.net/stephenwalther/archive/2008/06/26/prevent-url-manipulation-attacks.aspx

    摘要:在这个Tip中,Stephen Walther介绍了黑客如何通过操作URL从ASP.NET MVC网站中窃取敏感信息。Stephen Walther还探讨了如何构建单元测试来防止这类攻击。

    在一个网站上,黑客可以通过URL操作攻击来简单地访问其他用户的数据。如果你通过记录的ID来获取数据记录,而又没有针对每个数据库请求检查是否是由正确的用户发起的请求,则任何人都可以读取其他用户的数据库记录。

    ASP.NET MVC框架的一个优势在于,它可以暴露出直观的URL。不幸的是,这个优势也可能是危险的。黑客可以通过操作URL来从一个ASP.NET MVC网站中窃取数据。

    我们来看一个简单的示例程序,它将面临URL操作攻击。假设你正在为医院创建网站。医院的病人可以登录网站来查看他们的病历。这个应用程序有四个视图。

    当病人第一次向该应用程序发起请求时,他会看到图1所示的视图。该视图包含一个链接,病人单击这个链接可以看到他的病历。

    图1 - Index.aspx

    如果病人尚未登录,他将被重定向到如图2所示的Login视图。病人必须输入正确的凭证才能查看他的病历记录(凭证存放在Web.config中)。

    图2 - Login.aspx

    通过验证后,病人会看到图3所示的Summary视图。该视图显示了一个列表,给出了一组指向详细病历记录的链接。数据记录的获取是根据病人的用户名进行的。

    图3 - Summary.aspx

    最后,如果病人单击了一个病历记录链接,他就会看到如图4所示的Details视图。该视图显示了一条单独的记录。

    图4 - Details.aspx

    这里就是黑客能够通过URL操作攻击来窃取病人数据的地方了。注意图4中用于为Phil(病人名)获取详细数据的URL。该URL看上去是这样的:

    http://localhost:48583/MedicalHistory/Details/6

    该URL非常直观。请求这个URL可以获取数据库中Id是6的数据。由于这个URL是如此的直观,你可以很容易将其修改为另外一个编号——

    http://localhost:48583/MedicalHistory/Details/4

    修改了URL之后,Phil可以看到Rob的私人病历记录,如图5所示。这恐怕不好吧。

    图5 - Phil可以看到Rob的私人记录

    清单1列出了用于返回Summary和Details视图的控制器。这样编写控制器导致该医院网站为URL操作攻击敞开了大门。

    清单1 - MedicalHistoryCotroller.cs

    清单1 - MedicalHistoryCotroller.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Tip10.Models;
     
    namespace Tip10.Controllers
    {
         
    public class MedicalHistoryController : Controller
         
    {
             
    private readonly MedicalHistoryDataContext _db;
      
             
    public MedicalHistoryController()
                 : 
    this(new MedicalHistoryDataContext())
             
    { }
     
             
    public MedicalHistoryController(MedicalHistoryDataContext dataContext)
             
    {
                 _db 
    = dataContext;
             }

     
     
             
    public ActionResult Summary()
             
    {
                 
    // Authenticate Guard Clause
                 if (!User.Identity.IsAuthenticated)
                 
    {
                     
    return RedirectToAction("Login""Home");
                 }

     
                 
    // Show summary of medical history
                 var records = from r in _db.MedicalHistories
                               
    where r.PatientUserName == User.Identity.Name
                               orderby r.EntryDate
                               select 
    new SummaryMedicalHistory {Id=r.Id, EntryDate=r.EntryDate, Subject=r.Subject};
                 
    return View(records);
             }

     
             
    public ActionResult Details(int id)
             
    {
                 
    // Authenticate Guard Clause
                 if (!User.Identity.IsAuthenticated)
                 
    {
                     
    return RedirectToAction("Login""Home");
                 }

                 
                 
    // Show detailed medical record
                 var record = _db.MedicalHistories.SingleOrDefault(r => r.Id == id);
                 
                 
    return View(record);
             }

     
     
         }

    }

    MedicalHistoryController暴露了两个操作,名字分别是Summary和Details。两个操作都从MedicalHistory数据表中获取数据。

    Summary操作并没有为URL操作攻击敞开大门。在获取数据库记录时,记录是针对当前病人的用户名检查过的。记录是通过下面的LINQ to SQL查询获取的:

    var records = from r in _db.MedicalHistories
                  
    where r.PatientUserName == User.Identity.Name
                  orderby r.EntryDate
                  select 
    new SummaryMedicalHistory {Id=r.Id, EntryDate=r.EntryDate, Subject=r.Subject};

    不好的查询出现在Details操作中。当Details操作获取一条特定的数据库记录时,只使用了记录的Id:

    var record = _db.MedicalHistories.SingleOrDefault(r => r.Id == id);

    由于这样编写了查询,黑客只需简单地修改传给Details操作的Id就能看到其他病人的病历记录。

    下面是编写查询的正确方法:

    var record = _db.MedicalHistories.SingleOrDefault(r => r.Id == id && 
        r.PatientUserName 
    == User.Identity.Name);

    在这个修改过的查询中,只有同时匹配指定Id和当前病人用户名的记录会返回。这个数据库查询是安全的。

    针对URL操作攻击创建单元测试

    在构建ASP.NET MVC网站时很容易出现错误,使得你自己被暴露在URL操作攻击下。如何防止这种错误?编写单元测试是一种办法。

    考虑清单2中的单元测试。

    清单2 - MedicalHistoryControllerTest.cs

    清单2 - MedicalHistoryControllerTest.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System.Security.Principal;
    using Tip10.Controllers;
    using Tip10.Models;
    using Moq;
     
    namespace Tip10Tests.Controllers
    {
        [TestClass]
        
    public class MedicalHistoryControllerTest
        
    {
            
    const string testDBPath = @"C:\Users\swalther\Documents\Common Content\Blog\Tip10 Prevent Querystring Manipulation Attacks\CS\Tip10\Tip10Tests\App_Data\MedicalHistoryDB_Test.mdf";
     
            
    /**//// <summary>
            
    /// Tests that Phil cannot read Rob's database records
            
    /// Mocks ControllerContext to mock Phil's identity
            
    /// and attempts to grab one of Rob's records. The
            
    /// result had better be null or their is a querystring 
            
    /// manipulation violation.
            
    /// </summary>

            [TestMethod]
            
    public void DetailsCheckForURLAttack()
            
    {
                
    // Arrange
                var testDataContext = new MedicalHistoryDataContext(testDBPath);
                var controller 
    = new MedicalHistoryController(testDataContext);
                controller.ControllerContext 
    = GetMockUserContext("Phil"true);
               
                
    // Act
                var robRecord = testDataContext.MedicalHistories
                    .FirstOrDefault(h 
    => h.PatientUserName == "Rob");
                var result 
    = controller.Details(robRecord.Id) as ViewResult;
                var medicalHistory 
    = (MedicalHistory)result.ViewData.Model;
     
                
    // Assert
                Assert.IsNull(medicalHistory, "Phil can read Rob's medical records!");
            }

     
            
    private static ControllerContext GetMockUserContext(string userName, bool isAuthenticated)
            
    {
                
    // Mock Identity
                var mockIdentity = new Mock<IIdentity>();
                mockIdentity.ExpectGet(i 
    => i.Name).Returns(userName);
                mockIdentity.ExpectGet(i 
    => i.IsAuthenticated).Returns(isAuthenticated);
     
                
    // Mock Principal
                var mockPrincipal = new Mock<IPrincipal>();
                mockPrincipal.ExpectGet(p 
    => p.Identity).Returns(mockIdentity.Object);
     
                
    // Mock HttpContext
                var mockHttpContext = new Mock<HttpContextBase>();
                mockHttpContext.ExpectGet(c 
    => c.User).Returns(mockPrincipal.Object);
     
                
    return new ControllerContext(mockHttpContext.Object, new RouteData(), new Mock<IController>().Object);
            }

        }

    }

    该单元测试允许你检查Details操作是否为URL操作攻击敞开了大门。这里是测试的工作流程。

    首先,我创建了一个DataContext来呈现测试数据库。测试数据库中包含了两位假想病人(Phil和Rob)的病历记录。测试数据库是产品数据库的副本,但其中包含的是假数据。

    接下来,我mock了ControllerContext。我必须mock一个ControllerContext,因为我想在调用Details操作时假装成是Phil。我希望测试当我被验证为是用户Phil时,是否能访问Rob的病历记录。

    我是用了一个名为GetMockUserContext()的方法来mock这个ControllerContext。该法官法使用了名为Moq的Mock Object Framework。有关Moq的更多信息,请阅读下面这篇博客文章:

    http://weblogs.asp.net/stephenwalther/archive/2008/06/11/tdd-introduction-to-moq.aspx

    接下来,从测试数据库返回了一条Rob的病历记录。Rob的病历记录的Id是由Phil用户传递给Details操作的。

    最后,会根据Details操作返回的记录是否为null产生一个断言。如果记录不是null,则测试会失败,Rob的记录可能会被Phil偷走。

    小结

    要小心URL操作攻击。如果你需要保护敏感数据——如病历记录和信用卡号——你需要特别小心这类攻击。在这个Tip中,我介绍了一种让你的网站更加安全的途径。请利用单元测试来针对URL操作攻击测试你的控制器操作。

    如果你想试验本文中的代码,请单击下面的链接下载源代码。你需要修改MedicalHistoryControllTest文件中testDBPath的值,使其对应你机器上的测试用病历数据库。

    此处下载源代码:http://weblogs.asp.net/blogs/stephenwalther/Downloads/Tip10/Tip10.zip

    -----

    广告:.NET正则表达式库,http://regex-lib.net

    转载于:https://www.cnblogs.com/AndersLiu/archive/2008/07/17/prevent-url-manipulation-attacks.html

    展开全文
  • 原文地址:...摘要:在这个Tip中,Stephen Walther介绍了如何为控制器action创建共享视图。共享视图可以用于多个控制器。本文Stephen Walther介绍的是如何为显示和编辑数据库...
  • CORDIC理论分析

    2020-07-11 12:05:08
    由J. Volder于1959年提出 ,首先用于导航系统,使得矢量的旋转和定向运算不需要做查三角函数表、乘法、开方及反三角函数等复杂运算。... Walther在1974年用它研究了一种能计算出多种超越函数的统一算法 。
  • ASP.NET 学习历程

    万次阅读 2004-12-02 09:11:00
    [注意我不推荐高级技术的书,因为你如果是个高手了就可以自己选择甄别书了,此文只...第一本书建议看《ASP.NET揭秘(第二版) 》作者:[美]Stephen Walther译者:汤涛出版社:中国电力出版社评语:不是很难,却是公认的
  • Compiling gfx-backend-metal v0.1.0 (file:///Users/walther/git/gfx/src/backend/metal) Compiling spirv_cross v0.11.2 Compiling objc_id v0.1.1 Compiling cocoa v0.18.1 Compiling cocoa v0.17.0 ...
  • Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 Microsoft ASP.NET Framework Microsoft SQL Server Microsoft Visual Studio .NET 摘要:本文中,Stephen Walther...
  • MVVMNewsApp-源码

    2021-03-04 09:30:29
    这是Florian Walther(流程中的编码)和Gabor Varadi(Zhuinden / EpicPandaForce)创建的MVVM缓存课程的源代码。 您可以在这里获得课程: : 要查看完整的代码,请查看第15部分的分支。 要运行该应用程序,从获取...
  • 加欣马克思·普朗克量子光学研究所的研究人员为探索靠电荷交换...据该研究所所长、电荷交换方案主任Herbert Walther谈,他们的附带收获是,对金属蒸汽激光器有新的认识,在氦-镉激光器中鉴别出一些过去不知道的谱线。
  • [1] 阮燕辉 . 浏览器 / 服务器应用开发 . 北京 : 科学出版社 2000 [2] 史济民 . 软件工程 -- 原理方法... 北京 : 科学出版社 1999 [4] Stephen Walther. ASP .NET 2.0 揭秘 . 谭振林 黎志 朱兴林译 . 北京 : 人民邮电出
  • ASP.NET MVC设计库

    2020-10-05 13:57:55
    My teammate Stephen Walther launched the ASP.NET MVC Design Gallery a few weeks back. This stemmed from an idea ScottGu had to let the community change the default templates that ship with ASP.NET MVC...
  • packages path: /home/walther/.config/sublime-text-3/Packages state path: /home/walther/.config/sublime-text-3/Local hardware concurrency: 4 zip path: /opt/sublime_text/Packages zip path: /home/walther...
  • Compiling lambda_runtime v0.2.0 (/Users/walther/git/aws-lambda-rust-runtime/lambda-runtime) Finished dev [unoptimized + debuginfo] target(s) in 3.87s Running `/Users/walther/git/aws-lambda-...
  • 发布日期: 11/2/2004 | 更新...Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 Microsoft ASP.NET Framework Microsoft SQL Server Microsoft Visual Studio .NET 摘要:本文中,S...
  • Stephen Walther SuperExpert.com 适用于: Microsoft ASP.NET 2.0 (Beta 2) Microsoft Visual Studio .NET 2005 Microsoft Visual Web Developer 摘要: Microsoft ASP.NET 2.0 具有很多有用的功能,能帮助您...
  • /misc/b311/walther/IT/pyvirtualenv/lib/python2.5/site-packages/obspy.arclink-0.4.1.dev_r1959-py2.5.egg/obspy/arclink/client.py", line 470, in getMetadata data['paz'] = result[id].paz ...
  • 恳请各位帮忙,谁有这个"C.Yee and D.Walther,'motion detection for bottom-up visual attention'tech.rep., SURP/CNS, California Institute of Technology,2002",
  • 液相分离实现可编程DNA凝聚层 本文选自最新发表在Chem上的文章,题目为“Programmable ATP-Fueled DNA Coacervates by Transient Liquid-Liquid Phase Separation”, 文章通讯作者Andreas Walther来自德国弗莱堡大学...
  • 估计簇数的方法:Calinski-Harabasz,Tibshirani和Walther的预测强度,Fang和Wang的自举稳定性。 高斯/多项式混合拟合,用于混合的连续/类别变量。 聚类解释的可变智商统计。 DBSCAN集群。 R中实现的许多聚类方法的...
  • ASP.NET MVC Tip #12 – 仿制控制器上下文 原文地址:... 翻译:Anders Liu ... 摘要:在这个Tip中,Stephen Walther介...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 245
精华内容 98
热门标签
关键字:

walther