Forgot Password

本文探讨了Web应用中常见的密码找回功能存在的安全隐患,特别是针对那些缺乏适当验证机制的情况。指出许多应用程序未能正确实施该功能,导致用户身份验证过于简单,容易受到暴力破解攻击。

Web applications frequently provide their users the ability to retrieve a forgotten password. Unfortunately, many web applications fail to implement the mechanism properly. The information required to verify the identity of the user is often overly simplistic.

web应用一般会为用户提供取回密码功能,但是很多应用没有正确的实现这个机制。

Hint: There is no lock out policy in place, brute force your way!

即没有锁死机制,因此有时只需要进行暴力破解就可以拿到用户密码!!!

 

脑残问题 但是与弱密钥问题一样 普遍存在

 

学会怎样检索到存在这类问题的网站!!!

你遇到的问题是:**搜索引擎无法抓取某些链接,因为这些 `<a>` 标签缺少 `href` 属性**,仅通过 `data-location` 或 JavaScript 控制行为。这会导致 SEO 问题 —— 搜索引擎(如 Google)的爬虫依赖 `href` 来发现和索引网站内部页面。 --- ## 🔍 问题分析 当前代码片段: ```html <a class="btn btn-line" data-location="rey-forgetForm">Forgot password</a> <a class="btn btn-line" data-location="rey-loginForm">LOGIN</a> ``` ### ❌ 存在的问题: - 缺少 `href` 属性 → **爬虫不会将其识别为可导航链接** - 使用 `data-location` 等自定义属性 → 只对 JS 有效,对 SEO 无效 - 虽然用户点击可能触发 JS 弹窗或表单切换,但搜索引擎“看不见”这些链接 👉 结果: > **这些链接不会被 Google 抓取,也不会传递权重(PageRank),影响站点结构发现与收录** --- ## ✅ 正确做法:让链接既可用又可抓取 ### ✅ 原则: > 所有用于导航或重要功能的 `<a>` 标签都应具有语义化的 `href` 属性,即使实际行为由 JavaScript 处理。 --- ### ✅ 解决方案一:使用有效的 `href` + 阻止默认跳转(推荐) ```html <!-- “忘记密码”链接指向一个真实的可访问页面 --> <a href="/forgot-password" class="btn btn-line" data-location="rey-forgetForm" onclick="openModal('forget'); return false;" > Forgot password </a> <!-- 登录链接也指向真实路径 --> <a href="/login" class="btn btn-line" data-location="rey-loginForm" onclick="openModal('login'); return false;" > LOGIN </a> ``` #### ✅ 优点: - `href="/forgot-password"` 和 `/login` 是真实存在的页面 URL - 搜索引擎会顺着这些链接去抓取对应页面 - 即使 JavaScript 失效(无 JS 环境),用户仍能访问目标页(渐进增强) - 完全符合 SEO 最佳实践 --- ### ✅ 解决方案二:如果是模态框/弹窗,确保有对应的独立页面 很多网站用弹窗做登录/注册,但忽略了为这些功能提供**独立的落地页(standalone page)**。 #### ✅ 推荐架构: | 功能 | 弹窗入口 | 独立页面 | |------|----------|---------| | 登录 | `/#login` 或 `/login` (弹出模态) | `/login` | | 忘记密码 | `/#forgot` | `/forgot-password` | 这样: - 用户从首页点“登录” → 弹出模态框(体验好) - 搜索引擎访问 `/login` → 能看到完整登录表单(SEO 友好) > 💡 这叫“**同构式设计**”:同一个功能,多种访问方式 --- ### ✅ 解决方案三:添加 `<link rel="alternate">` 或 sitemap 显式暴露 如果你坚持使用纯 JS 控制的链接(不推荐),至少要在其他地方告诉搜索引擎这些页面存在: #### 方法 1:在 `sitemap.xml` 中加入关键页面 ```xml <url> <loc>https://yoursite.com/login</loc> <lastmod>2025-04-05</lastmod> <changefreq>weekly</changefreq> </url> <url> <loc>https://yoursite.com/forgot-password</loc> <lastmod>2025-04-05</lastmod> <changefreq>monthly</changefreq> </url> ``` #### 方法 2:使用 JSON-LD 提示页面关系 ```html <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "name": "Your Site", "url": "https://yoursite.com", "potentialAction": { "@type": "SearchAction", "target": "https://yoursite.com/search?q={search_term}", "query-input": "required name=search_term" }, "hasPart": [ { "@type": "WebPage", "name": "Login Page", "url": "https://yoursite.com/login" }, { "@type": "WebPage", "name": "Forgot Password", "url": "https://yoursite.com/forgot-password" } ] } </script> ``` --- ## 🚫 错误做法(避免!) ### ❌ 1. 完全没有 `href` ```html <a onclick="showLogin()">Login</a> <!-- ❌ 爬虫看不见 --> ``` ### ❌ 2. 使用 `href="#"` 或 `javascript:void(0)` ```html <a href="#" onclick="...">Login</a> <!-- ❌ 没有意义,浪费爬虫资源 --> ``` ### ❌ 3. 用 `div` 或 `span` 冒充链接 ```html <div class="btn" onclick="openModal()">Login</div> <!-- ❌ 不是链接 --> ``` > ⚠️ 这些写法都会导致 **SEO 不可见、无障碍访问失败、历史记录异常** --- ## ✅ 最佳实践总结 | 要求 | 推荐做法 | |------|-----------| | ✅ 链接必须可抓取 | 使用有意义的 `href` 属性 | | ✅ 支持 JS 行为 | 用 `onclick` + `return false` 阻止默认跳转 | | ✅ 支持无 JS 环境 | `href` 指向真实可访问页面 | | ✅ 提升 SEO | 在 sitemap 和 structured data 中声明关键页面 | | ✅ 渐进增强 | 先保证基础链接可用,再用 JS 增强体验 | --- ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值