Javascript 客户端显示,隐藏是有风险的

Javascript 客户端显示,隐藏是有风险的,javascript,asp.net,Javascript,Asp.net,我有一个包含按钮的div,我最初设置divdisplay:none&这取决于我使用javascript向用户显示它的用户权限 <div id="mydiv" style="display:none"> <asp:Button id="btn" runat="server"/> </div> PageMethods.GetRights(onsuccess); function onsuccess(result){ if(result.isacc

我有一个包含按钮的div,我最初设置divdisplay:none&这取决于我使用javascript向用户显示它的用户权限

<div id="mydiv" style="display:none">
    <asp:Button id="btn" runat="server"/>
</div>

PageMethods.GetRights(onsuccess);

function onsuccess(result){
   if(result.isaccessible)
   {
      $("#mydiv").show();
   }
}

PageMethods.GetRights(onsuccess);
函数onsuccess(结果){
如果(result.isaccessible)
{
$(“#mydiv”).show();
}
}

正在展示,躲在客户面前有风险。如果有风险,我不想使用updatepanel。我有什么替代方案?

当用户单击butotn并将请求发布到您的服务器时,您需要重新检查用户是否有权访问此功能

处理这个问题的一个更简单的方法是向主体添加一个类

< body class="logged_in" >

这完全取决于我们的应用程序结构。如果隐藏div中的数据是机密的,则决不能将其显示设置为“无”,因为客户端可以完全访问所有客户端数据。但是,当谈到调用后端行为的按钮时,您还应该对所有请求进行后端验证。

如果任何人使用html检查器将显示更改为“block”,都可以查看此div。 如果您希望这些信息保持隐私,我建议您采用另一种方式

第一种也是最好的方法是跳过JavaScript,使用服务器检查用户权限并显示div

第二种方法是进行Ajax调用。如果您希望使用JavaScript,那么我建议使用ajax调用服务器以获取所需信息。让服务器检查用户权限,并在成功时返回div。然后用服务器返回的html替换div的html。类似的方法可能会奏效:

var getHiddenDiv = function(){
   $.ajax({
      url: yourUrl,
      type: GET,
      success: function(data){
         $("#mydiv").html(data);
      }
   });
};

如果用户没有权限,只需不呈现按钮,他可能正在使用此技术实现服务器端缓存。。例如,如果你有一个论坛,mods有额外的按钮来删除帖子。您可能只向他们显示这些Butotn,但不管是谁要求它优化缓存,您都希望呈现相同的分页html块。我没有将此作为答案发布,因为它看起来太明显了(我肯定遗漏了什么),但是:当您生成页面时,您不能只在服务器端执行吗?因此,除非您已经知道他们具有正确的访问级别,否则按钮永远不会出现在客户端?
var getHiddenDiv = function(){
   $.ajax({
      url: yourUrl,
      type: GET,
      success: function(data){
         $("#mydiv").html(data);
      }
   });
};