加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

通过经过身份验证的Webforms保护ASP.net中的Ajax请求

发布时间:2020-12-16 03:25:44 所属栏目:asp.Net 来源:网络整理
导读:我已经读过了 Securing AJAX Requests via GUID 和 Securing an ajax request .现在让我解释一下我的场景,下面是可能有助于解释主题的代码片段. [WebMethod[EnableSession = True][ScriptMethod] public static string CreateTitle(string strTitleName) { s
我已经读过了
Securing AJAX Requests via GUID

Securing an ajax request
.现在让我解释一下我的场景,下面是可能有助于解释主题的代码片段.

[WebMethod[EnableSession = True]
[ScriptMethod]

    public static string CreateTitle(string strTitleName)
    {
    string strResult = "Custom jSon string";
    if(Session["Authorized"] == "True" && !String.IsNullOrEmpty(strTitleName))
    {
         String strTitle = Server.HtmlEncode(strTitleName);
         InsertRecordInDB(strTitle);
         strResult = "Custom jSOn string" + EncryptMD5("record id");
    }
           return strResult;
    }

以下是在参数中发送的javascript调用. btnCreateTitle_click是按钮客户端的click事件. txtTitle是接受标题名称的文本框.在页面上创建验证器以验证文本框.CreateTitle是我使用scriptmanager调用的页面方法

function btnCreateTitle_Click(evnt){
if(Page.ClientValidate()){
if($get("txtTitle")){
PageMethods.CreateTitle($get("txtTitle").value,success,failure,context);
}}}

函数成功显示创建标题的growl消息,并显示带有加密记录id的链接作为查询字符串到url以查看创建的标题的详细信息.

现在燃烧的问题,

>这足够安全吗?我错过了什么?
>我怎样才能让这个过程更安全,更快捷?

解决方法

虽然将任何方法限制为经过身份验证和授权的用户是微不足道的,但是当您在查询字符串中公开db id时,您确实打开了经过身份验证和授权的用户可能会寻求访问他们不能访问的记录的可能性.当db id是整数或其他一些容易猜到的标识符时尤其如此.使用Guids作为db ID可以降低风险,尽管不是绝对的.

你总是需要记住的是不要信任输入.通过默默无闻的安全性(即加密等)不是一种可靠的技术.您的服务应始终验证当前用户是否可以检索他们请求的记录.有时这称为行级安全性.这只能通过编程方式完成.

例如,您需要验证他们是否有权访问他们请求的记录,而不是仅确定某人有权查看记录.

这意味着您需要某种方式将记录与经过身份验证的用户相关联.

BTW:任何HTTP请求都会针对潜在的危险输入进行验证.

希望这可以帮助,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读