后台分页的页码安全(超过总页数,页码为非数字)检查问题

问题描述

DB那边已经能抽到对应page的列表了,但是对page值的安全问题有点困惑:1.总页数和请求过来的page值的比较(action和service层都是单例,用全局变量定义个pager肯定违反了单例),这样就无法比较请求过来时的page和总页数了<-----我考虑到别人捣乱的情况,直接在地址栏输入过大的page,不知道怎么解决2.用struts接收参数page,如果请求中的参数被别人在地址栏弄个字符串,struts接收参数,因为类型不是Integer,直接报错感谢各位大神回答

解决方案

解决方案二:
1大于总pagepage=最大页码2前台或后台校验输入页码如果不是正整数页码=当前页码
解决方案三:
顶一下一楼的,不知道怎么顶。另外,如果你要精确表示分页,也就是一共有多少页,多查一次数据库肯定是必须的,除非你模糊分页,不说明一共有多少页,这样可以拿一个数去试一下,如果取不到值,就是到尾页了。
解决方案四:
引用1楼cbxjj的回复:

1大于总pagepage=最大页码2前台或后台校验输入页码如果不是正整数页码=当前页码

哥么你这处理方式我也知道,总page你怎么拿?每次都去查?我指的是地址栏里后面跟上不规范的页码值,比如?page="aa",等你后台获取page值,已经报错了,因为我setPage参数设的是Intger而不是String
解决方案五:
引用2楼arkwrightzhn的回复:

顶一下一楼的,不知道怎么顶。另外,如果你要精确表示分页,也就是一共有多少页,多查一次数据库肯定是必须的,除非你模糊分页,不说明一共有多少页,这样可以拿一个数去试一下,如果取不到值,就是到尾页了。

前台显示没问题的,而且有总页数,我问的是,地址栏输入的page值和总page值比较,总page值除了用全局变量保存,用来下一次和page值比较,还可以用什么方式来和page值比较
解决方案六:
引用4楼leifuchild的回复:

Quote: 引用2楼arkwrightzhn的回复:
顶一下一楼的,不知道怎么顶。另外,如果你要精确表示分页,也就是一共有多少页,多查一次数据库肯定是必须的,除非你模糊分页,不说明一共有多少页,这样可以拿一个数去试一下,如果取不到值,就是到尾页了。

前台显示没问题的,而且有总页数,我问的是,地址栏输入的page值和总page值比较,总page值除了用全局变量保存,用来下一次和page值比较,还可以用什么方式来和page值比较

因为数据库里总条数,或者说满足某次检索条件的总条数是不断变化的,因此不可能保存全局变量。通常的做法是:接收参数是page和pageSize,即请求第几页,每页多少条,当然,这两个数是不是整数的判断肯定是一开始就判断了的。然后接下来要做的是:查询数据库,得到总条数totalCount,然后根据totalCount来调整page值,如果page>totalPage,page=totalPage,这里的totalPage是根据总条数和pageSize计算出来的,如果能整除,totalPage=totalCount/pageSize,如果不能整除,totalPage=totalCount/pageSize+1;然后再用调整后的page和pageSize再次检索数据库,得到想要的结果集。
解决方案七:
你考虑的很周全前台传过来的page在后台可以进行解析如果在字符串或者什么的就直接抛出异常或者指定到第一页如果page值过大就取最后一页
解决方案八:
如果你怕别人从地址栏人为更改你可以使用ajax至于你刚才说的“前台显示没问题的,而且有总页数,我问的是,地址栏输入的page值和总page值比较,总page值除了用全局变量保存,用来下一次和page值比较,还可以用什么方式来和page值比较”你可以吧总页数传到前面每次下一页的时候进行比较
解决方案九:
引用7楼u013112641的回复:

如果你怕别人从地址栏人为更改你可以使用ajax至于你刚才说的“前台显示没问题的,而且有总页数,我问的是,地址栏输入的page值和总page值比较,总page值除了用全局变量保存,用来下一次和page值比较,还可以用什么方式来和page值比较”你可以吧总页数传到前面每次下一页的时候进行比较

引用5楼arkwrightzhn的回复:

Quote: 引用4楼leifuchild的回复:
Quote: 引用2楼arkwrightzhn的回复:
顶一下一楼的,不知道怎么顶。另外,如果你要精确表示分页,也就是一共有多少页,多查一次数据库肯定是必须的,除非你模糊分页,不说明一共有多少页,这样可以拿一个数去试一下,如果取不到值,就是到尾页了。

前台显示没问题的,而且有总页数,我问的是,地址栏输入的page值和总page值比较,总page值除了用全局变量保存,用来下一次和page值比较,还可以用什么方式来和page值比较

因为数据库里总条数,或者说满足某次检索条件的总条数是不断变化的,因此不可能保存全局变量。通常的做法是:接收参数是page和pageSize,即请求第几页,每页多少条,当然,这两个数是不是整数的判断肯定是一开始就判断了的。然后接下来要做的是:查询数据库,得到总条数totalCount,然后根据totalCount来调整page值,如果page>totalPage,page=totalPage,这里的totalPage是根据总条数和pageSize计算出来的,如果能整除,totalPage=totalCount/pageSize,如果不能整除,totalPage=totalCount/pageSize+1;然后再用调整后的page和pageSize再次检索数据库,得到想要的结果集。

