Ajax 安全性和代码隐藏函数
Ajax Security and code-behind functions
编辑:我知道你永远不应该相信客户端...我的问题是我可以使用什么来验证,因为目前我期待三个参数,其中两个依赖于客户端表单(注册电子邮件和电子邮件)
我可能以错误的方式做到这一点,但似乎 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
你不能相信你的客户端代码来阻止客户端做任何事情。永远不要信任客户。将每个请求视为篡改和恶意请求。
即使您设法"保护"该功能,攻击者也可以伪造整个请求。
验证服务器端的参数。
防止这种情况的方式构建您的注册过程。
首先,将注册表提交到服务器时,检查具有该电子邮件地址的现有用户。如果存在,则返回错误消息。
如果用户不存在,请为该用户创建新记录并将其标记为未激活。接下来,向用户发送一封注册电子邮件,其中包含一个 URL,单击该 URL 时,将激活该帐户。请勿在此电子邮件中包含原始表格中的任何信息!
以这种方式设置后,任何恶意用户最多可以向某人发送一封激活电子邮件。
就重置密码表单而言,应该无法使用它向现有用户以外的用户发送电子邮件,因为您应该检查数据库中的电子邮件地址,然后使用数据库中的电子邮件地址而不是表单中的电子邮件地址。此外,切勿在电子邮件中发送密码,而应在电子邮件中发送链接,将用户发送到他们可以输入新密码的页面。
- 从var向代码隐藏函数传递值
- javascript函数和代码隐藏函数的执行顺序
- 使用Javascript的多显示隐藏函数
- jQuery隐藏函数与“;按钮“;以及“;span”;但不是用“;a“;要素
- jQuery隐藏函数出现问题
- 带有隐藏函数的AngularJS自定义指令
- Jquery隐藏函数不起作用
- 如何在document.ready(function)时运行隐藏函数和动画
- 使用 JavaScript 访问隐藏函数
- 从 javascript 执行代码隐藏函数/子 (VB.NET)
- 使用 Jquery 显示和隐藏函数
- 使用 ajax 调用代码隐藏函数
- JavaScript 显示隐藏函数布局问题火狐浏览器
- 如何使用源映射从转译的代码中隐藏函数调用
- 如何使用 js 显示/隐藏函数内的标记
- 隐藏函数 other 中的复选框,并禁用所有元素以禁用复选框
- 从 JavaScript 调用代码隐藏函数,该函数可能会返回另一个 JavaScript 函数
- 如何使用java脚本函数中的参数调用代码隐藏函数
- 如何从asp.net代码隐藏函数中调用javascript函数
- 带有隐藏函数的JavaScript扩展类