保存已登陆用户的个人信息用什么最好? 保存已登陆用户的信息的时候用什么保存最好?是Cookic还是Session,用Session的话只要浏览器一关就需要重新登陆,那样的效果不太好,我希望在一定的时间内都不需要再登陆。但用Cookic的话那些信息都在客户端好象不太安全,有什么好的办法?要是说Cookic加密的话请详细讲下,现在还没怎么接触过加密技术。谢谢了... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然是Session, cookie 如果客户端禁止了,怎么办? session吧,同时在线有多少人啊?能占多少资源?其他所有的尽量避免甚至杜绝session,否则ie7在同个窗口打开不同选项卡就会出意料不到的问题。 cookic吧 session是保存在服务器的,人多服务器的压力就越大 cookic保存在客户端,减少服务器的压力。 Session只能针对一个浏览器窗口!新开个还要重新登陆Session在服务器上占用服务器资源,Cookic在客户端,但安全性得不到保障,这些东西我都知道。我希望的是:在一定的时间内登陆了就不要再登陆,而且需要一定的安全性,不能说他知道URL就直接让他过去了... 那就看是做什么了。网站用cookie,系统用session。加密是算法问题,网上有很多。 session和Cookie配合使用,比较好的选择,Session建议存一些必要属性,这样做会非常方便,而且不会用太多空间,而且挺安全, 如果服务器关闭,就把session中的信息保存到Cookie,这里可以考虑下加密。下次请求时,又利用Cookie重建Session考虑到客户端的Cookie可能被禁用,可以加上URL回写的方式,以保证可靠性其实这上比较严密系统,一般小系统里边,建议用session很OK,性有不是问题。。 这个就是用cookie和session配合得到的效果,用Cookie保存的sessionid来重构session就OK了 lz 说的是向csdn登陆的时候 2周内不用登陆 的单选框吧。。 登陆状态session判断cookies用来存储用户的登陆信息,用户名密码等.提供自动登陆方法.判断有cookies就帮他登陆写好session Session 是非常宝贵的资源,可尽可能少的在 Session 中存放信息,也就是能不往 Session 中存东西就不往里面存东西。一般来说,对于登录用户,仅仅在 Session 中保存一个用户名,至于该用户的其他信息等用到了再去查询。PS:用户名是用户表中一个 UNIQUE 字段。 我们都是这样来做的,session和Cookie配合使用 cookic吧 session是保存在服务器的 cookic保存在客户端 如果是小型项目,访问量也少的话, 放在session里, 要是服务器有集群管理, 服务器容量够大, 放在session里.一般情况下,客户端的cookie是不禁止的. 要是说访问量很大, 服务器也很小, 放在cookie里. 这个问题还是要具体分析. 想实现用户关闭浏览器,再打开浏览器时自动登录,就只能用Cookie了用Cookie只保存一个用户名在客户端,密码就不要保存了加密什么的也危险(如果安全系数要求高)不过这样的缺点就是,如果黑客知道你的网站要求什么样的Cookie,就可以构造管理员的用户名实现登录要安全一点,就把用户名和用户IP什么的合并加密,保存一个加密字符串到客户端Cookie同样,如果黑客知道这个加密字符串,并把自己的数据包IP改成这个IP,一样可以登录总结:想实现自动登录,安全性就不可能太高这是安全与易用性的矛盾之处 using System;using System.Diagnostics;using System.Security.Cryptography;using System.Text;using System.IO;using System.Web;namespace Press{ public class CryptoUtil { public static byte[] KEY_64 = { 42, 16, 93, 56, 78, 4, 218, 223 }; public static byte[] IV_64 = { 55, 103, 46, 79, 36, 89, 167, 3 }; private static byte[] KEY_192 = { 42, 16, 93, 156, 78, 4, 218, 32, 15, 167, 44, 80, 26, 250, 155, 112, 2, 94, 11, 204, 119, 35, 184, 197 }; private static byte[] IV_192 = { 55, 103, 246, 79, 36, 99, 167, 3, 42, 5, 62, 83, 184, 7, 209, 13, 145, 23, 200, 58, 173, 10, 121, 222 }; //标准的DES加密 public static string Encrypt(string value1) { if (value1 != "") { DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(KEY_64, IV_64), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cs); sw.Write(value1); sw.Flush(); cs.FlushFinalBlock(); ms.Flush(); return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); } return ""; } //标准的DES解密 public static string Decrypt(string value1) { if (value1 != "") { DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); byte[] buffer = Convert.FromBase64String(value1); MemoryStream ms = new MemoryStream(buffer); CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateDecryptor(KEY_64, IV_64), CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs); return sr.ReadToEnd(); } return ""; } } public class CookieUtil { public const string COOKIENULL = null; public static void SetEncryptedCookie(string key, string val) { key = CryptoUtil.Encrypt(key); val = CryptoUtil.Encrypt(val); SetCookie(key, val); } public static void SetEncryptedCookie(string key, string val, DateTime expires) { key = CryptoUtil.Encrypt(key); val = CryptoUtil.Encrypt(val); SetCookie(key, val, expires); } public static void SetEncryptedCookie(string key, string val, int DayNum) { key = CryptoUtil.Encrypt(key); val = CryptoUtil.Encrypt(val); DateTime expires = DateTime.Now.AddDays(DayNum); SetCookie(key, val, expires); } #region///SetCookie private static void SetCookie(string key, string val) { key = HttpContext.Current.Server.UrlEncode(key); val = HttpContext.Current.Server.UrlEncode(val); HttpCookie cookie = new HttpCookie(key, val); SetCookie(cookie); } private static void SetCookie(string key, string val, DateTime expires) { key = HttpContext.Current.Server.UrlEncode(key); val = HttpContext.Current.Server.UrlEncode(val); HttpCookie cookie = new HttpCookie(key, val); cookie.Expires = expires; SetCookie(cookie); } private static void SetCookie(HttpCookie cookie) { HttpContext.Current.Response.Cookies.Set(cookie); } #endregion public static string GetEncryptedCookieValue(string key) { key = CryptoUtil.Encrypt(key); string val = GetCookieValue(key); if (val == COOKIENULL) return COOKIENULL; val = CryptoUtil.Decrypt(val); return val; } #region///GetCookie private static HttpCookie GetCookie(string key) { key = HttpContext.Current.Server.UrlEncode(key); return HttpContext.Current.Request.Cookies.Get(key); } private static string GetCookieValue(string key) { try { string val = GetCookie(key).Value; val = HttpContext.Current.Server.UrlDecode(val); return val; } catch { return COOKIENULL; } } #endregion }} Cookie加密到内存?不知所云,Cookie能放到内存吗! 我用Session,不过我的站点访问量小 用ASP.NET方法啊。cookie.很方便的。一般情况下都应该够了吧? session 这是最常用的办法。要按楼主的要求,最好还是Cookie和session配合使用。cookie中记个用户名就好了。 用cookie吧!占用内存小,你可以设置cookie的有关属性。 Session 是针对一个会话有效的,并非只是针对一个浏览窗口,而我们为避免重复登陆和通过输入URL跳过登陆可以通过使用过滤器和监听器来实现.而且Session是有会话超时设置的,Session在一段时间不活动是会被销毁的.现在一般的网站都有保存密码的功能,也就是下次在访问的时候不需要在登陆.这些事通过Cookie实现的,这样来说对于公共场合的电脑对于用户来说是相当不安全的.而且有些浏览器禁用Cookie,难道就不允许用户登陆了吗?所以保存一个用户是否登录来说采用Session中存值是一个好方法. 当然是 用 SESSION。 了 kerberos 登录后保存票据到session中就好了,放cookie也可以 楼上也说了太多了查看是否登录用的是session,如果要保存密码之类的那么用cookies 比较同意他的观点1. 如果需要客户端保存密码,那么必须用cookie,当然,密码+用户名+ts要做加密,可以使用RSA128,MD5就算了吧,听说 被被王老师给破了,安全要求高的话,考虑一下是否还要提供保存密码的易用性功能...... 而且每次加密解密一下,也需要运算的2. cookie还是要和session结合一下,cookie也就保存一个sessionid,其他的都使用session,session保存的内容不要太多,一些pk足矣了吧,再不行把username等保存一下也就得了,你的订单什么的,还是仍到cookie里面吧,但是也要注意,cookie太大了,也是要增加流量的,还不如直接塞到session里面去,我想你的webserver解析cookie的时候,也需要时间吧,时空性能问题,还是要具体情况具体分析了 如果你做门户,就用php、c什么的,java .net还是作企业应用比较爽 Session做会话跟踪,记录登陆用户一般都用Session,Session有生命周期的,默认是用户最后一次操作后20分钟后,该Session自动退出会话。 有空我想用Cookie试试现在一直用Session SESSION+COOKIE加密,SESSION不存在时判断COOKIE,COOKIE正确时建立SESSION cache 建议用session,现在服务器的配置越来越高,所以服务器的性能不是主要的问题,我以前做做了一个政府的网站,里面90%都是服务器控件,列表数据全是GridView,呵呵政府有钱,服务器很好,虽然每个很多地方都刷新页面,但速度同样个很快用session保存用户登陆信息,很方便使用,是一种不错的选择。如果用Cookie很容易被客户端禁用,那就不好了! cookie吧,我觉得还是cookie好~方便又灵活,而且占用资源少,现在讲究的就是这个。 看过苏鹏的教程,说session有时会丢失(的确!),而cookie又不安全,于是微软搞了个profile,貌似在petshop4.0里面就用了,貌似是把信息存到数据库里,我也不太清楚,有兴趣可以查下。 访问量不大就用Session吧1、安全性比较高2、不容易出现丢失访问量大还是用Cookie1、用户每次登陆时,创建一个Guid分配给客户端2、客户端只在Cookie中保存这个Guid3、数据库中保存该用户的Guid及最后登陆时间4、最后登陆时间用计算Guid的过期时间只保存了Guid,每次登陆都会更换,保证了账号的安全另外还有个 Flash 的Cookie#SharedObjects能够实现次数据保存在客户电脑里一般的清除Cookie及删除临时文件,都不会清理该数据 判断用户是否开cookie,如果cookie没有开,就用session页面给用户进行回复! 访问日志写成文件还是数据库记录比较好? 一个数据库 设计的问题? tomcat5.5如何 查看后台 ? 华为开发平台 帮忙解释下displaytag的提示 在select中怎么定位,不用struts标签 求救! spring发送带背景音乐邮件 救命啊,大虾们 请高手指路! 各位大侠:一个小问题,小弟请教 .急!急!急!急! rtsp怎么放到网页中啊... 做过北大青鸟的人力资源管理系统(hrms)的进来讨论下
其他所有的尽量避免甚至杜绝session,否则ie7在同个窗口打开不同选项卡就会出意料不到的问题。
session是保存在服务器的,人多服务器的压力就越大
cookic保存在客户端,减少服务器的压力。
网站用cookie,系统用session。
加密是算法问题,网上有很多。
考虑到客户端的Cookie可能被禁用,可以加上URL回写的方式,以保证可靠性
其实这上比较严密系统,一般小系统里边,建议用session很OK,性有不是问题。。
这个就是用cookie和session配合得到的效果,用Cookie保存的sessionid来重构session就OK了
cookies用来存储用户的登陆信息,用户名密码等.
提供自动登陆方法.判断有cookies就帮他登陆写好session
我们都是这样来做的,session和Cookie配合使用
session是保存在服务器的 cookic保存在客户端
要是服务器有集群管理, 服务器容量够大, 放在session里.一般情况下,客户端的cookie是不禁止的. 要是说访问量很大, 服务器也很小, 放在cookie里. 这个问题还是要具体分析.
用Cookie只保存一个用户名在客户端,密码就不要保存了
加密什么的也危险(如果安全系数要求高)不过这样的缺点就是,如果黑客知道你的网站要求什么样的Cookie,就可以构造管理员的用户名实现登录要安全一点,就把用户名和用户IP什么的合并加密,保存一个加密字符串到客户端Cookie同样,如果黑客知道这个加密字符串,并把自己的数据包IP改成这个IP,一样可以登录总结:想实现自动登录,安全性就不可能太高
这是安全与易用性的矛盾之处
using System.Diagnostics;
using System.Security.Cryptography;
using System.Text;
using System.IO;
using System.Web;namespace Press
{
public class CryptoUtil
{
public static byte[] KEY_64 = { 42, 16, 93, 56, 78, 4, 218, 223 };
public static byte[] IV_64 = { 55, 103, 46, 79, 36, 89, 167, 3 }; private static byte[] KEY_192 = { 42, 16, 93, 156, 78, 4, 218, 32, 15, 167, 44, 80, 26, 250, 155, 112, 2, 94, 11, 204, 119, 35, 184, 197 };
private static byte[] IV_192 = { 55, 103, 246, 79, 36, 99, 167, 3, 42, 5, 62, 83, 184, 7, 209, 13, 145, 23, 200, 58, 173, 10, 121, 222 }; //标准的DES加密
public static string Encrypt(string value1)
{
if (value1 != "")
{
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(KEY_64, IV_64), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cs);
sw.Write(value1);
sw.Flush();
cs.FlushFinalBlock();
ms.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
return "";
} //标准的DES解密
public static string Decrypt(string value1)
{
if (value1 != "")
{
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
byte[] buffer = Convert.FromBase64String(value1);
MemoryStream ms = new MemoryStream(buffer);
CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateDecryptor(KEY_64, IV_64), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
return "";
}
} public class CookieUtil
{
public const string COOKIENULL = null; public static void SetEncryptedCookie(string key, string val)
{
key = CryptoUtil.Encrypt(key);
val = CryptoUtil.Encrypt(val);
SetCookie(key, val);
}
public static void SetEncryptedCookie(string key, string val, DateTime expires)
{
key = CryptoUtil.Encrypt(key);
val = CryptoUtil.Encrypt(val);
SetCookie(key, val, expires);
}
public static void SetEncryptedCookie(string key, string val, int DayNum)
{
key = CryptoUtil.Encrypt(key);
val = CryptoUtil.Encrypt(val);
DateTime expires = DateTime.Now.AddDays(DayNum);
SetCookie(key, val, expires);
}
#region///SetCookie
private static void SetCookie(string key, string val)
{
key = HttpContext.Current.Server.UrlEncode(key);
val = HttpContext.Current.Server.UrlEncode(val);
HttpCookie cookie = new HttpCookie(key, val);
SetCookie(cookie);
}
private static void SetCookie(string key, string val, DateTime expires)
{
key = HttpContext.Current.Server.UrlEncode(key);
val = HttpContext.Current.Server.UrlEncode(val);
HttpCookie cookie = new HttpCookie(key, val);
cookie.Expires = expires;
SetCookie(cookie);
}
private static void SetCookie(HttpCookie cookie)
{
HttpContext.Current.Response.Cookies.Set(cookie);
}
#endregion
public static string GetEncryptedCookieValue(string key)
{
key = CryptoUtil.Encrypt(key);
string val = GetCookieValue(key);
if (val == COOKIENULL)
return COOKIENULL;
val = CryptoUtil.Decrypt(val);
return val;
}
#region///GetCookie
private static HttpCookie GetCookie(string key)
{
key = HttpContext.Current.Server.UrlEncode(key);
return HttpContext.Current.Request.Cookies.Get(key);
}
private static string GetCookieValue(string key)
{
try
{
string val = GetCookie(key).Value;
val = HttpContext.Current.Server.UrlDecode(val);
return val;
}
catch
{
return COOKIENULL;
}
}
#endregion
}
}
不知所云,Cookie能放到内存吗!
现在一般的网站都有保存密码的功能,也就是下次在访问的时候不需要在登陆.这些事通过Cookie实现的,这样来说对于公共场合的电脑对于用户来说是相当不安全的.而且有些浏览器禁用Cookie,难道就不允许用户登陆了吗?所以保存一个用户是否登录来说采用Session中存值是一个好方法.
查看是否登录用的是session,
如果要保存密码之类的那么用cookies
比较同意他的观点
1. 如果需要客户端保存密码,那么必须用cookie,当然,密码+用户名+ts要做加密,可以使用RSA128,MD5就算了吧,听说 被
被王老师给破了,安全要求高的话,考虑一下是否还要提供保存密码的易用性功能...... 而且每次加密解密一下,也需要运算的
2. cookie还是要和session结合一下,cookie也就保存一个sessionid,其他的都使用session,session保存的内容
不要太多,一些pk足矣了吧,再不行把username等保存一下也就得了,你的订单什么的,还是仍到cookie里面吧,但是
也要注意,cookie太大了,也是要增加流量的,还不如直接塞到session里面去,我想你的webserver解析cookie
的时候,也需要时间吧,时空性能问题,还是要具体情况具体分析了
Session有生命周期的,默认是用户最后一次操作后20分钟后,
该Session自动退出会话。
1、安全性比较高
2、不容易出现丢失访问量大还是用Cookie
1、用户每次登陆时,创建一个Guid分配给客户端
2、客户端只在Cookie中保存这个Guid
3、数据库中保存该用户的Guid及最后登陆时间
4、最后登陆时间用计算Guid的过期时间
只保存了Guid,每次登陆都会更换,保证了账号的安全另外还有个 Flash 的Cookie#SharedObjects
能够实现次数据保存在客户电脑里
一般的清除Cookie及删除临时文件,都不会清理该数据