随笔分类 - 安全编程
网络编程,“黑客编程”等内容
摘要:
安全令牌服务(STS)是用于根据WS-Trust和WS-Federation协议构建、签署和颁发安全令牌的服务组件。实施这些协议需要进行大量的工作,但WIF能为你完成所有这些工作,让那些不精通协议的人不费吹灰之力即可启动并运行STS。可以使用云STS(如LiveID STS)、预先构建的STS(如ADFS 2.0),或者如果想要颁发自定义令牌或提供自定义身份验证或授权,可以使用 WIF构建自定义的STS。借助WIF即可轻松地构建自己的STS。
STS身份验证支持多种方案:
q 从身份验证机制中分离出应用程序和服务,从而使其能够专注于授权相关声明。
q 支持多种凭据类型,而不会使应用程序和服务的实现变复杂。
q 支持联合方案,用户可以通过在自身的域中进行身份验证来获得对另一个域中资源的访问权限(通过建立不同域的 STS之间的信任关系)。
q 简化标识委派方案,经过身
阅读全文

摘要:
基于声明的标识模型,简单来讲,就是将用户信息作为声明条件,向应用程序来提供用户标识。一个声明以是用户名,也可能是电子邮件地址。现在的想法是配置外部标识系统,为应用程序提供了解用户及其所做各个请求所需的所有信息,以及从可靠源接收的标识数据的加密保证。
基于声明的标识模型,更容易实现单点登录,并且应用程序可以彻底摆脱以下操作:
1) 对用户进行身份验证。
2) 存储用户账户和密码。
3) 调用企业目录以查看用户标识的详细信息。
4) 从其他平台或公司与标识系统集成。
在基于声明的标识模型中,应用程序将根据用户所提供的声明来做出与标识相关的决策。这可以是任何内容,从包含用户名字的简单应用程序个性化设置,到授予用户访问应用程序中高级功能和资源权限。
阅读全文

摘要:
WIF是一个开发框架,该框架集成了基于标识的安全模型和方案以及实现细节。WIF给我们带来的好处主要有三点:
q 基于声明的标识处理方式。
q 使业务逻辑与认证、授权彻底分离。
q 可供学习和扩展的安全架构。
本系列主要探讨它的基本原理,从中学习构建一个安全框架的基本要素和方法。重要的是从它的基本原理,了解标识安全的普遍术语和技术模型。
阅读全文

摘要:
为了保证文档的完整性,防止文档被篡改,同时确保文档的来源,Open XML提供对文档进行数字签名的支持。通过使用Office文档中的签名行捕获数字签名的能力,使组织能够对合同或其他协议等文档使用无纸化签署过程。与纸质签名不同,数字签名能提供精确的签署记录,并允许在以后对签名进行验证。
阅读全文

摘要:
当Office应用程序打开一个Office文档的时候,首先会进行校验,主要校验的是该文档的有效性和完整性。
当随便将一个exe文档的后缀改为docx时候,打开该文件肯定会报文件无效。对于一个Open XML文档,如果想去校验它,可以从如下几个方面:
q 是不是ZIP压缩包
q 必须的部件是否存在
q 关系是否完整
q 部件类型是否匹配
q 文件大小
q 宏和OLE对象
验证的方式也很多,这里给出最简单的方法,使用Open XML SDk中的OpenXmlValidator对象。代码清单14-24是如何验证一个Word文档有效性的方法。
阅读全文

摘要:
文档检查器是用来检查隐藏信息的,并提供了删除功能。现在再来看Office定义的个人信息,包括如下各项:姓名和缩写、公司和组织名称、计算机名、网络服务器和硬盘驱动器、其他文件属性和摘要信息、OLE对象、文档不同版本的作者信息、文档修订信息、文档版本信息、模板信息、隐藏文本、修订和批注。
当执行检查操作的时候,会列出含有隐藏信息的项,并给出删除功能,如图14-27所示。
阅读全文

摘要:
OLE(Object Linking and Embedding,对象连接与嵌入)不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,这种连接机制和协议称为部件对象模型(Component Object Model,COM)。
OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。
但对OLE的支持也带来了一些安全性问题,如在Outlook 2002及以上版本中,黑客如果在邮件中嵌入危险OLE对象,就可以对其肆意伪装,有可能骗过用户导致安全问题。
OLE2是OLE对象的升级版本。
Office中的宏也是作为OLE2对象嵌入到文档中的,下面看在Word中创建一个Excel文档的例子。
阅读全文

摘要:
另外,在默认情况下,新的Open XML文件格式不执行文档中的宏和嵌入代码,还可以快速识别和删除文档中带有的身份信息和敏感信息,如用户名、备注和文件路径等。因此,以Open XML格式保存的文档将更加安全,可以放心地与他人进行文档的共享。
以Word 2007为例,打开Word选项→信任中心→宏设置,可以看到关于宏设置的选项。如图14-22所示。
阅读全文

摘要:
Custom验证模式提供了更灵活的可定制的证书验证方式,当需要自定义验证的时候,可以采用这种方式。以下代码是修改客户端验证为“Custom”模式后的相关配置。
设置客户端对服务端凭据验证模式为“Custom”:
阅读全文

摘要:
PeerOrChainTrust验证模式验证证书是否位于 TrustedPeople 证书存储区中,或通过构建证书信任链来验证证书。如果证书通过任一验证方法,就是受信任的。设置验证模式为“PeerOrChainTrust”的配置如以下代码所示。
在服务端设置验证客户端凭据模式为“PeerOrChainTrust”:
阅读全文

