急....请问Form身份验证会不会有安全问题?

时间:2022-01-17 06:11:30
我正在做一个商业网站,涉及到现金交易,整个工程都是用Form身份验证<authentication mode="Forms" /> ,可是我突然想到,Form身份验证是基于Cookie的,而Cookie是完全保存在客户端的,会不会某些不良用户,通过修改Cookie来跳过身份验证?

我每个页面都像下面这样来验证用户身份:
if (User.Identity.IsAuthenticated)
{
    这里判定用户是否登录
}

string userid=User.Identity.Name.ToString();//这里来获得用户ID


请问像这样判定用户的身份,是否存在安全隐患?
如果真的存在安全问题,请各位老大指点一下,在.net中,什么样的身份验证,在保证性能的前提下,是最安全的?

40 个解决方案

#1


不知道什么原理的,也想了解一下

#2


你认为你可能伪造cookie?

#3


把cookie加密,但是要保证绝对的安全好像不可能!

#4


很不安全阿 !!! 看可看duwamish的方案 很不错啊

#5


to:conquersky

   请问duwamish的方案在哪里机以找到?给个链接,,谢谢.

#6


.............

#7


duwamish
vs.net文档里面有的,文档中搜索duwamish7.0

#8


up

#9


帮你顶

#10


我也觉得不够安全,虽然可以加密,但保存在客户端还不是很好,我还是更倾向于用Session

#11


如果换用Session是否就肯定安全了呢?

#12


至少可以避免用户自己修改cookie带来的风险

#13


如果把用户ID放到Session["userid"],每个页面都通过这个Session来判断用户身份,是否就肯定安全了????

#14


我是把权限放在SESSION里面,呵呵。
这个应该比较安全吧。
而且一般都不用FROM来验证,觉得麻烦,可能是了解不够多。

#15


用户ID放到Session["userid"]

#16


session=cookie????

#17


我还是喜欢表单验证方便啊
既然微软出了这些高级技术为什么不用呢

#18


session不安全,我的下载用session做验证被人破解了

#19


Mark~

#20


顶,我在MSDN看到,.net的身份验证的几种方法,像我这种情况,用户名和密码存放在数据库中,提供登录表单给用户登录,最好的,也只能用FORM验证,FORM验证的原理是,只要客户端通过验证,服务器端向客户端发送一段Cookie,以后每次客户端向服务器提交数据,都会把这段Cookie放在请求的数据前面,来确认是否以通过验证,并可以通过每次数据传输都用SSL来防止黑客通过监听工具,获取并伪装这个Cookie。。。。
但是,这样做开销也推大了点,,,,哪位高手可以给我个完美的解决方案???再给几百分也是没问题的。小弟不胜感激。

#21


也正在研究form的cookie帮你顶一下?

#22


cookie可以用sha和md5加密,
但是不知道可以不可以多加几层密码?

#23


继续顶,没有人指点,我将再发一个百分帖,分不是问题的.

#24


加密要进行复杂一些的加密,如:把cookie的值混合用户名、混合客户端的ip一起进行加密!这样的话就很难破解了!

#25


關注!!

#26


gz

#27


up

#28


帮你顶,
顶到版主看到为止!

#29


哥们你有好方法和我告诉我一下啊!
我也在研究

#30


相当危险

#31


session+forms认证相结合,在redirect页面通过验证时写session,在保护页面发现session没有了,就signout:
if(Session["sUserName"]==null) 
{
FormsAuthentication.SignOut();
return;
}

#32


//对用户密码进行加密
SHA1 sha1 = SHA1.Create();
byte[] m_password = sha1.ComputeHash(Encoding.Unicode.GetBytes(password));

#33


加一个安全层,这样会好很多!

#34


不太明白,都是高人,学习

#35



牵涉到现金交易的话应该 SESSION 和 FORM同时使用


SESSION保存在服务器上,安全性高,判断内容是否 = 数据库中MD5加密后密码+WEB.CONFIG中明文代码(可以不定期更改长度内容)

#36


理解,顶一下。两者结合呀

#37


session和cookies结合  cookies机密!

#38


\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\Duwamish 7.0 CS Duwamish的例子在你机器的这个位置

#39


感觉不会

#40


微软的东西就是表面安全实质不安全

#1


不知道什么原理的,也想了解一下

#2


你认为你可能伪造cookie?

#3


把cookie加密,但是要保证绝对的安全好像不可能!

#4


很不安全阿 !!! 看可看duwamish的方案 很不错啊

#5


to:conquersky

   请问duwamish的方案在哪里机以找到?给个链接,,谢谢.

#6


.............

#7


duwamish
vs.net文档里面有的,文档中搜索duwamish7.0

#8


up

#9


帮你顶

#10


我也觉得不够安全,虽然可以加密,但保存在客户端还不是很好,我还是更倾向于用Session

#11


如果换用Session是否就肯定安全了呢?

#12


至少可以避免用户自己修改cookie带来的风险

#13


如果把用户ID放到Session["userid"],每个页面都通过这个Session来判断用户身份,是否就肯定安全了????

#14


我是把权限放在SESSION里面,呵呵。
这个应该比较安全吧。
而且一般都不用FROM来验证,觉得麻烦,可能是了解不够多。

#15


用户ID放到Session["userid"]

#16


session=cookie????

#17


我还是喜欢表单验证方便啊
既然微软出了这些高级技术为什么不用呢

#18


session不安全,我的下载用session做验证被人破解了

#19


Mark~

#20


顶,我在MSDN看到,.net的身份验证的几种方法,像我这种情况,用户名和密码存放在数据库中,提供登录表单给用户登录,最好的,也只能用FORM验证,FORM验证的原理是,只要客户端通过验证,服务器端向客户端发送一段Cookie,以后每次客户端向服务器提交数据,都会把这段Cookie放在请求的数据前面,来确认是否以通过验证,并可以通过每次数据传输都用SSL来防止黑客通过监听工具,获取并伪装这个Cookie。。。。
但是,这样做开销也推大了点,,,,哪位高手可以给我个完美的解决方案???再给几百分也是没问题的。小弟不胜感激。

#21


也正在研究form的cookie帮你顶一下?

#22


cookie可以用sha和md5加密,
但是不知道可以不可以多加几层密码?

#23


继续顶,没有人指点,我将再发一个百分帖,分不是问题的.

#24


加密要进行复杂一些的加密,如:把cookie的值混合用户名、混合客户端的ip一起进行加密!这样的话就很难破解了!

#25


關注!!

#26


gz

#27


up

#28


帮你顶,
顶到版主看到为止!

#29


哥们你有好方法和我告诉我一下啊!
我也在研究

#30


相当危险

#31


session+forms认证相结合,在redirect页面通过验证时写session,在保护页面发现session没有了,就signout:
if(Session["sUserName"]==null) 
{
FormsAuthentication.SignOut();
return;
}

#32


//对用户密码进行加密
SHA1 sha1 = SHA1.Create();
byte[] m_password = sha1.ComputeHash(Encoding.Unicode.GetBytes(password));

#33


加一个安全层,这样会好很多!

#34


不太明白,都是高人,学习

#35



牵涉到现金交易的话应该 SESSION 和 FORM同时使用


SESSION保存在服务器上,安全性高,判断内容是否 = 数据库中MD5加密后密码+WEB.CONFIG中明文代码(可以不定期更改长度内容)

#36


理解,顶一下。两者结合呀

#37


session和cookies结合  cookies机密!

#38


\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\Duwamish 7.0 CS Duwamish的例子在你机器的这个位置

#39


感觉不会

#40


微软的东西就是表面安全实质不安全