表单安全需前后端协同:校验action/method可信性、密码字段用type="password"+autocomplete、嵌入并验证CSRF Token、按钮防重提交+后端幂等控制。
表单提交前必须校验
和
是否可信
很多开发者以为前端校验只是“防呆”,其实它直接影响后端是否暴露在恶意请求下。如果
是拼接的 URL 或来自用户输入(比如从 URL 参数读取),攻击者可能把表单提交到任意地址;
若被篡改成
,敏感参数会直接泄露在日志和浏览器历史中。
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
硬编码
,避免动态拼接;若必须动态,用白名单校验(例如只允许
、
)
显式声明
,不要依赖默认值
服务端必须校验 HTTP 方法,拒绝非预期 method 的请求(如对登录接口只接受
)
敏感字段必须用
且禁用自动填充
不仅隐藏字符,还触发浏览器对密码字段的特殊处理(如不缓存、不参与自动填充逻辑)。但仅靠这个不够——现代浏览器会主动尝试 autofill,可能把其他网站的密码填进你的邮箱或手机号字段,造成信息错位甚至泄露。
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
密码字段始终用
,不要用
+ CSS 遮盖
添加
(注册/修改密码场景)或
(登录场景),明确告知浏览器意图
对非密码字段(如邮箱、手机号),若不希望被 autofill 填充,可设
,但注意部分浏览器已忽略该值;更可靠的是用随机
(如
)配合后端映射
CSRF Token 必须嵌入表单并由后端验证
没有 CSRF Token 的表单,等于给跨站请求大开绿灯。攻击者可以诱导用户点击恶意链接或加载伪造页面,利用用户已登录的 Cookie 自动提交表单(比如转账、删账号),而用户毫无感知。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
后端生成一次性 Token(如使用
),存入 session 并输出到表单隐藏域:
前端不得通过 JS 修改或读取该值(避免 XSS 泄露)
后端收到请求时,必须比对提交的
与 session 中存储的值,失败则立即拒绝,返回
Token 应绑定用户 session,且设置较短有效期(如 30 分钟),避免长期有效
提交按钮需防重复点击,但不能仅靠前端禁用
用户手快连点两次,可能导致重复下单、重复注册等业务问题。仅用
属性禁用按钮看似简单,但绕过太容易(比如禁用 JS 后重发请求、用 curl 模拟多次提交)。
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
前端加一层防护:点击后立即
,并改变文字(如 “提交中…”),提升用户体验
后端必须做幂等控制:对关键操作(如支付、注册),用唯一业务 ID(如订单号、邮箱+时间戳哈希)做数据库唯一索引或 Redis setnx 校验,重复请求直接返回成功响应,而非报错
避免用时间戳或自增 ID 作为幂等键,它们不具备业务唯一性
真正难的不是加几个属性或写几行 JS,而是前后端对同一安全目标的理解是否一致——比如 Token 过期了前端要不要自动刷新,CSRF 失败是跳登录页还是弹提示,这些边界情况一旦没对齐,安全就断在中间了。
actionmethodactionmethodGETaction/api/login/api/registermethod="POST"POSTtype="password"type="password"textautocomplete="new-password"autocomplete="current-password"autocomplete="off"namename="email_123abc"crypto.randomBytes(32)csrf_token403 Forbiddendisabledbutton.disabled = true