首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >仅使用javascript验证表单并阻止用户提交禁用JS的表单?

仅使用javascript验证表单并阻止用户提交禁用JS的表单?
EN

Stack Overflow用户
提问于 2012-07-02 14:13:40
回答 4查看 470关注 0票数 2

我正在尝试为我的网站创建一个有效的注册表,目前正在编码它的一个演示实践。我可以使用javascript验证表单。但是,我在某处读到表单应该在客户端和服务器端都进行验证,因为JS可以被禁用。我想知道,如果所有的javascript验证都不满意(我注意到eBay在他们的注册表中使用了类似的方法),是否有一种方法可以简单地禁用提交按钮,如果是这样的话,我该如何实现呢?

这就是我到目前为止所处的位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script type="text/javascript">
function validateEmail(email) { 

    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

    if(re.test(email)) {
        document.getElementById('result').innerHTML = '<img src="http://iconlet.com/icons/kensaunders/4/CheckMark.png" style="width:15px;"/> Valid';
    } else {
        document.getElementById('result').innerHTML = '<img src="http://biglistbigsales.com/m/templates/GPT/images/x_xMarkRed4.png" style="width:15px;"/> Invalid';
    }
} 
function validatePass(pass){
    if(pass.length < 6){
        document.getElementById('pass-result').innerHTML='<img src="http://biglistbigsales.com/m/templates/GPT/images/x_xMarkRed4.png" style="width:15px;"/>Your password must be at least 6 characters';
    }else{
        document.getElementById('pass-result').innerHTML='<img src="http://iconlet.com/icons/kensaunders/4/CheckMark.png" style="width:15px;"/>valid';
    }
}
function validateCPass(cpass){
    var pass = document.getElementById('pass').value;

    if(cpass != pass){
        document.getElementById('cpass-result').innerHTML="Passwords must match";
    }else{
        document.getElementById('cpass-result').innerHTML='<img src="http://iconlet.com/icons/kensaunders/4/CheckMark.png" style="width:15px;"/>';
    }   
}
</script>
</head>
<body>
    <form action="practice.php" method="post">
        e-mail:<br/><input id="email" type="text" onblur="validateEmail(this.value)" /><span id="result"></span>
        <br/><br/>Password:<br/><input type="password" id="pass" onblur="validatePass(this.value)"><span id="pass-result"> </span>
        <br/><br/>Confirm Password:<br/><input type="password" id="confpass" onblur="validateCPass(this.value)"> <span id="cpass-result"></span>
        <br/><input type="submit">
    </form>
</body>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-02 14:18:23

不,这是不可能的,原因有很多:

你的客户的浏览器可能不支持Javascript,或者用户可能已经禁用了它(是的,有些人do).

  • Security.一个web应用程序向整个互联网公开了一个
  • Accessibility.接口。你甚至不需要有一个浏览器来发送HTTP请求!因此,您的后端需要将任何HTTP请求视为不受信任的,并对其进行验证。对于来自不可靠来源的所有数据都是如此。

因此:

对于任何正确的web应用程序,服务器端验证都是必不可少的。

客户端验证是一种UI增强,它的存在是为了通过提供更快的反馈来改善用户体验。

票数 7
EN

Stack Overflow用户

发布于 2012-07-02 14:19:04

您可以在默认情况下禁用该按钮,然后让JavaScript重新启用它。然而,这并不能阻止用户自己重新启用它,可能使用跨站点脚本注入,或者更实际地使用FireBug或浏览器默认内置的开发人员工具之一。

我强烈建议同时使用客户端和服务器端验证,这既是为了用户体验,也是为了系统的完整性和安全性。如果你根本没有时间同时做这两件事,那么服务器端肯定是优先的。验证的客户端是一个很好的东西,旨在使它对用户更好;不幸的是,当涉及到破坏代码时,用户可能不会对您的代码有同样的感觉。

总是有服务器端的验证。:)

票数 2
EN

Stack Overflow用户