摘要:
ChainTrust验证模式使用证书链来验证 X.509证书是否有效以及是否由受信任的颁发者所颁发。它指定每个证书都必须存在于某个证书层次结构中,而该层次结构以位于证书链顶端的根证书颁发机构结束。它将验证 X.509证书是否由受信任的证书颁发机构颁发。通过搜索证书存储区并确定是否已将该证书颁发机构的证书指定为受信任的证书,可以做到这一点。为了使 WCF能够做出此判断,必须将证书颁发机构证书链安装在正确的证书存储区中。
因为 Windows附带一组默认的用于受信任证书颁发机构的证书链,所以可能不必为所有证书颁发机构安装证书链。
阅读全文

摘要:
当证书验证模式设置为“PeerTrust”时,服务端或者客户端会验证证书是否存在于TrustedPeople 证书存储区中。
修改配置文件采用“PeerTrust”验证模式如以下代码。
在服务端设置对客户端的验证模式设置为“PeerTrust”:
阅读全文

摘要:
需要说明的是,和服务器端证书配置在节中,而客户端配置在endpointBehaviors中。在代码清单11-19的服务端配置和代码清单11-23的客户端配置中,都将certificateValidationMode属性设置为“None”。protectionLevel设置为"EncryptAndSign",由于证书验证采用的是SSL加密,仅支持EncryptAndSign的保护级别。
此时启动服务端进行监听,然后启动客户端,得到如图11-11所示的异常信息。
阅读全文

摘要:
serviceCredentials下的clientCertificate配置,可以定义一个用于在双工通信模式中对从服务发送到客户端的消息进行签名和加密的X.509证书。如果服务必须事先拥有客户端的证书才能与该客户端进行安全通信,则需要使用此元素。使用双工通信模式时,会出现这种情况。在更为典型的请求/响应模式中,客户端会将其证书包含在请求中,服务将使用该证书对发送回客户端的响应进行加密和签名。但是,在双工通信模式中,服务没有来自客户端的请求,因此服务需要事先具有客户端的证书,以确保发送到客户端消息的安全。因此,必须通过带外协商来获取客户端的证书,并使用此元素指定该证书。在此元素中设置的证书用于仅针对配置有MutualCertificateDuplex消息安全身份验证模式的绑定加密发送到客户端的消息。
阅读全文

摘要:
书接上文,是哪一项配置使得WCF对传输的消息进行加密操作了呢?继续修改配置文件,客户端配置文件如代码清单1117所示,服务端配置文件如代码清单11-18所示。
代码清单11-18 修改客户端的protectionLevel
/en
阅读全文

摘要:
ServiceSecurityContext对象用于表示安全调用上下文。安全调用上下文保存在TLS中,沿着服务的调用链向下,每个对象的每个方法都可以访问当前的安全调用上下文。获得上下文的方法很简单,只需要访问ServiceSecurityContext对像的Current属性。这里需要注意ServiceSecurityContext对象的两个属性:PrimaryIdentity属性和WindowsIdentity属性。PrimaryIdentity属性包含了调用链最终客户端的身份,如果客户端未通过验证,该属性会被置一个空白身份,如果是Windows身份验证,那么会被赋予一个WindowsIdentity实例。WindowsIdentity属性只有在采用Windows身份验证时有效。
阅读全文

摘要:
默认情况下,NetTcpBinding会生成一个运行时通信堆栈,该堆栈使用传输安全。
NetTcpBinding类共有四个构造函数,分别如下:
q NetTcpBinding()。初始化NetTcpBinding类的新实例。
q NetTcpBinding(SecurityMode)。用所使用的指定安全类型初始化NetTcpBinding类的新实例。
q NetTcpBinding(String)。使用指定配置名称初始化NetTcpBinding类的新实例。
q NetTcpBinding(SecurityMode, Boolean)。用所使用的指定安全类型和一个指示是否显式启用安全会话的值来初始化NetTcpBinding类的新实例。
NetTcpBinding类有一个类型为NetTcpSecurity的属性,名为Security。NetTcpSecuri
阅读全文

摘要:
WCF角色服务能够从可以发送和使用SOAP消息的任何应用程序访问某个用户的角色。这可以包括不使用.NET Framework的应用程序。因此,这些不同应用程序的用户可以在每个应用程序中具有相同的角色。通常情况下,可以检查用户的角色来确定用户具有执行哪些操作的权限。
阅读全文

摘要:
Windows Communication Foundation (WCF) 身份验证服务使你能够使用ASP.NET成员资格,从可以发送和使用SOAP消息的任何应用程序中对用户进行身份验证。这可以包括不使用.NET Framework的应用程序。因此,这些不同的应用程序的用户不需要对每个应用程序使用单独的凭据。用户在使用任意客户端应用程序时,均可通过提供相同的凭据登录到应用程序中。本节就使用WCF身份验证服务的几个关键点做实践性分析。
阅读全文

摘要:
通过前文共同体验了强名称对程序集的保护方式和原理,但是这种保护的强度到底有多大呢?能有效地防御恶意篡改者吗?先看下面的例子。
回到上篇文章的代码清单9-7,重新对StrongNameReferenceLib项目进行强名称签名,然后编译StrongName项目。在StrongName项目的bin目录里有StrongNam.exe和StrongNameReferenceLib.dll两个文件,然后使用ILDasm打开StrongNameReferenceLib.dll文件,转储为il文件,这里使用记事本打开il文件,如图9-19所示。
阅读全文
