编辑:我知道你永远不应该相信客户端...我的问题是我可以用什么来验证,因为目前我期望三个参数,其中两个依赖于客户端侧面表格(注册电子邮件和电子邮件消息)
我可能会以错误的方式处理这个问题,但看起来 Ajax 不是很安全(嗯,呃..它是客户端..)你会如何创建一个函数,以便它不能通过控制台调用被入侵者入侵?
假设我有一个名为 SendMail 的函数,它接受 to、message 和 from 参数,并在其中向后面的代码发送 ajax 请求以发送电子邮件。
我可以添加什么来阻止您打开控制台、重新创建我的函数(除了文字变量)并通过控制台执行它?
背后代码:
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)>
Public Shared Sub sendMail(subject As String, userEmail As String(), message As String)
Dim fromEmail As String = "supah@domain.com"
Dim fromAbrv As String = "hidden Tiger"
Try
Dim mail As New MailMessage()
Dim smtp As New SmtpClient("server.domain")
mail.From = New MailAddress(fromEmail, fromAbrv)
For i As Integer = 0 To userEmail.Length - 1
mail.[To].Add(userEmail(i))
Next
mail.Subject = subject
mail.Body = message
mail.IsBodyHtml = True
smtp.Send(mail)
Catch exc As Exception
Throw exc
End Try
End Sub
最佳答案
您不能相信您的客户端代码会阻止客户端执行任何操作。永远不要相信客户。将每个请求都视为被篡改和恶意的。
即使您设法“保护”该功能,攻击者也可以伪造整个请求。
在服务器端验证您的参数。
关于javascript - Ajax 安全性和代码隐藏功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22820437/