发布于 2012-07-02 14:19:25

在服务器中检查的原因也是恶意用户可以手动向您的服务器发送手工创建的POST或GET请求,而不管这些表单是否存在于您的应用程序中或在您的浏览器中被禁用。仅禁用表单不足以解决此问题。

但是,如果您仍然希望在非JS浏览器中禁用这些表单,那么您可以默认禁用它们,然后在JS上启用它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11295446

复制
相关文章
Facebook 爬虫
title: Facebook 爬虫 tags: [python3, facebook, scrapy, splash, 爬虫] date: 2018-06-02 09:42:06 categories: python keywords: python3, facebook, scrapy, splash, 爬虫 --- 初次接触到scrapy是公司要求编写一个能够解析JavaScript的爬虫爬取链接的时候听过过,当时我当时觉得它并不适合这个项目所以放弃这个方案,时隔一年多公司有了爬取Facebook用户信息的需求,这样才让我正式接触并使用到scrapy
Masimaro
2018/08/31
3.7K1
Facebook OAuth漏洞导致的Facebook账户劫持
平时在用“Login with Facebook”功能进行跳转登录时,因为其用到了多个URL重定向跳转,所以总会给我有一种不安全的感觉。但是,要想发现Facebook漏洞,并非易事,需要莫大的功夫和精力,更别说涉及登录的Facebook OAuth了,这更是难上加难。然而,我就发现了Facebook OAuth这么一个漏洞,获得了Facebook官方$55,000的奖励。
FB客服
2020/05/14
2.2K0
Facebook OAuth漏洞导致的Facebook账户劫持
iOS Facebook和Google登录
      最近在对接完Google和Facebook登录之后准备对这部分内容做一个小小的总结,方便以后有需要的时候查看。
