SessionID的问题

问题描述

给Session设置过期时间,关闭浏览器,Session并不会失效,重新打开浏览器,会新建一个Session,但之前那个Session还在,我想用户重新打开浏览器再调用之前这个Session,我做投票功能,希望一个用户一天只能投一次票。(思路我已大概了解了,需要看一下调用的简单代码,在后台怎么调用之前的Session,Session.SessionID)

解决方案

解决方案二:
SessionId是唯一的,重新打开浏览时会生成新的SessionID关于做投票系统直接判断外网的IP就行!防止一个局域网无限刷票
解决方案三:
没有用户名密码你如何知道是否是同一用户访问。有了用户名密码,那还要Session何用,每个用户名一天一次即可。现在的防刷票,除非注册和投票有门槛,不然都是防君子防不了小人
解决方案四:
你可以通过cookie来解决这个问题。
解决方案五:
引用3楼hanjun0612的回复:

你可以通过cookie来解决这个问题。

cookie更不靠谱,随便删
解决方案六:
改用cookie吧,浏览器关闭后再打开向服务端提交数据时只会带上未过期的cookie不会带上sessionid。
解决方案七:
锁IP地址
解决方案八:
引用2楼xdashewan的回复:

没有用户名密码你如何知道是否是同一用户访问。有了用户名密码,那还要Session何用,每个用户名一天一次即可。现在的防刷票,除非注册和投票有门槛,不然都是防君子防不了小人

因为是匿名投票,不用注册的,所以想用sessionID做判断
解决方案九:
引用7楼zhushijie123的回复:

因为是匿名投票,不用注册的,所以想用sessionID做判断

那你只能根据ip地址来判断是否同一用户,而且我也说了这样做只能防君子,ip是可以换的
解决方案十:
引用4楼wangjun8868的回复:

Quote: 引用3楼hanjun0612的回复:
你可以通过cookie来解决这个问题。

cookie更不靠谱,随便删

现在不是很多网站用Session和cookie一起使用来保持用户再打开浏览器里的登录状态的,他们是怎么解决安全问题?
解决方案十一:
sessionID是不可能实现“一个用户一天只能投一次票”,相反cookie才是你的需要。任何轻易改变、获得的信息作为判断的,都是君子判断。
解决方案十二:
引用1楼wangjun8868的回复:

SessionId是唯一的,重新打开浏览时会生成新的SessionID关于做投票系统直接判断外网的IP就行!防止一个局域网无限刷票

怎么获取外网IP和MAC地址?
解决方案十三:
引用10楼fei2yun的回复:

sessionID是不可能实现“一个用户一天只能投一次票”,相反cookie才是你的需要。任何轻易改变、获得的信息作为判断的,都是君子判断。

session不可能,cookie一样可以改,怎么办?
解决方案十四:
引用12楼zhushijie123的回复:

Quote: 引用10楼fei2yun的回复:
sessionID是不可能实现“一个用户一天只能投一次票”,相反cookie才是你的需要。任何轻易改变、获得的信息作为判断的,都是君子判断。

session不可能,cookie一样可以改,怎么办?

可靠性(递增)session->cookie->IP->User、微信、微博、QQ、邮件等第三方帐号->手机短信信息级别不一样,那需求也不一样,根据自己的需要去做
解决方案十五:
调用不了的,当浏览器关闭之后,seesionID就会掉失。。你可以把投票行为记录在COOKIES内面也行。。如果,你要真正的做到不让用户作假的。。就需要记录在数据库内面。。用户投票之前检查数据库记录
解决方案:
cookie保存客户信息对cookie进行加密也没这么多人无论去破解一个投票的吧
解决方案:
引用14楼CSMSDN的回复:

调用不了的,当浏览器关闭之后,seesionID就会掉失。。你可以把投票行为记录在COOKIES内面也行。。如果,你要真正的做到不让用户作假的。。就需要记录在数据库内面。。用户投票之前检查数据库记录

没懂,记录什么东西在数据库里?seesion吗?用户重新打开浏览器后是新建的seesion的啊
解决方案:
引用1楼wangjun8868的回复:

SessionId是唯一的,重新打开浏览时会生成新的SessionID关于做投票系统直接判断外网的IP就行!防止一个局域网无限刷票

怎么获取外网IP?用Request.UserHostAddress吗?
解决方案:
引用6楼zhuankeshumo的回复:

