0

我目前正在为使用 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 安全运行这些操作的最佳方法是什么?

4

1 回答 1

0

有两种选择:

  1. 您可以像此代码项目文章一样加密您的 ajax 请求,也可以对网站使用 SSL。

  2. 实现您的服务器代码IHttpAsyncHandler并实现IRequiresSessionState,以便您可以访问会话。

http://msdn.microsoft.com/en-us/magazine/cc164128.aspx

是否可以运行异步调用以在 ASP.NET 中设置会话?

始终首选使用 ssl,但如果您有时间实施,其他选项也是可行的。

于 2013-09-16T13:13:25.880 回答