【问题标题】:Hide form if javascript disabled如果禁用 javascript,则隐藏表单
【发布时间】:2013-10-20 13:51:34
【问题描述】:

如果用户从浏览器或防火墙或任何其他他永远不会显示表单的地方禁用 JavaScript,我需要检查禁用 JavaScript。 我有很多搜索和解决方案,但不幸的是没有找到合适的。 - 使用带有无脚本标签的样式:删除样式可能会破坏此样式...

<noscript>
<style type="text/css">
.HideClass {
display:none;
}
</style>
</noscript>


过去的代码可以正常工作,但在无脚本标签中存在很多问题,如 here

除此之外,我也不想使用无脚本标记重定向用户...此外,我可以快速停止加载页面以破坏此元或禁用 IE 中的元标记:
&lt;meta http-equiv="refresh" content="0; URL=Frm_JavaScriptDisable.aspx" /&gt;

另一种使用 JavaScript 重定向用户的方法,但假设 99% 的用户都可以使用这种方法,而且这种方法不太好,而且会减慢网站速度...
window.location="http://www.location.com/page.aspx";

是否有任何其他想法或建议可以确保使用 JavaScript...并防止用户进入网站或查看我的表单,除非启用 JavaScript...

【问题讨论】:

  • 你不能反过来做吗?为所有人隐藏它,然后使用 Javascript 显示它。
  • 如果我想分解网站,首先很容易知道你在做什么来展示风格,然后我禁用 JS 并重新进入网站并用我自己的手放置风格。除此之外,如果有样式以外的其他方法,我会更喜欢,因为它很容易损坏。
  • 您可以使用 ajax 调用来获取并显示您的表单,该表单仅在启用 javascript 时才有效。
  • 感谢@Biker 的帮助,但不幸的是,如果用户禁用了cookie 但启用了JS,那么这个建议将无法正常工作......

标签: javascript asp.net security


【解决方案1】:

听起来您以某种方式依赖 javascript 来确保安全性(基于安全标签和您对客户端可以绕过您的方案的各种变通方法的描述)。

这不是一个好主意 - 您不能依赖客户端正确执行您的 javascript,即使它已启用。无论您为他们提供什么服务,老练的用户都可以将他们喜欢的任何 http 方法发送到您的网络服务器。他们还可以伪装成任何客户,拥有任何能力(脚本、noscript 等),您无法可靠地判断他们报告的能力是否准确。

所以,让它可用​​/有吸引力,不要担心高级用户可能会绕过你的方案 - 无论客户端发出什么请求,都要确保你的网站是安全的。

【讨论】:

  • 如果你说的是真的,那么尝试禁用 Cookie 或禁用 JavaScript 甚至两者,你将无法登录到 Hotmail hotmail.com 例如...我只需要显示我的像这样的网站……除非他启用了JS和Cookies,否则没有人可以访问某些页面……
  • 您尝试做的事情是不可能的。不要尝试使用 javascript 来确保安全。使用下面 John 建议的方法,该方法适用于不想绕过它的用户。
【解决方案2】:

使用 jQuery 类似的东西:

示例 1:

<div id='form_placeholder'></div>

<script type='text/javascript'>

var form='<form><input type="text" name="cat"/><input type="submit" value="submit" name="submit"/></form>';

$(document).ready(function(){

    $('#form_placeholder').html(form);

});

</script>

如果启用了 javascript,脚本应该显示表单。

或者干脆

示例 2:

<div id='form_placeholder' style='display:none'>
<form>
<input type="text" name="cat"/>
<input type="submit" value="submit" name="submit"/>
</form>
</div>

<script type='text/javascript'>

 $(document).ready(function(){

        $('#form_placeholder').show();

    });

</script>

【讨论】:

  • 感谢您的帮助,不幸的是,我试图避免使用任何样式,因为它很容易被任何不专业的中级用户破坏,如果他只是删除样式部分然后他就能看到所有内容。
  • 我的第一个解决方案是不使用任何样式。就像@Michael 说的那样,你不能指望 javascript 有任何安全性。它是一种客户端语言,这意味着用户可以查看和操作其内容。在这种情况下,您所能做的就是像在我的示例中看到的那样进行一些黑客攻击。如果您想阻止未注册用户的访问,请结合使用服务器端语言和会话。
  • 是的@Biker 我知道用户浏览器的安全性失败。只想为我和风格提供最大的安全感,我在谈论你在&lt;div id='form_placeholder' style='display:none'&gt; 中的角色除了我对@Michael 关于 Hotmail 中的托盘的评论之外,他们成功地实现了我的愿望......然后怎么样?
  • 我的帖子中有两个例子。第一个不使用样式。它生成 html 并将其放在所需的 div 占位符中。至于hotmail,我不确定,但我认为他们可能使用了类似的方法。
  • 关于第一部分,这很棒!但这意味着我应该把我所有的工作都放在这个脚本标签中,然后如果启用了 JS,它将显示其他内容,否则它不会显示......我对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2015-07-11
  • 1970-01-01
  • 2012-04-06
  • 2020-02-11
相关资源
最近更新 更多