锁IP地址
解决方案:
外网IP也不靠普,现在的个人用户一般都是动态ip,重新拨号,ip就变了。如果是匿名投票,可以的话发送手机验证码之类的,不行的话,用ip还是用cookie就无所谓了,防君子不防小人。
解决方案:
按yi_iy说的干,把用户信息和投票信息加密到Cookie,让他伪造无门,投票的时候检查Cookie,为空99%都是有“目的”的。
解决方案:
我现在就想弄懂一个问题,我把Session设置过期时间并把SessionID存到cookie里了,关闭浏览器,Session并没失效,用户重新打开浏览器时判断cookie里的SessionID是否存在,我就想看看这判断的代码,有人能写给我看一下吗?
解决方案:
不要什么session,写个最后投票时间进去判断就可以了,写的数据加密。
解决方案:
引用11楼zhushijie123的回复:
Quote: 引用1楼wangjun8868的回复:
SessionId是唯一的,重新打开浏览时会生成新的SessionID关于做投票系统直接判断外网的IP就行!防止一个局域网无限刷票

怎么获取外网IP和MAC地址?

只能获取客户端IP(Request.UserHostAddress)MAC获取不到(局域网可以获取MAC)
解决方案:
引用20楼wq1234wq的回复:

按yi_iy说的干,把用户信息和投票信息加密到Cookie,让他伪造无门,投票的时候检查Cookie,为空99%都是有“目的”的。

我要是把cookie删了呢?下次打开浏览器一样可以继续投票
解决方案:
引用12楼zhushijie123的回复:

Quote: 引用10楼fei2yun的回复:
sessionID是不可能实现“一个用户一天只能投一次票”,相反cookie才是你的需要。任何轻易改变、获得的信息作为判断的,都是君子判断。

session不可能,cookie一样可以改,怎么办?

cookie中只是保存一个随机分配的唯一key,例如值为l2lasf8d9fq9834jqkakfo32r2@#$!@#ksdjfa,这怎么改?Session集合也不是保存在什么浏览器端的,你不是还是能用么?那么稍微“自己动手”一点点,在cookie中保存一个唯一key就可以了,服务器端可以自己设计,例如使用“投票key、购物车key、.....key”去索引查询数据库记录。
解决方案:
纠结一切可能性,实际上是没有头的。比如你可能纠结用户有3台电脑(我家里就有2台pc、4台笔记本、5个android手机、一个苹果手机在可以同时上网投票),你也可能纠结程序员或许会租10台服务器,安装2000个轻量虚拟机,写一个应用模拟50000人来投票。纠结这些的结果,就是从业务出发。例如人家业务人员可能要求用户先登录(例如用微信扫码登录,避免流氓登录)然后再投票。这就是从业务思路触发,它假设程序员都是那种榆木脑袋的人。
解决方案:
纠结这些的结果,就是从业务出发。-->纠结这些的结果,就是从技术出发。单纯看技术,不算什么东西。
解决方案:

解决方案:
引用24楼wangjun8868的回复:

Quote: 引用20楼wq1234wq的回复:
按yi_iy说的干,把用户信息和投票信息加密到Cookie,让他伪造无门,投票的时候检查Cookie,为空99%都是有“目的”的。

我要是把cookie删了呢?下次打开浏览器一样可以继续投票

删掉的多数都是刷票的人,我可以确定的告诉你。现在上网的人有多少会用隐身模式浏览网页的或者专门针对你禁用cookie的,你直接提示他不能投票,需要打开Cookie。
解决方案:

解决方案:
兄弟做投票啊,以前做过许多1、一般用cookie+session,可以挡住大部分不太懂计算机的人2、用IP控制不现实,Request.UserHostAddress是外网的IP,比如一个单位拉一条专线(一个固定IP),单位内部用一系列路由器分配到多个办公室,这个语句获得的是这个固定IP,而不是电脑中的实际IP;你限制了这个IP只投票一次,那么,整个单位有一人投过后,其他人都不行了3、记录MAC更不现实,客户端的js默认不允许访问本机信息,需要客户允许浏览器执行脚本,多数用户不会操作,同样,写个ActiveX嵌入到浏览器,又得需要用户允许下载它,并执行它……4、我还尝试过写个插件修改浏览器设置,但是,客户的浏览器改了后,怎么改回来?5、验证码也不管用6、还尝试过回答问题,成本太高,作罢如果要求严格,你可以考虑短信验证;或者用身份证验证,你得取得当地居民的身份证号,单向加密(MD5)后放到服务器,采用https方式,经过有关部门的同意,就可以实施
解决方案:
cookie+session方式,还有就是防止刷票软件,这是最头疼的,这些刷票软件的功能足够强大,我曾经监控过的。这种情况,需要统计投票密度了,例如1分钟内投进去1000票,就有问题了,需要你跟举办方协商,这个很重要,然后就采取一定措施

时间: 2023-01-01

SessionID的问题的相关文章

asp net session-cookieless设置为true后导致的sessionID每次都变化的问题

问题描述 cookieless设置为true后导致的sessionID每次都变化的问题 问大神们一个问题,我把cookless设置为true了,现在sessionID存在URL里面了,可是为什么刷新页面这个sessionID都会变呢,不是说一个会话的sessionID是不变的吗 解决方案 可能是没有在Session里面保存任何信息引起的,即程序中任何地方都没有使用Session.当Session中保存信息之后SessionID将一直和浏览器相关,此时的SessionID将不会在变化. 解决方案二

