草庐IT

php - $_SESSION 诉 $_COOKIE

coder 2024-04-11 原文

大约几周前,我在创建登录页面时了解了 $_SESSION。我可以成功登录并将其与变量一起使用。目前我正在尝试理解 $_SESSION$_COOKIE。如果我错了请纠正我,我可以在登录和移动页面时使用 $_SESSION。使用 $_COOKIE,它用于记住我上次访问的时间和偏好。

另一个涉及 cookie 的是,当网站使用广告时(例如:Google AdSense),他们使用 cookie 来跟踪访问者何时点击广告,对吗?

我可以同时使用 ($_SESSION$_COOKIE)?我在某处读到,您可以将 session_id 存储为 cookie 的值。

此外,我阅读了有关安全性的内容,这让我找到了这个:What do I need to store in the php session when user logged in? .使用 session_regenerate_id 是否适合用户返回网站?

还有这个:How to store a cookie with php涉及uniqid

对于那些想知道登录信息的人,我使用电子邮件和密码。这样用户就可以更改他们的用户名。

我期待从任何愿意分享这方面知识的人那里了解更多关于这两者的信息。如果我问的问题太多,你可以只回答你更有经验的问题。

如果您需要更多信息,尽管询问,因为我可能忘记包含某些内容。

谢谢。


找到这个:What risks should I be aware of before allowing advertisements being placed on my website?

最佳答案

简单来说,$_SESSION$_COOKIE是不同的。 两者都是 php 全局变量,但使用 cookie 时没有语言限制。 $_SESSION 就是将数据存储在服务器中,同时将 session ID 存储为 cookie。 $_COOKIE浏览器发送给服务器的cookies。这是主要区别。如果客户端浏览器禁用了 cookie, session 将无法工作。

- 安全性-

如果您检查浏览器发送的请求 header ,您会注意到每个请求中都有 cookie 信息。可以通过截断您的网络通信来跟踪它们。 任何拥有更好工具的人都可以编辑 cookie 数据。 切勿使用 cookie 来存储密码! 如果您使用 session ,密码在服务器中,只有 session ID cookie 会存储在客户端中,减少安全问题。 Chuck Norris 仍然可以劫持 session 。

- 性能 -

如果您在浏览器中存储 5 个 cookie,其中包含 200 个字节,那么无论是 jpg 文件还是实际需要 cookies 信息。因此,这直接影响您的网站对最终用户的执行速度。

如果您使用 session ,服务器有这 1 KB 的数据,而客户端在每个页面请求中发送 session ID。 您可以通过将静态文件转移到另一个无 cookie 域来变得聪明。

- 生命周期 -

session 会及时清除。因此,如果您想长期保存一些东西,请改用 cookie。大多数网站的“记住我”功能都是这样工作的(不过,它不存储密码。只是 session 信息——不要与 session ID 混淆)。

归根结底, session 和 cookies 是不同的类型。 session 是相对安全的和服务器端存储。经常被清除。 Cookie 可以有更长的生命周期,但它会影响性能(不是 CPU/RAM -- 加载时间),除非你没有记住这一点。 不过,如果有理由将 1 KB 存储为 cookie,那就太奇怪了。

永远不要相信来自$_GET/POST 的用户输入。对 $_COOKIE 也做同样的处理。 并且存在 session 劫持。有人可以猜出其他人的 session ID,尽管这几乎是不可能的。所以首先在服务器端使用一些验证。

关于php - $_SESSION 诉 $_COOKIE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287041/

有关php - $_SESSION 诉 $_COOKIE的更多相关文章

  1. ruby-on-rails - Rails 优雅地处理超时 session ? - 2

    使用rails4,ruby2。我在rails配置中为我的cookiesession设置了30分钟的超时时间。问题是,如果我转到表单,让session超时,然后提交表单,我会收到此ActionController::InvalidAuthenticityToken错误。如何在Rails中优雅地处理这个错误?比如说,重定向到登录屏幕? 最佳答案 在您的ApplicationController:rescue_fromActionController::InvalidAuthenticityTokendoredirect_tosome_p

  2. ruby-on-rails - Rails Cookie 问题 - 2

    我在ruby​​onrails应用程序中有以下新方法:defnewifcookies[:owner].empty?cookies[:owner]=SecureRandom.hexend@movie=Movie.new@movie.owner=cookies[:owner]end基本上,每个新用户都应该获得一个代码来识别他们(尽管只是通过cookie)。因此,当用户创建电影时,创建的cookie将存储在owner字段中。所以有两个问题:使用.empty?方法,当我从浏览器中删除cookie时,返回一个undefinedmethodempty?'对于nil:NilClass`当我确实已经在

  3. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  4. ruby - 如何打印出 Mechanized 存储的 cookie? - 2

    我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject

  5. ruby - Sinatra session 未按预期持续 - 2

    我正在尝试使用Sinatra中的重定向和session在网站周围传递一些数据。这是一个简化的示例,使用PrettyPrint进行调试:require'pp'require'rubygems'require'sinatra'enable:sessionsget'/'dosession[:foo]='12345'puts'session1'ppsessionredirectto('/redir')endget'/redir'doputs'session2'ppsession'helloworld'end查看Thin的输出,我看到:>>Listeningon0.0.0.0:4567,CTRL

  6. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  7. ruby-on-rails - 自定义设计 Cookie - 2

    我在我的Rails应用程序中使用设计。我在租户庄园中配置了它,其中帐户/session的范围限定为子域。例如:http://subdomain1.example.com/http://subdomain2.example.com/...这很好用,但我想为“super管理员”添加一个子域,允许这些用户导航到所有其他子域而无需重新验证。这将是这样的:http://admin.example.com/是否可以自定义仅在管理子域上生成的cookie,以便它在所有其他子域上都有效? 最佳答案 Cookie域的定义越不具体,它们的包容性就越大,

  8. ruby - 如何强制 Rack :session + sinatra to read "rack.session" from params instead of cookies - 2

    我正在处理oauth1.0(twitter和flickr)。网站工作在80端口,oauth服务器工作在8080端口算法:向oauth服务器发送ajax请求以检查用户是否有有效的access_token如果用户没有access_token或access_token已过期,则打开授权窗口在oauth服务器的用户session中保存access_token发送分享数据到oauth服务器它使用sinatra+rack:session+rack::session::sequel+sqlite来存储session。它在每个响应中发送Set-Cookie:rack.session=id我正在使用2种

  9. ruby-on-rails - 如何编写 Rails 4 测试以使用 omniauth-google-oauth2 gem 创建 session ? - 2

    我正在尝试为使用omniauth-google-oauth2gem创建session编写测试。我是否需要将env["omniauth.auth"]变量与post:create一起传递?也许当我试图这样做时,我做错了。我得到的错误如下所示...Rake测试错误1)Error:SessionsControllerTest#test_should_get_create:NoMethodError:undefinedmethod`provider'fornil:NilClassapp/models/user.rb:6:in`from_omniauth'app/controllers/sessi

  10. ruby - session 未创建 : Chrome version must be between - 2

    当使用ruby​​selenium驱动程序驱动chrome时,我得到/home/travis/.rvm/gems/ruby-2.6.2/gems/selenium-webdriver-3.141.5926/lib/selenium/webdriver/remote/response.rb:72:in`assert_ok':sessionnot创建:Chrome版本必须在70和73之间(Selenium::WebDriver::Error::SessionNotCreatedError)如何解决这个问题?降级chrome不是我想做的事。 最佳答案

随机推荐