php - 使用jquery根据登录状态隐藏和显示页面内容是否安全?(包括登录/注册表单的所有内容)
问题描述
好的,我正在构建这个 Web 应用程序,其中所有内容都放在一个 html 文件中。在安全性和用户体验方面,基于登录状态隐藏和显示页面内容是最佳实践吗?例如:
- 访问显示一般内容的页面的用户。
- 该页面具有仅对注册用户可用的特定服务。
- 该服务编码在同一个 html 文件中,但我使用 CSS 和 jquery 来隐藏它。
- 一旦用户尝试访问该服务,就会出现一个登录表单(它也被编码在同一个 html 文件中,并以前面提到的相同方式隐藏)将出现。
- 登录信息被发送(通过 AJAX)到服务器,处理(通过 PHP),并返回一个状态。
- 基于此状态,服务(或内容)将显示或保持隐藏(如果状态返回未指示有效身份验证)。
- 如果状态指示成功登录,则将通过 jquery 操作 DOM(使用 .show() 函数)来显示服务。
请记住,所有上述内容(服务、登录、非用户网站的一般显示、仅为用户专门显示的内容)都在单个页面中,但在不同的 div 中分隔并使用 CSS(显示属性)和 jquery 隐藏(使用 show() 和 hide() 函数)。所以没有实际的重定向或加载。我在服务器端使用 html、CSS、jquery 和 PHP。关于安全性和用户体验,这种方法是否被视为良好做法?如果不是请告知
*抱歉没有包含任何代码。网络应用程序有点大,我不想在阅读时失去你。提前感谢您的帮助和理解
解决方案
如果您在 PHP 上使用适当的控件,那么如果有人使用控制台取消隐藏这些元素而不能做更多的事情,那么它是安全的。记住只是因为你隐藏了它,并不意味着没有人可以看到它。
只要您拥有强大且适当的服务器端控制,客户端隐藏是可以的。无论如何,安全来自服务器端控制。
今年早些时候有一个关于黑客操纵仅客户端验证从网站窃取 1.7 亿美元的故事:https ://www.reddit.com/r/Buttcoin/comments/7wrqsn/bitgrail_insolvency_due_to_people_editing/
请确保您正在验证每个请求的登录状态。例如,如果用户从应该只显示给登录用户的 div 中发布内容,则您还需要从 PHP 验证此登录状态,并且不要依赖从 javascript 收到的内容。
推荐阅读
- javascript - $q。所有承诺(访问控制允许来源)
- c# - 使用父属性调用父方法
- c++ - sclite (SCTK) 安装,文件无法识别,文件格式无法识别,Cygwin
- java - 从包含所需信息的 Hashmap 中获取对象?
- java - 从存储在 sugerorm 数据库表中的 Json 数组中检索数据。安卓问
- batch-file - 批量设置扩展变量中的变量
- mongodb - db.version() 显示旧版本的 mongodb 即使在 mac 上安装了最新版本
- java - 运行 IntelliJ IDEA 中使用 @Category 注释的方法
- erlang - rebar3 应用程序中的“应用程序配置文件”是什么?
- python - 以字节形式读取 tarfile