All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
常用技巧:用PHP控制您的浏览器cache_php资料_编程技术
提高asp.net第一次打开网页时显示速度慢的方法_[Asp.Net教程]
新瓶旧酒ASP.NET,AJAX(8),-,客户端脚本编程(Sys.Net命名空间下的)_[Asp.Net教程]
Sql Server 2005 数据库维护计划_[SQL Server教程]
asp.net2.0服务器控件之HyperLink控件
数据库方面总结_mssql学习_编程技术
新标准的熟悉和入门_[Html教程]
PHP中常见的session问题_[PHP教程]
配置Apache2+PHP5+MYSQL5_[PHP教程]
php编写的ACCESS处理类_[PHP教程]
Reading number is top 10 pictures
西游四格漫画(六)
Sora aoi possession of boudoir2
The sixties of the last century, China is such a kill pig
The world first motorcycle will be auctioned for 21000 pounds
西方气质的东方美女1
a pure sister
9.3阅兵全景图7-指挥系统和后勤保障系统梯队
最2B的公司制度
这才是真正的人体艺术1
全球十大灵异酒店
Download software ranking
Sora aoi 120 minutes
Adobe Flash Player(IE) 10.0.32.18 浏览器专用的FLASH插件
Boxer Classic video1
Unix video tutorial9
JSP+Ajax Web development typical examples
美女写真3
好色的外科大夫
豪门浪荡史
Boxer's Top ten classic battle7
网络管理员第三版
delv published in(发表于) 2014/1/23 3:15:01 Edit(编辑)
构建安全的Xml,Web,Service系列(一)_[Asp.Net教程]

构建安全的Xml,Web,Service系列(一)_[Asp.Net教程]

构建安全的Xml Web Service系列(一)_[Asp.Net教程]

  Xml Web Service 从诞生那天就说自己都么都么好,还津津乐道的说internet也会因此而进入一个新纪元,可5年多来,Xml Web Service并没有像当初宣扬的那样火起来,尽管在一些领域之内,也有人牛刀小试,但从整体而言,Service还并没有得到广泛的应用,原因有很多,有一些来源于目前各大厂商都坚持自己的service标准,不能形成统一,也有对现有的稳定系统不愿进行更改的原因,但还包括web service本身的原因,最明显的应该是两个:1) 安全,2)性能。毕业设计的时候,写的是高性能web service的开发和应用,下面,我想用几篇文章来阐述一下有关xml web service安全的几个解决方案。欢迎各位大虾来砸。


  如何解决网络服务的安全问题,我主要从以下两个层面进行分析:


  1) 确保调用者的合法身份-保证来源的合法


  2) 在传输中不被非法监听和篡改。


  当然还会有其他方面的安全隐患,希望大家能多多提出,我也好能进一步总结。


  如果您想更快的掌握本文提到的技术,您以前必须了解xml web service的工作原理,并且亲自开发并部署或者使用过Xml web service,只是您并不相信您部署的xml web service是安全的。


  本节先介绍一种最为简单的确保调用者合法的解决方案-将用户名和密码附加在Soap消息头部,在服务器端进行用户名密码验证。这种方式从解决了原网络服务不能针对特定对象产生响应的问题。但因为仍以明文格式


  传输,所以不能有效地防止信息在传输过程中被偷窥,篡改或伪造。


  如果您以前已经使用了这种方法,请略过此篇文章,我下篇文章中将讲述其他方式,更加合理的解决方案,欢迎您继续关注。


  下面是实现此种解决方案的步骤,请您一步一步来


  第一步:首先您需要创建一个Xml Web Service的服务项目,创建方法如下


  打开visual studio 2005,在起始页上点击创建项目,选择visual C#中的Asp.Net web 服务应用程序,输入项目名称


  第二步:在该项目中创建一个扩展的SoapHeader对象MySoapHeader,如下



using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Services.Protocols;


namespace WebService1
{
public class MySoapHeader:SoapHeader
{
private string _userName;
private string _pwd;
/**////


/// 用户名
///

public string UserName
{
get
{
return _userName;
}
set
{
_userName = value;
}
}
/**////
/// 密码
///

public string Pwd
{
get
{
return _pwd;
}
set
{
_pwd = value;
}
}
}
}



  第三步:创建一个Xml Web Service,另添加一个要求使用SoapHeader的网络服务方法




using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;


namespace WebService1
{
/**////


/// Service1 的摘要说明
///

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
public MySoapHeader header = new MySoapHeader();
[WebMethod]
[SoapHeader("header")]
public string HelloWorld()
{
if (header == null)
{
return "您没有设置SoapHeader,不能正常访问此服务!";
}
if (header.UserName != "jillzhang" || header.Pwd != "123456")
{
return "您提供的身份验证信息有误,不能正常访问此服务!";
}
return "Hello World";
}
}
}



  第四步:创建一个调用Xml Web Service的Console应用程序,如下:




using System;
using System.Collections.Generic;
using System.Text;


namespace ConsoleApplication1
{
class Program
{

static void Main(string[] args)
{
localhost.Service1 ws = new ConsoleApplication1.localhost.Service1();
//ws.MySoapHeaderValue = new ConsoleApplication1.localhost.MySoapHeader();
//ws.MySoapHeaderValue.UserName = "jillzhang";
//ws.MySoapHeaderValue.Pwd = "123456";
Console.WriteLine(ws.HelloWorld());
}
}
}



  下面的分析,对于大家来说,应该是最重要的,很多人不清楚SoapHeader的工作原理,为什么这么怪异的写法竟能产生神奇的效果,下面我将不同情形下的Soap消息解析出来,大家仔细观察这个信息,并可以清晰地掌握了SoapHeader的工作原理了.


  首先,先看看没有设置SoapHeader的情况下,Soap消息为:




-----Soap请求 在 2007年05月22日 12时39分40秒


-----Soap响应 在 2007年05月22日 12时39分40秒
您提供的身份验证信息有误,不能正常访问此服务!



  再看看在设置了SoapHeader之后的Soap的请求和响应信息



-----Soap请求 在 2007年05月22日 12时42分20秒
jillzhang123456


-----Soap响应 在 2007年05月22日 12时42分20秒
Hello World



  点正是通过这个节点,SoapMessage将信息传递给了网络服务端,网络服务端便可以从中解析出来,并加以处理,从上面的SoapMessage中,我们也看出,用户名和密码是以明文的格式传输的,这样,SoapHeader就更像Http协议中的Cookie了,我们可以参考Cookie的使用,来扩展SoapHeader,让它变得更加安全些,但总的看来,通过直接设置SoapHeader的方法提高安全性还是有一定限制的。在安全不是特别重要的应用情形中,推荐采用此种解决方案,因为它方便快捷,灵活易用。


  下一节,我将介绍一下,如何获取SoapMessage.







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.