Php 客户端访问超全局
PHP超全局函数有不同的行为方式,我不知道该用哪一种 客户端(我不是说黑客或安全攻击,而是“普通用户”)何时可以编辑、创建或访问超全局变量 即使是文档也没有提到这一事实 根据我到目前为止学到的知识,我可以这样总结:Php 客户端访问超全局,php,security,client,backend,superglobals,Php,Security,Client,Backend,Superglobals,PHP超全局函数有不同的行为方式,我不知道该用哪一种 客户端(我不是说黑客或安全攻击,而是“普通用户”)何时可以编辑、创建或访问超全局变量 即使是文档也没有提到这一事实 根据我到目前为止学到的知识,我可以这样总结: superglobal read create edit $_GET V V V $_POST X V X $_FILES
superglobal read create edit
$_GET V V V
$_POST X V X
$_FILES X V X
$_SESSION ? X X
$_COOKIE V V V
我不是说你的PHP脚本,当用户发送一个表单或类似的东西时,它会创建一个会话变量,但我说的是,任何人都可以在DOM中添加一个假的表单到POST任何内容中,或者使用简单的Chrome扩展(如EditThisCookie)来读取,创建或编辑任何COOKIE
因此:
$\u SESSION
之外,所有这些超全局变量都包含从客户端请求中提取的数据。客户机可以为它们中的任何一个设置初始值(对于给定的PHP程序运行)
客户无法阅读其中任何内容。(他们可以读取由浏览器发送或存储在浏览器中的所有数据,并从中推断出这些超全局文件中的数据($\u SESSION
仍然除外),但他们无法读取超全局文件本身)
客户机不能编辑其中任何一个(除了发出新请求,从一开始就重新运行PHP程序)
$\u会话
包含存储在服务器上的数据。可以使用存储在cookie中并由客户端发送的会话ID选择特定会话
任何人都可以在DOM中添加假表单来发布任何内容,或者使用简单的Chrome扩展(如EditThisCookie)来读取、创建或编辑任何COOKIE 对。不要盲目信任来自客户机的数据。客户端可以在cookie、查询字符串或post正文中发送它想要的任何数据
或者有时我使用POST方法来验证调用是否来自特定页面,但后来我意识到客户端可以读取该表单的内容并从任何地方伪造它。我也应该为此目的使用会话吗 你可能不该在意 (欺骗第三方提交虚假数据是另一回事,但请参见)
我应该在哪里存储敏感数据,如访问令牌或用户ID 访问令牌(前提是这些令牌设计为允许特定用户访问某些内容,而不是(比如)服务器应用于访问第三方服务器的API密钥)需要存储在客户机上。具体位置取决于你将如何使用它。在大多数情况下,会话ID是可以接受的 用户Id(假设它们被用作用户就是该用户Id的证据)的存储方式必须确保它们不能被编辑为其他人的Id。这意味着要么存储在服务器上(通常在会话中),要么以无法更改的格式存储(如客户端上的加密JWT) 我的桌子对吗 没有 除了
$\u SESSION
之外,所有这些超全局变量都包含从客户端请求中提取的数据。客户机可以为它们中的任何一个设置初始值(对于给定的PHP程序运行)
客户无法阅读其中任何内容。(他们可以读取由浏览器发送或存储在浏览器中的所有数据,并从中推断出这些超全局文件中的数据($\u SESSION
仍然除外),但他们无法读取超全局文件本身)
客户机不能编辑其中任何一个(除了发出新请求,从一开始就重新运行PHP程序)
$\u会话
包含存储在服务器上的数据。可以使用存储在cookie中并由客户端发送的会话ID选择特定会话
任何人都可以在DOM中添加假表单来发布任何内容,或者使用简单的Chrome扩展(如EditThisCookie)来读取、创建或编辑任何COOKIE 对。不要盲目信任来自客户机的数据。客户端可以在cookie、查询字符串或post正文中发送它想要的任何数据
或者有时我使用POST方法来验证调用是否来自特定页面,但后来我意识到客户端可以读取该表单的内容并从任何地方伪造它。我也应该为此目的使用会话吗 你可能不该在意 (欺骗第三方提交虚假数据是另一回事,但请参见)
我应该在哪里存储敏感数据,如访问令牌或用户ID 访问令牌(前提是这些令牌设计为允许特定用户访问某些内容,而不是(比如)服务器应用于访问第三方服务器的API密钥)需要存储在客户机上。具体位置取决于你将如何使用它。在大多数情况下,会话ID是可以接受的 用户Id(假设它们被用作用户就是该用户Id的证据)的存储方式必须确保它们不能被编辑为其他人的Id。这意味着要么存储在服务器上(通常是在会话中),要么以无法更改的格式存储(例如在服务器上的加密JWT)