我已经编写了一些JavaScript,以便在asp.net应用程序中执行ajax调用。这会触发一个方法,该方法调用URL,并在POST中发送一些参数。
接收页面处理数据并更新我们的数据库。
我们将向客户提供此代码,以使他们能够在我们的结帐流程中为每笔交易向我们发送所需的数据。
谁能告诉我是否有办法防止对该URL的未经授权的访问?否则,不道德的开发人员可能会使用该URL将数据添加到我们的数据库中。
感谢您的指导。
这里的问题是,我将向我们的客户提供代码,他们会将其添加到他们的网站中。因此,除了将几行代码添加到他们的网站之外,我没有其他选择。
但是,代码需要以某种方式安全地将数据发送到我们的服务器?
这是不可能的情况,还是在处理发生后我需要执行某种审核?
谢谢大家的一些好的建议。
您可以使用SOAP在请求中传递用户名/密码。SSL应该用于加密通过网络传输的数据。这是我们使用的一些代码:
此类将保存与请求一起发送的凭据:
Imports System.Web.Services.Protocols Public Class ServiceCredentials Inherits SoapHeader Private _userName As String Public Property UserName() As String Get Return _userName End Get Set(ByVal value As String) _userName = value End Set End Property Private _password As String Public Property Password() As String Get Return _password End Get Set(ByVal value As String) _password = value End Set End Property Public Sub New() End Sub Public Sub NewUserInfo(ByVal ServiceUser As String, ByVal ServicePassword As String) Me.UserName = ServiceUser Me.Password = ServicePassword End Sub
在您的Web服务的定义中添加一个属性:
<WebMethod()> _ <SoapHeader("CredentialsHeader")> _ Function MyWebMethod(ByVal paremetersPassed as String) 'check permissions here If PermissionsValid(CredentialsHeader) then 'ok! ....... else 'throw a permission error end if End Function
然后从那里创建一个函数(在我的示例中为PermissionsValid)来检查权限:
Function PermissionsValid(byval Credentials as ServiceCredentials) as boolean 'check Credentials.Username and Credentials.Password here and return a boolean End Function
这似乎是一堆工作,但是通过这种方式,当他们发送请求时,您可以针对数据库或其他任何想要的内容进行检查。您也可以在最后轻松关闭用户名。
一种更简单的方法是限制允许访问服务页面的IP地址。但是,然后您会遇到IP地址更改等问题。
顺便说一句,其中的大部分内容都是我在帖子中输入的,因此您可能需要检查代码以确保其可编译。:)