嗯,这流程我以前玩过,看来还得每次查totalPages来比较新传进来的page值,打算用struts拦截器禁止地址栏编辑内容来解决胡乱输入页码的问题,谢谢啦

时间: 2024-07-31 12:13:34

后台分页的页码安全(超过总页数,页码为非数字)检查问题的相关文章

Word文件从中间页开始显示页码和总页数

一个同事做毕业论文,论文是Word格式,1-2页是封面和目录,不需要页码,第3-10页是论文内容,需要从第1页开始显示,并显示论文内容的总页数8 页.具体为页脚处显示"第*页共*页".他让我帮忙设置一下,我也不太熟悉,当然网络资源是很丰富的,随时可以参考.搜索了一番,发现介绍的内容很多,但是都不太全.我把这些内容综合了一下,多方测试,终于解决了问题,呵呵,心情很愉快啊.感觉这玩意儿平时也很有用,记录下来,希望对自己对别人都有所帮助. 在WORD中,将插入点定位在第二页末,选择菜单中的&

在Powerpoint幻灯片里显示总页数

在演示Powerpoint的时候,通常都想着讲稿的内容怎样说,就忘记了PPT幻灯片的总页数,特别是页数多的时候,花在前面部分幻灯片的时间多了,后面的内容就不够时间讲了.如果可以在Powerpoint幻灯片里显示总页数就好了,但是Powerpoint2003并不能够像它的两个"兄弟"Word与Excel那样直接通过在页眉或者页角里插入总页数的方法来给所有幻灯片都加上页数,那怎么办呢? 其实我们可以在幻灯片母版上动动手脚就可以实现这一功能了. 第一步:打开做好的Powerpoint2003

swftools-java 中使用FlexPaper分页加载获得总页数

问题描述 java 中使用FlexPaper分页加载获得总页数 java项目中用FlexPaper + swfTools 加载pdf格式的文档 分页时执行: C:SWFToolspdf2swf.exe Paper.pdf -o Paper%.swf -f -T 9 -t -s storeallcharacters FlexPaper控件配置加载SwfFile的地方,采用: {filename[*,padding],total pages} 但怎样获得总页数(total pages)? 解决方案

C#利用Office组件如何获取Word中某一节的总页数

问题描述 C#利用Office组件操作Word,我已经知道如何获取文档总页数:intpages=myWordDoc.ComputeStatistics(WdStatistic.wdStatisticPages,refNothing);现在我要获取的是分节文档中某一节的页数,该如何实现? 解决方案 解决方案二:office组件很少用带局限性,可以用这个插件aspose,操作word还是很方便

net rdlc-.NET RDLC 打印时总页数显示问题

问题描述 .NET RDLC 打印时总页数显示问题 在窗体上有一个ReportViewer,这个ReportViewer载入一个RDLC报表.运行窗体时,报表显示的很正常:并且在ReportViewer的工具栏上还有一个打印按钮,点击打印按钮可以将报表通过打印机打印出来,以上这些都很正常. 点击打印按钮时,屏幕上会闪出一个小窗体,这个小窗体一闪而过,显示的是"第几页(共几页)",小窗体上还有一个"取消"按钮.实际上在Windows中包括画图.记事本.MS Word.

java 要怎么准确获取word的总页数?

问题描述 java 要怎么准确获取word的总页数? java 通过poi是通过摘要获取word的页数,不准确. 请问还有什么其他的方法可以精确的获取word总页数吗? 项目运行在linux系统上 解决方案 没办法精确.如果你打开一个很大的word文档会发现,页数的计算需要很长的时间.这是因为影响页数的因素很多,并且这不是一个可以直接读取的值,而是需要完整渲染文档才能得到的. 如果你希望java准确获取,除非调用虚拟打印机打印一次,让word文档被渲染一遍,当然这是很耗时的. 解决方案二: 获取

Devexpress中xtraReport在什么事件中能获取报表总页数

问题描述 Devexpress中xtraReport在什么事件中能获取报表总页数 解决方案 解决方案二:请高手指点下,Devexpress以前没用过解决方案三:xrLabel1_PrintOnPage中e.PageCount

【求助】.net开发,怎么获得打印机打印的总页数?

问题描述 我们打算开发的软件需求是:用户通过我们的软件进行打印,软件需要获得用户打印的总页数.打印文本的格式是pdf(所以PrintDocument这个类不能使用了)打印设置调用的是Adobereader现有的API的dialog,但是Adobe但是无法获得用户设置打印的页数和打印的份数.voidprintWithDialog()<--这个函数调用后打印设置出来了,但因为这个函数没有返回值,所以无法知道用户打印了多少份,也无法知道用户打印的范围从第几页到第几页.所以我们打算通过连接打印机来获取打

如何获取jasperReport报表总页数?

问题描述 问题是这样的,报表时用iReport软件制作好,然后部署到jasperserver上运行,我可以再浏览器上通过连接的方式访问服务器返回的报表页,可以在链接后面带参数来查询报表的某些数据,但是jasperserver只是返回相应的报表页,不返回相关参数信息,也不知道如何获取,现在唯一的问题是返回的报表页无法获取到总页数,网上很多都是关于web如何制作报表的,我需要从已配置好的报表那儿获取到总页数信息,请教各位有没有方法? 解决方案