当前位置: 代码迷 >> Web Service >> 怎么防止webservice被非法调用
  详细解决方案

怎么防止webservice被非法调用

热度:520   发布时间:2011-12-30 23:30:45.0
如何防止webservice被非法调用
如何防止webservice被非法调用,一般采取哪些方法

------解决方案--------------------

有个令牌技术

为了使.asmx句柄有可能反串行化SOAP头,首先你需要定义一个.NET类,它代表了暗含的XML Schema类。在此例中相应的类如下:

[XMLType(Namespace="http://example.org/security")]

[XMLRoot(Namespace="http://example.org/security")]

public class UsernameToken : SoapHeader {

public string username;

public string password;

}

然后你需要在WebMethod类中定义一个成员变量来控制一个头类的实例,同样要为WebMethods标记[SoapHeader]属性。见如下:

using System;

using System.Web.Services;

using System.Web.Services.Protocols;

 

 [WebService(Namespace="urn:geometry")]

public class Geometry {

 

public UsernameToken Token;

 

[WebMethod]

[SoapHeader("Token")]

public double Distance(Point orig, Point dest) {

if (!Token.username.Equals(Reverse(Token.password)))

throw new Exception("access denied");

 

return Math.Sqrt(Math.Pow(orig.x-dest.x, 2) +

Math.Pow(orig.y-dest.y, 2));

}

}


大概就是这样子,你上网搜搜!
------解决方案--------------------
确实可以用session。
一般用WSE进行安全加密,这样你的请求就不是明文的了
------解决方案--------------------
方法和1楼说的差不多,就是在调用的时候验证下是不是有效的合法的调用
  相关解决方案