Mr.RisingSun
2022/12/07
1.4K0
iOS Facebook和Google登录
江湖再无Facebook
元宇宙是一味药,并且Facebook决定要服下它,一切都将从Facebook改名Meta开始。
孟永辉
2021/12/06
3320
江湖再无Facebook
android 调试工具之facebook stetho介绍
概述 Stetho 是 Facebook 开源的一个 Android 调试工具。是一个 Chrome Developer Tools 的扩展,可用来检测应用的网络、数据库、WebKit 、ShareP
xiangzhihong
2018/02/06
1.2K0
android 调试工具之facebook stetho介绍
facebook营销工具
Facebook一直以来都是我们做外贸的一个主要流量来源,很多人不知道的是,我们在平时也可以借助第三工具来帮助我们进行营销。下面一米软件为大家整理的几款常用facebook营销工具,希望能对大家有所帮助。
用户3736847
2018/10/30
1.5K0
facebook营销工具
Facebook Connect 试用
Facebook 在去年底将 Facebook Connect 服务向大众开放,允许用户从外部网站访问 Facebook 数据,如用户在 Facebook 的身份、好友列表及隐私设定等,这使得普通网站也可以具有社交功能。我下载了 Facebook Connect 的 WordPress 插件试用后,认为 Facebook Connect 的社交功能远远超过了 Google Friend Connect。
Denis
2023/04/14
9340
Facebook Connect 试用
Facebook的启示
对于Facebook改名Meta,其实是有很多非议的。很多人认为,Facebook的改名仅仅只是扎克伯格为了挽救股市的低迷,迎合资本的喜好。尽管这种说法有些道理,但是,如果仅仅只是将Facebook的改名归结于此,未免有些太过简单武断了。
孟永辉
2021/12/20
4060
Facebook的启示
Facebook 推荐算法
版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 https://blog.csdn.net/jxq0816/article/details/81635996
week
2018/08/24
1.3K0
Facebook 推荐算法
使用 Flutter 构建 Facebook Clone UI
该项目将需要许多文件,一个用于应用程序,3 个用于某些自定义小部件,因此请确保为每个组件创建一个文件
徐建国
2021/08/02
5220
Facebook的图片存储
为了减少对昂贵的存储解决方案(诸如NetApp和Akamai,我所在的单位用了一套NetApp,性能和稳定性都不错,价格当然也不菲),Facebook在2009年4月的时候推出了一套新的,名为Haystack的图片存储系统,来一个对每个月85亿次的图片上传(每天500G)。
大江小浪
2018/07/25
2K0
Facebook的图片存储
facebook分享(含图片)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
2K0
facebook如何编码视频
原作者:Taein Kim, Ploy Temiyasathit, Haixiong Wang
用户1324186
2021/04/14
7850
社交巨人Facebook使用Linux和Btrfs的姿势
在Reddit上有人表示把42TB的普通存储(没有组RAID或者其他)全部采用Btrfs技术,通过把ext4文件系统迁移到Btrfs至少节省了5TB的存储空间。尽管已经开发了相当长时间,但是鲜有发行版把Btrfs当作默认的文件系统,目前SUSE企业版把Btrfs作为系统默认的文件系统。Linux.com日前采访了Btrfs的主要贡献者Chris Mason,通过他的讲述透露了社交巨头Facebook使用Linux内核与Btrfs文件系统的大量细节。
Debian中国
2018/12/20
7690
facebook|Twitter|linkedin分享
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
1.3K0
Facebook账户接管漏洞
我下载了一堆不同版本的FB和Messenger APK,收集了所有的端点,对它们进行了分类并进行了检查。
小生观察室
2021/09/13
1.3K0
Facebook账户接管漏洞
腾讯和Facebook哪个才是社交之王?
人是社会性的动物,因此人类天生渴望社交。而像腾讯和Facebook这样的公司,正在是借助社交产品成为全球的互联网巨头。而且,从全球市值的排行来看,腾讯和Facebook也都稳定进入了前十的榜单。由于这两家公司的业务模式很像,因此经常被拿出来对比。众所周知,腾讯主要在中国以及华人较多的国家开展业务,通常大家觉得Facebook才是全球社交领域的老大。真的是这样的吗?下面简单为大家分析:
蜻蜓队长
2018/09/29
1.2K0
Facebook的RocksDB简介
RocksDB是FaceBook起初作为实验性质开发的一个高效数据库软件,旨在充分实现快存上存储数据的服务能力。RocksDB是一个c++库,可以用来存储keys和values,且keys和values可以是任意的字节流,支持原子的读和写。除此外,RocksDB深度支持各种配置,可以在不同的生产环境(纯内存、Flash、hard disks or HDFS)中调优,支持不同的数据压缩算法、和生产环境debug的完善工具。 RocksDB的主要设计点是在快存和高服务压力下性能表现优越,所以该db需要充分挖掘Flash和RAM的读写速率。RocksDB需要支持高效的point lookup和range scan操作,需要支持配置各种参数在高压力的随机读、随机写或者二者流量都很大时性能调优。
用户1205080
2018/12/19
2.4K0
Facebook 数字货币:缘起、意义和后果
6 月 18日,Facebook 位于瑞士的子公司 Libra Network (天秤座网络)将发布其加密数字货币项目白皮书。此前 BBC 报道说这个数字货币叫做 GlobalCoin,翻译过来就是“全球币”。不过后来又传来消息说,GlobalCoin 只是其员工在内部的昵称而已,该数字货币正式的名称还是 Libra(天秤座)。虽然这个名字不如 GlobalCoin 那么锋芒毕露,但天秤座本身就象征着平衡与公正,而且 Libra 音形俱似 LIBOR(伦敦银行间同业拆借利率),因此可以说这个名字仍然凸显了发起者的雄心壮志,和一点点叛逆精神。
区块链大本营
2019/06/20
8280
Facebook 数字货币:缘起、意义和后果
点击加载更多

相似问题

Facebook调试器返回404,但curl工作

35

PHP Curl Facebook Insights报告URL

10

不使用Facebook调试器

12

使用cURL和PHP登录Facebook

11

Php curl Facebook

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文