我目前正在为使用 C# .NET 作为后端的网站编写消息传递系统。
该消息系统与 Facebook 的网络界面非常相似,它允许您与另一个人“聊天”,通过 AJAX 发送消息。
我创建了一个处理实际发送消息位的 Web 服务 (C#)。我正在使用 JQuery 使用以下代码激活该服务:
// generic webservice used to retrieve count from db
function SendMessageAJAX(taskID, sendeeID, sendeeType, recipientId, recipientType, content) {
$.ajax({
type: "POST",
url: "/WS/UIServices.asmx/SendMessage",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ 'content': content, 'SendeeType': sendeeType, 'SendeeId': sendeeID, 'RecipientType': recipientType, 'RecipientId': recipientId, 'taskID': taskID }),
dataType: "json",
success: function (msg) {
// refresh chat area
LoadMessages(false);
},
error: function () { alert("error"); }
});
}
如您所见,我在我的请求中同时传递了收件人/收件人信息。显然代码非常危险,因为任何人都可以修改这些值并冒充任何用户。
我在服务器端的 SESSION 变量中有当前登录用户,但代码运行异步,这意味着会话变量在运行时未定义。
通过 AJAX 安全运行这些操作的最佳方法是什么?