留言簿

我要留言
留言搜索

2019-05-30 09:22  小杂草

AspNetPager 分页控件使用url传递分页信息,遇到xss问题,不希望采用设置ValidateRequest="true"解决
请问如何处理url参数?控件把参数没做任何处理就直接生成html,也找不到在那步处理参数后,再传入控件生成html
<a href="newss.aspx?t=3"><script>alert(34)</script>&amp;page=2">2</a><a href="newss.aspx?t=3"><script>alert(34)</script>&amp;page=2">
回复:您好,的确有您说的问题,不过我觉得这不应该由AspNetPager来处理,AspNetPager只是忠实地把url中的参数原样传递过来,不做任何更改和处理,就象Hyperlink控件一样,应该在页面级别或全局应用程序级别来控制这个问题,不知道您为什么不用ValidateRequest="true"这样的设置?谢谢!

2019-05-29 17:37  itljf

MvcPager不支持bootstrap4.x,因为不能在数字页索引按钮上增加样式“page-item”
回复:您好,MvcPager确实没有这个,不过您可以通过修改css的方式来实现,添加如下css:.page-item a{bootstrap中.page-link的样式代码}。谢谢!

2019-05-28 17:49  额安抚S

老师您好:
如何注册jquery脚本插件?
回复:您好,用Html.RegisterMvcPagerScriptResource()方法,请参考一下示例。谢谢!

2019-05-25 22:56  小锐

你好,请问下.NetCore适用吗
回复:您好,MvcCorePager就适用于asp.net core mvc。谢谢!

2019-05-18 20:10  jack

杨老师,使用了您的:MvcPager出现如下错误,请问是因为使用的MvcPager与项目使用的MVC版本不一致吗?
注:控制器中引用的有:using Webdiyer.WebControls.Mvc;

安全透明方法“Webdiyer.WebControls.Mvc.PagerHelper.Pager(System.Web.Mvc.HtmlHelper,Webdiyer.WebControls.Mvc.IPagedList,Webdiyer.WebControls.Mvc.PagerOptions)”尝试访问安全关键类型“System.Web.Mvc .MvcHtmlString“失败。

程序集”MvcPager,Version = 1.5.0.17702,Culture = neutral,PublicKeyToken = f6872c5a09aed72c“标记为AllowPartiallyTrustedCallersAttribute并且使用2级安全透明模型。默认情况下,2级透明将导致AllowPartiallyTrustedCallers程序集中的所有方法都变成安全透明的,这可能是导致发生此异常的原因。
说明:执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以及解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.TypeAccessException:安全透明方法“Webdiyer .WebControls.Mvc.PagerHelper.Pager(System.Web.Mvc.HtmlHelper,Webdiyer.WebControls.Mvc.IPagedList,Webdiyer.WebControls.Mvc.PagerOptions)“尝试访问安全关键类型”System.Web.Mvc.MvcHtmlString“失败。

程序集“MvcPager,Version = 1.5.0.17702,Culture = neutral,PublicKeyToken = f6872c5a09aed72c”标记为AllowPartiallyTrustedCallersAttribute并且使用2级安全透明模型。默认情况下,2级透明将导致AllowPartiallyTrustedCallers程序集中的所有方法都变成安全透明的,这可能是导致发生此异常的原因。
回复:您好,这个问题应该是您使用的控件版本太老不兼容而导致的,请您升级到最新版看看是否还有这样的问题。谢谢!

2019-05-18 20:06  jack

安全透明方法“Webdiyer.WebControls.Mvc.PagerHelper.Pager(System.Web.Mvc.HtmlHelper,Webdiyer.WebControls.Mvc.IPagedList,Webdiyer.WebControls.Mvc.PagerOptions)”尝试访问安全关键类型“System.Web.Mvc .MvcHtmlString“失败。

程序集”MvcPager,Version = 1.5.0.17702,Culture = neutral,PublicKeyToken = f6872c5a09aed72c“标记为AllowPartiallyTrustedCallersAttribute并且使用2级安全透明模型。默认情况下,2级透明将导致AllowPartiallyTrustedCallers程序集中的所有方法都变成安全透明的,这可能是导致发生此异常的原因。
说明:执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以及解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.TypeAccessException:安全透明方法“Webdiyer .WebControls.Mvc.PagerHelper.Pager(System.Web.Mvc.HtmlHelper,Webdiyer.WebControls.Mvc.IPagedList,Webdiyer.WebControls.Mvc.PagerOptions)“尝试访问安全关键类型”System.Web.Mvc.MvcHtmlString“失败。

