`
linvar
  • 浏览: 259099 次
  • 性别: Icon_minigender_1
  • 来自: 未定
社区版块
存档分类
最新评论

Cookie小解

    博客分类:
  • java
阅读更多
Cookie是客户端与服务器沟通的一个信息包
当服务器设置了客户端的Cookie后,只要没有过期,
浏览器每次请求都会带着这个Cookie,
这可以作为客户端的标志信息,向服务器端说明自己的身份.
其实这个Cookie在客户端是可以伪造的,不过是name=value键值对
这也警告了我们,客户端传递到服务器的任何信息都是不可靠的.
不要以为你用javascript控制了输入就可以阻止这种情况的发生.

对于这种不可信的情况,如果客户端操作是很关系到权限问题的,就需要确定一下客户端的真实有效性.如果只是一般的登录信息,不涉及修改业务数据,则可以不去验证,需要时才进行验证.
以前的做法是将username跟某些字符串结合加密,也将这个結果设置为Cookie,当拿回username时同时拿到那个加密值,再验证是否一致.
但是这个加密的字符串客户端就没法伪造了吗?应该至少没有那么容易吧.

还是回到怎样设置跟读取Cookie的问题上来
(1).设置Cookie
    构造Cookie:
    Cookie cookie = new Cookie(name, value);
    这个时候可以考虑设置Cookie的path,maxAge,domain
    cookie.setPath("/"); //在"/"路径下有效
    cookie.setDomain(".iteye.com");
    //在iteye.com域上设置这个cookie,其实这是跨域设置Cookie,经我测试是不能设置的,这样也对,别人的域怎么能让你乱设Cookie呢.默认就是设置服务器的URL.如果自己可以控制的域的话,比如自己域名的三级域名,就可以设置这个值,而且必须以"."开头

    cookie.setMaxAge(-1);//默认值就是-1
    //当maxAge是负数时,表示这个Cookie在浏览器关闭后消失
    //当maxAge是0的话,表示删除这个Cookie
    //当maxAge大于0时,表示这个Cookie存活的秒数,就算关闭浏览器后打开都有效
    当完成了Cookie的构造配置,就应该写入到客户端了
    response.addCookie(cookie);//这样就完成了写入

(2).获得Cookie
    我们设置Cookie时是使用的键值对,所以获取时应该通过这个键才行
    首先从request里拿到Cookie数组
    Cookie[] cookies = request.getCookies();
    循环这个数组拿到对应的Cookie
    String name = "somekey";
    Cookie cookie22 = null;
    for(Cookie cookie: cookies){
        if(name.equal(cookie.getName()){
            cookie22 = cookie;
        }
    }
    如果这个cookie不为null的话再取出相应的value值
    String value = null;
    if(cookie22 != null){
         value = cookie22.getValue();
    }


总结
其实用java操作Cookie时还是设置Cookie那个地方最可能出错
特别是使用cookie.setDomain(domain);时
这个domain是不用考虑端口号的
还是尽量不要去设置domain,这样问题比较少
还有就是如果domain为null时而又执行cookie.setDomain(domain)可能会报错

分享到:
评论

相关推荐

    javaee-cookie响应,请求小解

    JavaEE是企业级应用开发的标准框架,其中Cookie是它用于管理客户端会话状态的重要机制。在Web应用程序中,Cookie常用来存储用户偏好设置、登录状态等信息,它们会在客户端浏览器和服务器之间来回传递。本文将深入...

    cookie读写,子cookie

    在Web开发中,Cookie是一种非常重要的技术,用于在客户端和服务器之间传递状态信息。Cookie的主要功能包括用户会话管理、个性化设置保存、跟踪用户行为等。在这个“cookie读写,子cookie”主题中,我们将深入探讨...

    C#操作cookie,解密加密cookie

    在IT领域,尤其是在Web开发中,Cookie的管理与安全至关重要。C#作为一种广泛使用的编程语言,在处理Cookie方面提供了丰富的功能,包括对Cookie的加密与解密。本文将深入探讨如何在C#中操作Cookie,以及如何实现...

    关于java应用cookie

    ### 关于Java应用Cookie知识点详解 #### 一、Cookie简介 Cookie是一种常用的技术,用于存储用户的访问信息。在Web开发中,服务器可以将少量的信息发送到客户端浏览器,并存储在客户端,这种信息就是Cookie。当...

    EditThisCookie.crx cookie编辑导入导出利器

    《EditThisCookie.crx:强大的Cookie管理工具及与curl的集成》 在互联网浏览中,Cookie扮演着重要的角色,它们存储用户信息、保持登录状态、个性化网页内容等。EditThisCookie.crx是一款专为Chrome浏览器设计的强大...

    微信小程序cookie维护插件 实现自动设置获取cookie功能

    本文将详细讲解如何使用微信小程序中的cookie维护插件,实现自动设置和获取Cookie的功能,并特别关注增加的Cookie超时处理机制。 首先,理解Cookie的基本概念。Cookie是由服务器端生成,发送到客户端(浏览器)的一...

    Cookie浏览器

    **Cookie浏览器** Cookie浏览器是一种特殊的网络浏览工具,它利用了HTTP协议中的Cookie技术来实现特定功能,如网页登录绕过和邮箱免登录。Cookie是Web服务器在用户浏览器上存储的一小段数据,用于识别用户身份、...

    FlashCookie 不被浏览器清除的Cookie

    FlashCookie,也称为Local Shared Objects (LSO),是Adobe Flash Player为存储用户特定数据而引入的一种机制。不同于传统的HTTP Cookie,这些数据存储在用户的计算机上,不受浏览器的隐私设置或清除浏览器缓存操作的...

    cookie cookie cookie cookie cookie cookie

    cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie cookie

    Cookie将用户名和密码加密后存在客户端的Cookie当中

    var UserValue = unescape(allCookies.substring(cookie_User, cookie_UserEnd)); // 提取PwdCookie的值 cookie_Pwd += "PwdCookie".length + 1; var cookie_PwdEnd = allCookies.indexOf(";", cookie_Pwd); ...

    获取cookie非常好用的google插件

    标题中的“获取cookie非常好用的google插件”指的是在Google Chrome浏览器上的一种扩展程序,它允许用户方便地管理和操作浏览器中的Cookie数据。Cookie是网站在用户计算机上存储的小型文本文件,用于跟踪用户偏好、...

    jquery 设置cookie、删除cookie、获取cookie

    ### jQuery 操作 Cookie 的方法详解 #### 一、前言 在前端开发中,通过 JavaScript 操作 Cookie 是一种常见的需求,尤其是为了实现用户状态的持久化存储或网站配置的保存等场景。jQuery 提供了一个非常方便的方式...

    易语言取设cookie

    在易语言中,“取设cookie”是网络编程中的一个重要概念,主要用于处理网页浏览过程中的数据存储与交互。 Cookie是在HTTP协议下,服务器发送到用户浏览器并保存在本地的一小块数据,它用于记录用户的浏览历史、登录...

    cookie接口 实现本地或客户端的cookie的创建和读取

    它的关键方法包括`getName()`(获取Cookie的名称)、`getValue()`(获取Cookie的值)、`setComment()`(设置Cookie的注释)、`setMaxAge()`(设置Cookie的有效期)以及`setPath()`和`setDomain()`(分别用于指定...

    cookie记住账号密码

    这涉及到Web开发中的基本概念,主要包括Cookie的工作原理、安全性以及相关编程实践。 Cookie是服务器发送到用户浏览器并存储的一小块数据,它包含了特定的用户信息。当用户访问设置了Cookie的网站时,浏览器会自动...

    官方标配:jquery-cookie包括Dome

    $.cookie('the_cookie'); // 获得cookie $.cookie('the_cookie', 'the_value'); // 设置cookie $.cookie('the_cookie', 'the_value', { expires: 7 }); //设置带时间的cookie $.cookie('the_cookie', '', { expires:...

    browser-cookie 获取浏览器cookie

    ### browser-cookie3:获取浏览器cookie #### 一、概述 `browser-cookie3` 是一个用于Python 3的库,能够帮助用户将当前浏览器中的cookies提取出来,并存储到一个`cookiejar`对象中,从而实现无需登录即可通过...

    QT访问网页获取Cookie

    在QT中访问网页并获取Cookie是网络编程的一个重要部分,尤其对于需要实现自动化登录、跟踪用户状态或者进行Web服务交互的应用来说。 Cookie是一种在客户端和服务器之间传递信息的小型文本文件。服务器在响应HTTP...

    C#cookie实现历史记录

    在IT领域,尤其是在Web开发中,Cookie是一种非常重要的技术,用于在客户端和服务器之间存储和传递数据。在C#编程语言中,处理Cookie是构建动态Web应用程序的关键技能之一。本篇将深入探讨如何使用C#来创建、设置、...

    cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击.zip_js设置cookie值

    在网络安全领域,Cookie是Web应用用来存储用户状态和信息的一种机制。然而,随着网络攻击手段的不断升级,Cookie的安全性也成为了关注的重点。XSS(Cross-Site Scripting,跨站脚本)攻击就是其中一种常见威胁,它...

Global site tag (gtag.js) - Google Analytics