Nad*_*ami 175 php cookies session
几个月前我开始使用PHP.为了为我的网站创建登录系统,我阅读了有关cookie和会话及其差异的信息(cookie存储在用户的浏览器和服务器上的会话中).那时候,我更喜欢饼干(谁不喜欢饼干?!)并且只是说:"谁在乎?我没有任何好处将它存储在我的服务器中",所以,我继续使用cookies我的学士毕业设计.然而,在完成我的应用程序的重要部分之后,我听说对于存储用户ID的特定情况,会话更合适.所以我开始考虑如果陪审团问我为什么用饼干代替会话,我会怎么说?我有这个原因(我不需要存储有关用户的内部信息).那是不够的一个原因?还是不止于此?
能告诉我使用cookies保存用户ID的优缺点吗?
感谢StackOverflow中的所有人!
Fos*_*sco 211
该概念是为Web访问者存储跨页面加载的持久数据.Cookie将其直接存储在客户端上.会话使用cookie作为排序的关键,以与存储在服务器端的数据相关联.
最好使用会话,因为实际值是从客户端隐藏的,您可以控制数据何时到期并变为无效.如果全部基于cookie,则用户(或黑客)可以操纵他们的cookie数据,然后向您的站点播放请求.
编辑:我认为使用cookie没有任何优势,除了简单.以这种方式看待它......用户是否有任何理由知道他们的ID#?通常我会说不,用户不需要这些信息.提供信息应限于需要知道的基础.如果用户将其Cookie更改为具有不同的ID,您的应用程序将如何响应该怎么办?这是一个安全风险.
在会议风靡一时之前,我基本上都有自己的实现.我在客户端上存储了一个唯一的cookie值,并将我的持久数据与该cookie值一起存储在数据库中.然后在页面请求我匹配这些值并拥有我的持久数据,而不让客户端控制那是什么.
小智 114
区分这两者的基本思路.
会议:
饼干:
当您需要存储短期信息/值时,首选会话,例如计算,测量,查询等变量.
当您需要存储长期信息/值(例如用户帐户)时,首选Cookie(这样即使他们关闭计算机2天,他们的帐户仍会登录).我想不出很多关于cookie的例子,因为在大多数情况下都没有采用它.
Zal*_*oza 42
SESSIONS ENDS WHEN USER CLOSES THEIR BROWSER,
COOKIES END DEPENDING ON THE LIFETIME YOU SET FOR IT. SO THEY CAN LAST FOR YEARS
Run Code Online (Sandbox Code Playgroud)
这是您选择的主要区别,
如果你想长时间记住id,那么你需要使用cookies; 否则,如果您只是希望网站识别此次访问的用户,那么会话就是最佳选择.
会话存储在php服务器将生成的文件中.为了记住哪个文件是针对哪个用户,php还会在用户的浏览器上设置一个cookie,用于保存此会话文件ID,因此在下次访问时,php将读取此文件并重新加载会话.
现在,php默认会在每个时间间隔清除会话,并且会话的命名约定使其自动过期.此外,一旦浏览器关闭或清除历史记录,浏览器将不会保留包含会话ID的cookie.
重要的是要注意,现在浏览器还支持另一种存储引擎,例如LocalStorage,SessionStorage和其他webdb引擎,javascript代码可以使用这些引擎将数据保存到您的计算机以便记住您.例如,如果您在Facebook中打开javascript控制台并输入"localStorage",您将看到Facebook用于记住您的所有变量而没有Cookie.
Fif*_*ifi 35
按优先级排序的规则:
来源:https : //www.lucidar.me/en/web-dev/sessions-or-cookies/
会话使用cookie!会话数据存储在服务器端,但 UID 存储在客户端的 cookie 中。它允许服务器将给定的用户与正确的会话数据进行匹配。UID 受保护且难以破解,但并非无懈可击。对于敏感操作(更改电子邮件或重置密码),不要依赖会话和 cookie:要求输入用户密码以确认操作。
敏感数据不应存储在 cookie(电子邮件、加密密码、个人数据……)中。请记住,数据存储在外国计算机上,如果计算机不是私人计算机(教室或公共计算机),其他人可能会读取 cookie 内容。
记住我的数据必须存储在cookies中,否则用户关闭浏览器时数据会丢失。但是,请勿在“记住我”cookie 中保存密码或用户个人数据。将用户数据存储在数据库中,并将此数据与存储在 cookie 中的加密 ID/密钥对链接。
在考虑了之前的建议之后,以下问题最终可以帮助您在 cookie 和会话之间进行选择:
用户关闭浏览器时必须保留持久数据吗?
Mak*_*ebi 20
当您将#ID保存为cookie以识别登录用户时,实际上您正在向与其无关的用户显示数据.此外,如果第三方尝试在浏览器中将随机ID设置为cookie数据,他们将能够说服服务器他们是用户,而实际上并非如此.那是缺乏安全感.
您已经使用过cookie,正如您所说,您已经完成了大部分项目.除了cookie有特权保留很长时间,而会话结束更快.因此会话不适用于这种情况.实际上,许多着名且受欢迎的网站和服务都使用cookie,您可以长时间保持登录状态.但是,如何使用他们的方法创建更安全的登录过程?
这里有一个想法:你可以帮助你使用cookies的方式:如果你使用随机密钥而不是ID来识别登录用户,首先,你不要将你的主要数据泄露给随机用户,其次,如果你考虑随机密钥足够大,任何人都难以猜测密钥或创建随机密钥.例如,您可以在用户的浏览器中保存这样的40长度密钥:"KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn",任何人创建确切密钥并伪装成其他人的可能性就会降低.
DOK*_*DOK 12
实际上,会话和cookie并不总是分开的.通常,但并非总是如此,会话使用cookie.
这里的其他问题对你的问题有一些很好的答案.由于您的问题特别是关于保存用户的IDU(或ID),我不认为它与其他问题完全重复,但他们的答案应该对您有所帮助.
我个人使用cookies和会话.
Cookie仅在用户点击"记住我"复选框时使用.并且cookie也是加密的,数据只在服务器上解密.如果有人试图编辑cookie,我们的解密者能够检测到它并拒绝请求.
我见过很多站点,其中登录信息存储在cookie中,任何人都可以只是简单地更改cookie中的用户ID和用户名来访问任何帐户.
谢谢,
| 标准/因素 | 会话 | 饼干 |
|---|---|---|
| 纪元(存在的开始) | 在 HTTP 响应之前创建 | 在 HTTP 响应之后创建 |
| 第一次 HTTP 请求期间的可用性 | 是的 | 不 |
| 后续 HTTP 请求期间的可用性 | 是的 | 是的 |
| 对数据和到期的终极控制 | 服务器管理员 | 最终用户 |
| 默认到期 | 比 cookie 更早过期 | 持续时间比会话长 |
| 服务器成本 | 记忆 | 记忆 |
| 网络成本 | 没有任何 | 不必要的额外字节 |
| 浏览器费用 | 没有任何 | 记忆 |
| 安全 | 难以劫持 | 容易劫持 |
| 弃用 | 没有任何 | 现在不鼓励使用 JavaScript“Web Storage” |
优点和缺点是主观的。它们可能导致二分法(对某些人来说是优势,但对其他人来说是劣势)。相反,我列出了可以帮助您决定选择哪一个的因素。
假设您是一个服务器端人员,想要同时处理会话和 cookie。第一次 HTTP 握手将像这样进行:
在步骤 1 中,浏览器不知道会话和 cookie 的内容。在步骤 4 中,服务器可以有机会设置会话和 cookie 的值。
假设在单个网页中您正在加载由 托管的example.com20 个资源,这 20 个资源将携带有关 cookie 的额外字节信息。即使它只是对 CSS 或 JPG 图像的资源请求,它仍然会在通往服务器的途中在其标头中携带 cookie。对 JPG 资源的 HTTP 请求是否应该携带一堆不必要的 cookie?
会话没有替代品。对于 cookie,在浏览器中存储数据还有许多其他选项,而不是旧式 cookie。
Session 存储用户数据更安全,因为它不能被最终用户修改,只能在服务器端设置。另一方面,Cookie 可能会被劫持,因为它们只是存储在浏览器中。
| 归档时间: |
|
| 查看次数: |
157855 次 |
| 最近记录: |