程序集“MvcPager,Version = 1.5.0.17702,Culture = neutral,PublicKeyToken = f6872c5a09aed72c”标记为AllowPartiallyTrustedCallersAttribute并且使用2级安全透明模型。默认情况下,2级透明将导致AllowPartiallyTrustedCallers程序集中的所有方法都变成安全透明的,这可能是导致发生此异常的原因。
回复:您好,您用的控件太老了,是1.5版,请升级到最新的3.0版。谢谢!

2019-05-17 23:30  梦在旅途

MvcCaptcha存在一个风险,二个BUG,风险我前面有留言说明,就是存在不停的刷新页面,会导致session增多;一个BUG是指当使用AJAX请求FORM时(比如:Ajax.BeginForm),那么当请求一次后就会因为SESSION被ValidateMvcCaptchaAttribute验证后移除了,导致再次点击刷新验证码,出现无法显示验证码的情况。第二个BUG,如果同一个页面有多个验证码,那么因为默认生成的JS代码块是一样的,特别是JS的方法(如:_reloadMvcCaptchaImage、_loadMvcCaptchaImage),那么当有多个验证码控件就会有多个相同的JS,而里面的ID却指向不同DOM ID,这样在多个验证码控件的情况下会出现意外错误。目前我已解决了,思路如下:
一个风险解决方案:由程序员指定验证码的session Key,比如我这边在MvcCaptchaOptions增加CustomSessionKey属性,比需赋值。用法如:@Html.MvcCaptcha(new MvcCaptchaOptions {CustomSessionKey= "Messages_AddMessage_Captcha",
           ValidationInputBoxId = "captchaInput", CaptchaImageContainerId = "captchaImage",FontWarp= Level.High }),这样就确保每个位置的验证码控件只会有一个session,不会因为页面的刷新而产生多个,当然对应的MvcCaptchaLoader、MvcCaptchaImageResult、ValidateMvcCaptchaAttribute 均需使用这个CustomSessionKey作为获取Image,也无需显式的去移除session.
第一个BUG:通过使用风险一的解决方案,自定义session Key,就不会存在AJAX提交session失效的情况。
第二个BUG:在MvcCaptchaHelper.MvcCaptcha中应该对涉及可能存在重复的JS方法,必需指定随机后缀(页面生成一次即可),如:string jsMethodSuffix = DateTime.Now.Ticks.ToString();  sb.Append("\" border=\"0\"/></a><a href=\"javascript:_reloadMvcCaptchaImage" + jsMethodSuffix + "()\">").Append(options.ReloadLinkText).Append("</a>");
目前我的项目中已通过修改源代码,修改解决了上述问题,你若有空也可以修复一下,当然我的方案未必最好,提出来只是希望这个控件越来越完善,另外建议统一放到GITHUB上。
***by www.zuowenjun.cn(新版网站全新改版中)
回复:您好,非常感谢您的建议,不过MvcCaptcha已经很久没更新了,因为控件本身确实存在一些问题,我的意思是网上已经有了更成熟的开源免费解决方案,所以这个控件就不需要再维护下去,放在这里只是做个参考,如果有时间更新的话应该会考虑支持asp.net core mvc或razor pages。谢谢!

2019-05-17 22:12  梦在旅途

MvcCaptcha 认为存在安全风险,因为每次打开页面就会在服务端生成Guid及对应的Session,那如果不停的刷新页面,而不去执行验证的话,就会导致Session过多,可能会把服务器的内存耗光。除非将Session的TimeOut设为非常短,但很显然又可能会引起其它问题。我认为合理的方式是:支持自定义验证码的Session KEY,如果没有明确指定KEY,则使用当前页面完整URL作为KEY这样是否更合理一些呢?
回复:您好,验证码加载时会检查并清除前一次生成的session值,所以应该不会出现把服务器内存耗光的问题,不过这个控件已经很久没更新了,网上有不少免费开源的其它Captcha控件您可以选择。谢谢!

2019-05-15 14:12  未央

ajax 局部刷新页面后,分页的data-pagecount变化。但是因为是html()直接写入的,导致mvcpager.js里面的wrapper对象,缓存的dom对象data-pagecount仍然是初始化的值。在我扩展使用gotopage的时候,会通不过验证,导致报错.
每次请求完毕之后,这个dom对象我觉得最好刷新一下,不然很多旧的值并没有及时变化,肯定会引起其他问题
回复:您好,您说的是MvcPager吗?是在什么情况下出现这样的问题?谢谢!

2019-05-15 08:45  老李

杨总,本人网站使用了你的组件,有空给你发红包,https://www.51mordern.com
回复:不客气,您的网站做的不错,加油!
;