ASP.NET 1.1 无 Cookie SessionID 重写

asp.net|cookie|session 浏览器的会话使用存储在 SessionID 属性中的唯一标识符进行标识.会话 ID 使 ASP.NET 应用程序能够将特定的浏览器与 Web 服务器上相关的会话数据和信息相关联.会话 ID 的值在浏览器和 Web 服务器间通过 Cookie 进行传输,如果指定了无 Cookie 会话,则通过 URL 进行传输. ASP.NET 通过自动在页的 URL 中插入唯一的会话 ID 来保持无 Cookie 会话状态.例如,下面的 URL 已被 ASP.NET

生成sessionid和随机密码的例子

用这个可以来验证用户和生成随机密码--teaman <?         //----------------------------------------------------         // Function GetSID()         //         // Parameters : $nSize number of caracters, default 24         // Return value : 24 caracters string         /

SessionID

session SessionID 属性返回用户的会话标识.在创建会话时,服务器会为每一个会话生成一个单独的标识.会话标识以长整形数据类型返回. 语法Session.SessionID 注释不要用 SessionID 属性为数据库应用程序创建主关键字.这是因为,如果 Web 服务器重新启动,则部分 SessionID 的值可能同服务器终止前产生的值相同.可以使用自动增加的列数据类型来代替,如 Microsoft SQL Server 中的 IDENTITY,或 Microsoft Access

URL中允许携带sessionid带来的安全隐患

很多WEB开发语言为了防止浏览器禁止了cookie而无法识别用户,允许在URL中携带sessionid,这样虽然方便,但却有可能引起钓鱼的安全漏洞. 图示: 下图是从测试组发来的安全报告中剪出来的,图有些小问题,本来想重画1个,在visio中没找到合适的图.所以只能用别人的图了. 说明: 让我们对上图的步骤进行详细说明: 1. 黑客用自己的帐号登录,假设登录页面是:http://www.abc.com/login.jsp 2. 服务器返回登录成功. 3. 黑客从cookie中查看自己的sessi

通过SessionID和用户名来保证同一个用户不能同时登录

可以通过SessionID和用户名来保证同一个用户不能同时登录的问题,下面程序模仿了 QQ的登录,当登录后判断当前帐号是否已经登录,如果登录.则踢掉以前登录的用户. 1.通过Application全局变量来存储SessionID和用户名,每次登录时都保存,并且将 该Application存入 Hashtable中,当用户登录成功后,首先判断该用户是否已经存储在 Application中,如果存在(说明已经登录),则将该用户对应的值设置为 XX(值为无用 ). 代码 protected void

四层负载 sessionid-四层负载均衡 sessionid 每次都不一样

问题描述 四层负载均衡 sessionid 每次都不一样 使用四层负载均衡 负载均衡先到nginx nginx在转发给tomcat 发现后台 request.getsession().getid()的值 每次都不一样 感觉很奇怪 我是把session存在 redis中 sessionid 作为key按道理 应该是一样的 我在一个页面输入不同的url 难道是四层负载的问题吗? 导致 session 每次都新建? 解决方案 session 是保存在服务器里的应用,需要看你的url 是不是同一个页面,

数据-android 每次请求服务器的sessionid不一样

问题描述 android 每次请求服务器的sessionid不一样 我用的是KJFrameForAndroid写的,请求过去的登陆sessionid 与请求消息数据获取的sessionid不同,这样在服务器就如同没有登陆去获取 消息数据,这是不行的,大家有什么办法可以解决呢?

android 请求服务器-android发送请求到服务器,每次sessionid不同,怎么让它相同

问题描述 android发送请求到服务器,每次sessionid不同,怎么让它相同 我做了一个测试,如下图,在网上看到的帖子是设置cookie,在cookie中携带sessionid,但是还是不行呀,哪位大神帮忙看看? 解决方案 sessionid除了可以放在cookie之中,还可以放在URL参数中呀.如果Android端没保存cookie,或每次发送请求没带上cookie,服务器端都只好重新给它一个啦. 解决方案二: sessionid除了可以放在cookie之中,还可以放在URL参数中呀.如

url-web 会话跟踪 sessionid URL重写

问题描述 web 会话跟踪 sessionid URL重写 请教一个URL重写的问题 在禁用cookie的情况下,比如有一个页面A,在A里面的链接,跳转等等,加上response.encodeURL...来传递sessionid.不错,在这些链接过去的地方是能得到同一个sessionid,但是我每次访问A 这个页面的时候,sessionId还是会变的啊?怎么办? 解决方案 使用 URL 重写跟踪会话URL重写实现会话跟踪URL重写实现会话跟踪 解决方案二: 这么长时间没人回答???