当您创建表单时,您需要处理用户数据。您的首要关注点应该是确保用户数据的私密性和安全传输。让我们来看看可以做些什么。
确保您的表单安全
第一步,请确保尽可能少地请求数据。不要索要您不需要的数据,并始终质疑您是否需要所有请求的数据。数据越少意味着风险越低、成本越低和责任越小。此外,减少表单中的字段数量可以使其不那么复杂、更易于填写,并可以降低放弃率。
始终使用 HTTPS,特别是对于包含表单的页面。使用 HTTPS,数据在从服务器发出和返回服务器时都会被加密。
假设您坐在咖啡馆使用公共 Wi-Fi。您打开一个电子商务网站并填写您的信用卡信息以购买商品。如果网站使用 HTTP,则同一公共 Wi-Fi 上的任何人(如果他们有技能这样做)都可以看到您的信用卡信息。如果网站使用 HTTPS,则数据会被加密,从而受到保护,免受任何试图访问它的人的侵害。
在您的网站上,您还应确保将任何 HTTP 请求重定向到 HTTPS。了解更多关于 如何将所有流量重定向到 HTTPS 的信息。
帮助用户保护其数据隐私
在 第一个模块 中,您学习了两种可能的数据传输方式:使用 GET
请求和使用 POST
请求。
使用 GET
请求,表单数据作为 查询字符串 包含在请求 URL 中。如果您提交使用 GET
请求的表单,浏览器会将包含表单数据的请求 URL 添加到您的浏览历史记录中。如果您想查找过去的表单提交内容(例如搜索表单),这很方便。但如果提交了敏感数据,并且任何有权访问您的浏览器历史记录或本地网络的人都可以看到此信息,那就非常糟糕了。
对于每个可能提交个人数据或其他敏感数据的表单,都使用 POST
请求。这样,数据仅对处理它的后端脚本可见。
那么直接在浏览器中保存和处理个人数据呢?您可以使用客户端存储,例如 localStorage
在浏览器中存储个人数据。就隐私而言,这不太理想。同样,每个有权访问您的浏览器的人都能够读取此信息。您应该只存储个人数据的加密值。
确保用户可以安全注册和登录
用户帐户 身份验证 在隐私和安全方面是一个复杂的问题。最好使用 第三方身份提供商,而不是构建您自己的安全身份验证系统。
了解更多关于 帐户身份验证和密码管理的最佳实践。
帮助用户访问其个人数据
许多地区都有关于数据保护和隐私的法律法规,包括加利福尼亚州的 CCPA 和印度的 PDPA。每个在欧盟 (EU) 提供的网站都必须遵守 通用数据保护条例 (GDPR),即使该网站并非位于欧盟。
GDPR 为收集和处理居住在欧盟的人的个人信息制定了准则。处理个人数据需要征得同意,用户可以随时请求您存储的个人信息,并且您必须正式宣布数据泄露。这对用户来说是一件好事,因为这有助于确保他们的隐私得到尊重。了解更多关于 GDPR 的信息。
确保您的用户知道您计划如何处理个人数据。透明度是信任的关键。用户应始终能够访问、修改和删除您为他们保存的所有数据。
确保用户可以更新其个人数据
让用户可以轻松更新其个人数据,包括密码、电子邮件地址和用户名。通知用户有关其存储的个人数据的更改,并确保用户可以撤销更改。例如,在用户更改电子邮件地址后,向之前的和新的电子邮件地址发送电子邮件。
让用户可以轻松删除其帐户,包括所有关联数据,并在相关情况下,使其可以下载数据。帐户删除在某些地区是一项 法律要求。
要求额外的身份验证步骤,例如,重新输入当前密码,以查看或更改您网站上的个人信息。
了解更多:Web 应用程序隐私最佳实践。
确保所有数据状态良好
在之前的模块中,您学习了 前端验证。前端验证很重要,但用户仍然可能能够提交无效数据。作为下一步,您还必须在 后端 验证数据,然后再将数据保存在数据库中。这确保了数据库中不会保存无效数据。
验证有助于确保数据格式有效,但您仍然不应信任用户输入的数据。如何安全地输出数据?为了防止 跨站脚本 (XSS),并确保所有数据都可以安全地包含在 HTML 中,您必须在输出之前对数据进行清理。
了解更多关于 在输出之前清理数据 的信息,并在可能的情况下使用 Sanitizer API。
确保所有提交都来自真人
为了帮助保护您的数据,您有多种选择来防止来自 机器人 的垃圾邮件提交。
第一个选项是使用 reCAPTCHA 等服务 来区分真人与机器人。这需要您在页面上包含一个 JavaScript 代码段,并在您的 提交 按钮中添加额外的属性。
reCAPTCHA 执行各种检查以查明您是否是真人。例如,它可能会要求您识别图像。自动化软件(例如机器人)无法完成这些挑战,也无法提交表单。
蜜罐
另一种选择是使用所谓的“蜜罐”:一个视觉上隐藏的表单字段。人类看不到蜜罐字段,但机器人会填写它。在后端,您的处理脚本可以检查该字段是否已完成。如果是,则提交可能来自机器人,您可以忽略它。
还有像 Akismet 这样的服务可以帮助您进行垃圾邮件防护。Akismet 过滤器的工作原理是结合在所有参与站点上捕获的垃圾邮件信息,然后使用这些垃圾邮件规则来阻止未来的垃圾邮件。Akismet 对用户是透明的,并且可以捕获大多数垃圾邮件。
检查您的理解
测试您关于安全和隐私的知识
使用表单传输个人数据的首选方法是什么?
POST
请求。GET
请求。您如何防止垃圾邮件?