首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JSP 防止网页刷新重复提交数据

,form提交后重新生成一个新的令牌,将用户提交的令牌和session  中的令牌比较,如相同则是重复提交 3 在你的服务器端控件的代码中使用Response.Redirect("selfPage"...这样,当表单提交时(此时SompePage.asp被打开),我们必须赋予FirstTimeToPage一个值。...不过我注意到,如果使用这种方法,虽然用户点击一下后退按钮时他不会看到以前输入数据的页面,但只要点击两次就可以,这可不是我们希望的效果,因为很多时候,固执的用户总是能够找到绕过预防措施的办法。     ...一种更安全但相当恼人的方法是,当表单提交时打开一个新的窗口,与此同时关闭表单所在的窗口。但我觉得这种方法不值得认真考虑,因为我们总不能让用户每提交一个表单就打开一个新窗口。      ...那么,在那个我们不想让用户返回的页面是否也可以加入JavaScript代码呢?在这个页面中加入的JavaScript代码可用来产生点击前进按钮的效果,这样也就抵消了用户点击后退按钮所产生的动作。

11.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    高性能伪事务之Lua in Redis

    也就是说,脚本应该具有以下属性: 对于同样的数据集输入,给定相同的参数,脚本执行的 Redis 写命令总是相同的。...这意味着,每次运行脚本时,只要不使用 math.randomseed ,那么 math.random 产生的随机数序列总是相同的。...)还是大端(big endian)系统,这两个函数的输出总是相同的。...在Lua脚本中调用Redis命令有两种方式,一种是如上边例子中的redis.call,另一种是redis.pcall。两者的区别是,当发生异常时,call会抛出异常终止程序,并返回错误信息。...所以,如果需要返回浮点型的数值,需要转成Lua的string类型返回。 Lua的数组中基本上不会出现nils,所以在将Lua数组转到Redis类型时,当遇到nil,转换即停止。

    2.3K20

    HTML5离线缓存攻击测试(二)

    据我理解,按照标准当浏览器请求manifest文件时,若没有请求到,或者文件发生改变,应当不使用缓存,进行缓存更新的,然而实验的结果并不总是这样。...(很郁闷相同的操作为啥有时候结果不一样,不过大部分还是造成了离线缓存攻击的效果。)...再次请求时抓包如下图,发现请求appcache文件后,尽管百度返回了302的错误页,但是浏览器没有跳转,仍然保持了离线缓存的页面,实现了缓存中毒的效果。...由于支付宝是HTTPS,而小白我还不会搭建HTTPS……所以只用HTTP做了离线缓存攻击,当出现下面这页面时我惊呆了…安全软件在逗我么… 当回到正常环境时,用http访问支付宝页面会自动被302重定向到...另外,当访问过https的一个域名时,浏览器firefox会默认访问https,而不能访问http,这可以在浏览器的站点设置那里删除记录。实验时特别注意dns缓存和浏览器本身缓存的影响。

    2K60

    面试必问,如何保证接口的幂等性?

    思路1:token验证机制 第一步:当客户端请求页面时,服务器会生成一个随机数token,并且将token放置到session当中。...第三步:下次客户端提交请求时,token会随着表单一起提交到服务器端。...服务器端第一次验证相同过后,会将session中的token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的token没变,但服务器端session中token已经改变了。...就比如我们最常见的: 订单服务 —> 库存服务 (PRC远程调用(服务接口)) 因为分布式部署,很有可能在调用库存服务时,因为网络等原因,订单服务调用失败,但其实库存服务已经处理完成,只是返回给订单服务处理结果时出现了异常...update t_goods set count = count - where good_id= 相当于这个时候,库存已经减掉了,但是,因为返回的时候,出现了错误,又减了一次库存,这就离谱了,到时候发现商品库存不够了

    44611

    【软件架构】支持大规模系统的设计模式和原则

    一个可靠的系统以一种努力避免故障的方式构建,当它不可能时,它会检测、报告,甚至可能尝试自动修复它们。...拥抱异步 当我们进行同步调用时,执行路径会被阻塞,直到返回响应。这种阻塞有资源开销,主要是内存和上下文切换的成本。我们不能总是只使用异步调用来设计我们的系统,但是当我们可以让我们的系统更高效时。...假设一切正常,它应该返回 HTTP 代码 200,如果服务出现故障,它应该返回 500 错误。...断路器 断路器是从电力领域借用的术语:当电路闭合时,电流正在流动,当电路打开时,电流停止。 当一个依赖不可达时,所有对它的请求都会失败。...这样,当服务 B 想要调用服务 A 时,它会首先调用服务发现来请求可用节点 (IP) 的列表,它将缓存并使用一段时间。 超时、睡眠和重试 任何网络都可能遭受瞬时错误、延迟和拥塞问题。

    58120

    这才叫 API 接口设计!

    API 接口设计 作者:InfoQ Man Token 设计 Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个 Token 便将此 Token 返回给客户端...Token 作为 key 将一些和 Token 关联的信息作为 value 保存到如 Redis 缓存数据库中,同步把该 Token 返回给客户端;后续该客户端的请求都需要带上这个 Token,服务器收到请求后就会去缓存服务器中匹配这个...Token 是否存在,存在则调用接口,不存在返回接口错误。...这个时候我们可以把解密后的 URL 参数中的时间戳与系统时间进行比较,如果时间差超过一定间距(如 5 分钟)即认为该报文被劫持并返回错误。...客户端在第一次访问服务端时,服务端将 sign 缓存到 Redis 中并把有效时间设定为跟时间戳的超时时间一致;如果有人使用同一个 URL 再次访问,如果发现缓存服务器中已经存在了本次的 sign,则拒绝服务

    2.8K30

    原 GetHashCode重写指南(译文)

    然而,这只是个理想情况,实际上确是: Rule:当对象包含在依赖于哈希代码保持稳定的数据结构中时, GetHashCode 返回的整数决不能更改 使一个对象的hash值随着对象的字段变化而变化是可行的,...不要将字符串哈希存储在数据库中, 并期望它们永远相同。事实上有人在这上面吃过亏。 Rule: GetHashCode禁止抛出异常,必须要有返回值 获取哈希代码只计算一个整数;没有任何理由能让它失败。...十多年前, 我为 msn.com 后端服务器使用的表编写了一个字符串哈希算法。我认为这是一个合理的随机分布的算法, 但我犯了一个错误, 它不是。...当数据结构存在冗余时,异或可以产生或加剧分发问题。...hash表中用于服务端分析,如果用户怀有敌意, 并且故意制造大量的数据, 总是对同一桶进行哈希运算, 那么他们就可以通过使服务器浪费大量时间查看不平衡的哈希表来对服务器发起拒绝服务攻击。

    1.1K60

    面试必问,如何保证接口的幂等性?

    思路1:token验证机制 第一步:当客户端请求页面时,服务器会生成一个随机数token,并且将token放置到session当中。...第三步:下次客户端提交请求时,token会随着表单一起提交到服务器端。...服务器端第一次验证相同过后,会将session中的token值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的token没变,但服务器端session中token已经改变了。...就比如我们最常见的: 订单服务 —> 库存服务 (PRC远程调用(服务接口)) 因为分布式部署,很有可能在调用库存服务时,因为网络等原因,订单服务调用失败,但其实库存服务已经处理完成,只是返回给订单服务处理结果时出现了异常...update t_goods set count = count -1 where good_id=22 相当于这个时候,库存已经减掉了,但是,因为返回的时候,出现了错误,又减了一次库存,这就离谱了,到时候发现商品库存不够了

    59410

    阿里云一面:HTTP 1.0 和 HTTP 1.1 有什么区别?

    HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。...服务器端在初次返回给客户端的响应体中,有一个Last-Modified标签,该标签标记了被请求资源在服务器端的最后一次修改。...也就是说在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。...内容编码总是端到端的,传输编码总是逐跳的。 HTTP/1.0包含了Content-Encoding头部,对消息进行端到端编码。...状态响应码 : HTTP/1.1中新加入了大量的状态码,光是错误响应状态码就新增了24种。

    52820

    Redis事物的设计与实现

    事务状态下的 DISCARD 、 MULTI 和 WATCH 命令 除了 EXEC 之外, 服务器在客户端处于事务状态时, 不加入到事务队列而直接执行的另外三个命令是 DISCARD 、 MULTI 和...Redis 的事务是不可嵌套的, 当客户端已经处于事务状态, 而客户端又再向服务器发送 MULTI 时, 服务器只是简单地向客户端发送一个错误, 然后继续等待其他命令的入队。...入队错误 在命令入队的过程中,如果客户端向服务器发送了错误的命令,比如命令的参数数量不对,等等, 那么服务器将向客户端返回一个出错信息, 并且将客户端的事务状态设为 REDIS_DIRTY_EXEC 。...当客户端执行 EXEC 命令时, Redis 会拒绝执行状态为 REDIS_DIRTY_EXEC 的事务, 并返回失败信息。...所以当 RDB 模式下的 Redis 服务器进程在事务中途被杀死时,事务内执行的命令,不管成功了多少,都不会被保存到 RDB 文件里。

    58220

    Java Web项目登录报Session Error

    很多人在登陆的时候会发现报错: 弹框错误信息是:Session Error 解决办法是先打开 WEB-INF/web.xml文件 dwr-invoker...crossDomainSessionSecurity false * ---- 至于原因,总是有人纠结于为什么...原因一: 这是因为同源策略的问题,为了WEB环境的安全,在WEB脚本语言中不允许读取不同源的数据,同源包括相同协议,相同域名和相同端口三个条件,而ajax的异步处理方式跳过了这个限制,为了安全限制,它设置为...原因二: 如果使用到了dwr,那就有可能是DWR的版本与服务器Tomcat不兼容的问题。要么升级DWR版本,要么是降低Tomcat的版本。...但是也可以采用我在上面加入的那句配置,也可以解决,只是验证的安全性能不太好!

    1.1K20

    通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行

    然后,它会在下一个紧相邻的请求中返回相同的会话 ID(即,相同的 Set-Cookie 标头),即使该请求已经与一个有效的会话相关联并且正确提交了 Cookie 中的会话 ID。...此后,它运行了两年多都没有发生任何错误。在具有不同应用程序和一组不同 Web 服务器的另一家公司中,我们看到完全相同的问题也消失了。就像在 Contoso.com 一样,消除输出缓存就能解决问题。...图 5 消除不必要的会话状态数据库访问 那么您应该怎么办呢?很简单:禁用不使用会话状态的页中的会话状态。这样做总是一个好办法,但是当会话状态存储在数据库中时,该方法尤其重要。...当请求排队时,性能会急剧下降。如果队列已满,则 ASP.NET 会使随后的请求失败并出现 HTTP 503 错误。这种情况不是我们希望在 Web 生产服务器的生产应用程序上所乐见的。...对异步页面的请求从一个线程上开始,但是当它开始一个 I/O 操作时,它将返回该线程以及 ASP.NET 的 IAsyncResult 接口。

    3.6K80

    lua脚本操作redis数据库

    lua数组的形式返回key1,key2和value1,value2,2是key的个数. lua函数 主要有两个函数来执行redis命令 redis.call() – 出错时返回具体错误信息,并且终止脚本执行...redis.pcall() –出错时返回lua table的包装错误,但不引发错误 举例说明: 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV...lua数据结构,当然了,当lua脚本在redis的内置解释器里运行时,lua脚本的返回值也会被转换成redis数据结构,然后由EVAL将值返回给客户端....EVALSHA命令的机制如下: + 如果服务器记得SHA1校验和指定的脚本,那么执行该脚本 + 如果服务器不记得SHA1校验和指定的脚本,那么它返回一个错误,提醒用户使用EVAl代替EVALSHA...因此在脚本主体不变的情况下使用EVALSHA,可以使脚本复用,而节省带宽 lua脚本要求 脚本需要被写成纯函数 对于同样的数据输入,给定相同的参数,脚本执行的redis写命令的结果总是相同的.

    2.4K50

    理解Go语言Web编程(下)

    这样如果不借助像Nginx这样的反向代理,也可以限定我们的网站只为特定域名服务,而当其他不相关的域名也指向本服务器IP地址后,通过该域名访问此服务器将返回一个404 site not found页面。...当有人在社区中问究竟该使用哪个Go语言Web框架时,总会有人回答说使用net/http包自身的功能就是不错的选择,这种回答实际上就是自己按照以上讲述的方法编写各种具体功能的Handler,并使用网上已有的各种中间件...除此之外,我们定义了专门的方法来额外地标明某个Context是否已关闭(超过截止时间或被主动撤销)、关闭的时间及原因:Done方法返回一个信道(channel),当Context被撤销或过期时,该信道是关闭的...,即它是一个表示Context是否已关闭的信号;当Done信道关闭后,Err方法表明Context被撤的原因;当Context将要被撤销时,Deadline返回撤销执行的时间。...当parent的过期时间早于传入的deadline时间时,返回的根须过期时间应与parent相同(根部过期时,其所有的根须必须同时关闭);反之,返回的根须的过期时间则为deadline。

    2.2K60

    2024年java面试准备--java基础篇

    它定义对象间的一种一对多的依赖关系,当一个对象(目标对象)的状态发生改变时,所有依赖于它的对象(观察对象)都得到通知并被自动更新。...重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,重载对返回类型没有特殊的要求。方法重写体现了运行时的多态性。...TRACE 回显服务器收到的请求,用于测试或诊断 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 get和Post区别: GET POST 可见性 数据在URL中对所有人可见...502:Bad Gateway --- 作为网关或者代理服务器尝试执行请求时,从远程服务器接收到了无效的响应。...如果两个对象相同(即:用equals()比较返回true ),那么它们的 hashcode值一定要相同; 如果两个对象的hashcode()相同,它们并不—定相同; (1)如果o1.equals(o2)

    51041

    好 RESTful API 的设计原则

    过滤器 当客户端创建了一个请求来获取一个对象列表时,很重要一点就是你要返回给他们一个符合查询条件的所有对象的列表。这个列表可能会很大。但你不能随意给返回数据的数量做限制。...无论怎么说,当你准备过滤或排序数据时,你必须明确的将那些客户端可以过滤或排序的列放到白名单中,因为我们不想将任何的数据库错误发送给客户端。...预期的返回文档 当使用不同的HTTP动词向服务器请求时,客户端需要在返回结果里面拿到一系列的信息。.../resource: 返回一个空文档 请注意当一个客户端创建一个资源时,她们常常不知道新建资源的ID(也许还有其他的属性,如创建和修改的时间戳等)。...当客户端发送一个请求道服务器时,他们会提供一个键值对集,先是一个头,紧跟着是两个回车换行符,然后才是请求体。所有这些都是在一个封包里被发送。

    99320

    告知你不为人知的 UDP:连接性和负载均衡

    对于一个无连接的 UDP 是不会返回这个错误的,之所以会返回这个错误,是因为你明确调用了 connect 去连接远端的 Endpoint_S 了。那么这个错误是怎么产生的呢?...这样内核协议栈就维护了一个从源到目的地的单向连接,当下层有ICMP(对于非IP协议,可以是其它机制)错误信息返回时,内核协议栈就能够准确知道该错误是由哪个用户socket产生的,这样就能准确将错误转发给上层应用了...对于下层是IP协议的时候,ICMP 错误信息返回时,ICMP 的包内容就是出错的那个原始数据包,根据这个原始数据包可以找出一个五元组,根据该五元组就可以对应到一个本地的connect过的UDP socket..., new_fd , &client_ev) 当epoll_wait返回时,如果epoll_wait返回的事件fd是new_fd 那么就可以调用recvfrom来接收特定client的UDP包了 recvfrom...,那么当Client的Port_CB端口的UDP数据包来到server时,内核不会投递到new_fd,相反是投递到listen_fd。

    16.3K143

    Redis:17---常用功能之(事务)

    它可以在EXEC命令执行之前,监视任意数量的数据库键,并在EXEC命令执行时,检查被监视的键是否至少有一个已经被修改过了,如果是的话,服务器将拒绝执行事务,并向客户端返回代表事务执行失败的空回复 DISCARD...三、事务错误的处理 如果事务中出现错误,那么Reiis的处理机制也不尽相同 ①命令错误 如果一个事务在入队命令的过程中,出现了命令不存在,或者命令的格式不正确等情况,那么Redis将拒绝执行这个事务 例如...) 有些事务输入的命令没有错误,但是语法或逻辑有错误,这类错误不会被立即检测出来,只有当事务提交时才会被检测出来 即使在事务的执行过程中发生了错误,服务器也不会中断事务的执行,它会继续执行事务中余下的其他命令...③服务器停机 如果Redis服务器在执行事务的过程中停机,那么根据服务器所使用的持久化模式,可能有以下情况出现: 如果服务器运行在无持久化的内存模式下,那么重启之后的数据库将是空白的,因此数据总是一致的...如果找不到可供使用的RDB文件,那么重启之后的数据库将是空白的,而空白数据库总是一致的 如果服务器运行在AOF模式下,那么在事务中途停机不会导致不一致性,因为服务器可以根据现有的AOF文件来恢复数据,从而将数据库还原到一个一致的状态

    50730
    领券