首页 > Web开发 > 详细

Newtonsoft.Json.Linq.JObject 遍历验证每个属性内容

时间:2019-08-14 15:55:22      阅读:657      评论:0      收藏:0      [点我收藏+]

业务需求,拦截器验证每个请求inputstream(实际是application/json流)的数据,但是json反序列化实体格式不同。

/// <summary>
        /// 递归验证以application/json方式post上来的stream格式数据
        /// </summary>
        /// <param name="jo"></param>
        /// <returns></returns>
        protected string ChkJson(JProperty jo)
        {
            if (jo.HasValues && jo.Count > 1)
            {
                foreach (JProperty item in jo)
                {
                    return ChkJson(item);
                }
            }
            else
            {
                string msg = "";
                string val = jo.Value.ToString();
                if (IsContainXSSCharacter(val , out msg)){
                    return msg;
                }
            }

            return "";
        }
using (System.IO.StreamReader sr = new System.IO.StreamReader(inputStream))
                {
                    try
                    {
                        Newtonsoft.Json.Linq.JObject jo = Newtonsoft.Json.Linq.JObject.Parse(sr.ReadToEnd());
                        if (jo.HasValues)
                            foreach (JProperty item in jo.Properties())
                            {
                                var tmpMsg = ChkJson(item);
                                if (!string.IsNullOrEmpty(tmpMsg))
                                {
                                    Content.Content = tmpMsg;
                                    filterContext.Result = Content;
                                    filterContext.HttpContext.Response.StatusCode = 801;
                                    filterContext.HttpContext.Response.StatusDescription = "sensitive information";
                                    return;
                                }
                            }
                    }
                    catch (System.Exception err)
                    {
                        // 有时候前端提交的application/json 并不是一段正常的json,不再处理xss注入
                    }
                }

 

Newtonsoft.Json.Linq.JObject 遍历验证每个属性内容

原文:https://www.cnblogs.com/jonney-wang/p/11352373.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!