Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ajax在asp.net中的应用_C#_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

C# ajax在asp.net中的应用

C# ajax在asp.net中的应用,c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我对使用哪种方法有点困惑: 1-使用Jquery调用实现订单的HttpHandler页面。 2-使用ICALLBACKEventHandler-。 你能告诉我哪一个更有效吗。 谢谢基础阅读 我建议您通过以下链接帮助您更好地了解选项并选择您想要的: 我的选择 我更喜欢使用jQuery.ajax(),必要时也可以使用(从ajax调用加载表格数据)。一种轻量级的方法,对开发人员有更多的控制。我不喜欢微软喜欢在我们使用他们的处理程序时生成愚蠢的代码 安全漏洞 但没关系,正如你在评论中指出的,你

我对使用哪种方法有点困惑:
1-使用Jquery调用实现订单的HttpHandler页面。
2-使用ICALLBACKEventHandler-。
你能告诉我哪一个更有效吗。
谢谢

基础阅读 我建议您通过以下链接帮助您更好地了解选项并选择您想要的:

我的选择 我更喜欢使用
jQuery.ajax()
,必要时也可以使用(从ajax调用加载表格数据)。一种轻量级的方法,对开发人员有更多的控制。我不喜欢微软喜欢在我们使用他们的处理程序时生成愚蠢的代码

安全漏洞 但没关系,正如你在评论中指出的,你可能会有一些安全问题

您关于
Referer
易操作性的说明很有趣,但此漏洞并非jQuery独有的。问题是AJAX本身的概念已经有了,这是多年来讨论的已知问题

需要注意的是,使用
ICallbackEventHandler
并不是一个解决方案,因为它只是生成AJAX请求的另一种方法,而无需键入请求。但是,如果异步请求存在,它总是可以以某种方式被拦截,比如
$。ajax()
可以是

最后,您已经给出了一个“几乎”的答案:最好将安全令牌作为参数传递。如果使用
母版页
,则
隐藏字段
中的令牌生成将抽象为单个代码。您可以使用JavaScript函数进行封装,该函数负责使用此令牌作为参数进行AJAX调用。一切都只是软件架构的问题

我称之为“几乎”的回答,因为没有什么是完全安全和可靠的。是的,这要难得多,但99%永远不是100%

恢复
使用
ICallbackEventHandler
的第二个选项与使用
$.ajax()
的第一个选项一样,可能存在许多安全问题,因为处理程序将生成一些与您要键入的任何代码类似的代码。最后,你的选择必须是品味的问题。但请记住阅读并采取这两种情况下有关安全性的必要方法。

+1一条史诗般的评论:“我不喜欢Microsoft在使用其处理程序时生成愚蠢的代码”。@ErickPetru-不错,但当我使用.ajax()添加注释时,例如,我应该调用一个页面,例如aaaa.ashx,这种方法可能会导致一些安全问题,因为每个人都可以发送此页面的请求,除非我使用带有会话参数的令牌,我确实不喜欢这样做。我认为在某些方法上存在安全问题,您确实无法接受直接请求(即用户身份验证)。但是您也可以检测
HttpRequest.Referer
来检测您的域是否是请求方。@ErickPetru-HttpRequest.Referer很容易伪造,用户身份验证不是一个解决方案,因为攻击者可能是用户本人。@Israa,感谢关于安全性的有趣讨论。我读了更多的东西来完成我关于这几点的回答。我希望它能帮助你更多地思考这两种方法。