我编写了一些 JavaScript 代码来在 asp.net 应用程序中执行 ajax 调用。这会触发一个调用 URL 的方法,并在 POST 中发送一些参数。
接收页面处理数据并更新我们的数据库。
我们将向客户提供此代码,以便他们向我们发送每笔交易的结帐流程中所需的数据。
谁能告诉我是否有办法防止未经授权的访问此网址?否则,不道德的开发人员可能会使用此 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 地址更改等问题。
顺便说一句,其中大部分内容是在我发布帖子时输入的,因此您可能需要检查代码以确保它可以编译。 :)
关于javascript - 确保远程 ajax 方法调用的安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/503469/