小编典典

保护远程ajax方法调用

ajax

我已经编写了一些JavaScript,以便在asp.net应用程序中执行ajax调用。这会触发一个方法,该方法调用URL,并在POST中发送一些参数。

接收页面处理数据并更新我们的数据库。

我们将向客户提供此代码,以使他们能够在我们的结帐流程中为每笔交易向我们发送所需的数据。

谁能告诉我是否有办法防止对该URL的未经授权的访问?否则,不道德的开发人员可能会使用该URL将数据添加到我们的数据库中。

感谢您的指导。


这里的问题是,我将向我们的客户提供代码,他们会将其添加到他们的网站中。因此,除了将几行代码添加到他们的网站之外,我没有其他选择。

但是,代码需要以某种方式安全地将数据发送到我们的服务器?

这是不可能的情况,还是在处理发生后我需要执行某种审核?

谢谢大家的一些好的建议。


阅读 173

收藏
2020-07-26

共1个答案

小编典典

您可以使用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地址更改等问题。

顺便说一句,其中的大部分内容都是我在帖子中输入的,因此您可能需要检查代码以确保其可编译。:)

2020-07-26