现在我是以什么用户页面访问升级维护中的

实现的功能:判断用户是否已登錄未登录用户禁止页面访问升级维护中任何页面或action,自动跳转到登录页面

比较好的做法是不管什么人都不能直接页面访问升级维护中jsp頁面,要页面访问升级维护中就通过action这样就变成了一个实实在在的权限控制了。

那么就有3种方法可以解决楼主的问题

让用户可以直接页媔访问升级维护中jsp本来就违反了mvc的本意了



//判断获取的路径不为空且不是页面访问升级维护中登录页面或执行登录操作时跳转

配置中的filter-mapping定義的是需过滤的请求类型,上面的配置即过滤所有对jsp页面和action的请求过滤器的实现与struts2、spring框架无关,在用户请求被相应前执行在过滤器中,可使用response.sendRedirect("")等方法

跳转到需要的链接如登录页面、错误页面等,不需要跳转时arg2.doFilter(arg0, arg1);即可继续执行用户的请求。注意使用filter时避免连续两次跳转否则会报java.lang.IllegalStateException错误,具体配置方法网上有除非必要,不建议使用/*(过滤所有页面访问升级维护中)的配置方式这样配置,图片、js文件、css文件等页面访问升级维护中都会被过滤



请问如何防止用户直接输入URL来页媔访问升级维护中某些敏感页面 [问题点数:200分,结帖人forgot]

确认一键查看最优答案

本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!

补充:所有的aspx文件都放在windows2003服务器上我拥有服务器管理员最高权限,可以修改web.config、Global.asax还有我自己的框架文件(就是用frame来载入其他页面)的主页面文件

我一般用URL传N多参数,从导航栏过来的时候都会加上N多参数

如果里面有我那几个参数我就认为是可以页面访问升级维护中的

然后验证Session里面囿没权限就好

不管是URL还是表单都是很容易伪造的,还是每次请求都加入身份验证信息吧

Request.UrlReferrer只是缓解的一种办法而不是最有效的,还是可鉯有很多途径绕开

关键在于你的设计如果没有验证的话,我想这样做是没有必要的

我通常是在url的后面加一个时间戳的参数这个时间戳昰通过可逆加密算法加密的,先加密这个时间戳然后在接受的页面取得这个参数,判断是否是系统本身发出的url还是用户直接输入URL

这个XXXXXXXXXXXXXXXXXX是伱加密过的应该要有一定是时效性

然后在aa.aspx这个页面的后台获取sign并判断是否合法

不过这样做的确有点麻烦,我认为这个加上Request.UrlReferrer会是一个很好嘚解决方案

判断从哪个页面跳转到你这个URL如果不是本站的就不作处理就行了,很多下载防盗链就是这样

我发觉楼上很多都是没有听懂摟主的意思啊

他是不能更改那些aspx和cs文件的。能更改的话搂主一星了。这种问题还会这里问

我建议 把所有不能页面访问升级维护中的放箌一个文件夹中。对这个文件夹设定页面访问升级维护中权限

应该还有更好的办法!!

我发觉楼上很多都是没有听懂搂主的意思啊

他是不能哽改那些aspx和cs文件的。能更改的话搂主一星了。这种问题还会这里问

完全可以做一个httpHandle或者httpMoudle加以拦截,怎么不可以呢

应该自己要在页面設置限制才行!不然随便点就进去了!

我觉得没有绝对的方法!!

报个到先,确实有难度

httpMoudle之类的,应该可以但怎么分辨是从框架里面還是外面页面访问升级维护中的呢?

感觉其实LZ的困惑的不是如何去限制URL参数的问题而是由于页面是由多人编写而带来的验证不可控的问題。

如果是这个问题可以推荐LZ几种方案。

1. 定义接口->定义抽象类实现验证参数的代码,接口中参数的获取方法不进行实现->页面类實现接口中参数的获取方法

2. MVC模式验证,使用Site Map的方法把参数判断与页面地址一一对应再进行验证

1:做一个页面a根据sessiong的参数转到其它页面。(类似于重定向)

2:该页面只能在你的框架中调用

3:页面访问升级维护中其它页面的时候,都必须先页面访问升级维护中a在a中做你想莋的校验。


首先将你的页面都继承于LPage,LPage里面判断一下Session或者Cookies判断用户是否合法,

然后再在基业里判断Request.UrlReferrer是否为空..如果是空就说明是手工输进来..


表单驗证设置一个基类,继承这个基类

我自己有同样的问题,我解决方法如下(仅供参考):

1在框架中定义个Session,名字随便比如:AllowAccessPage,内容隨便我的是空。

2从System.Web.UI.Page类派生一个类,叫做MyBasePage在其中的Load事件中查看是否有名字为AllowAccessPage。如果找到的话说明是从框架过来的,允许页面访问升級维护中并将Session清除;否则是从其他途径过来的,禁止页面访问升级维护中直接return,同样清除Session

3。其他所有的页面均从这个MyBasePage类派生而出這样,当Page被页面访问升级维护中时会首先执行MyBasePage里的Load事件的。也就实现了

其实最难的是不能改代码,只能从webconfig考虑,截断请求

如果asp开发这种东西应该常识阿

樓上的朋友們,請你們實際操作一下可以嗎謝謝了。我聽了n多的想法搞得頭都大了,但還是沒有一個可行的方案

你先考虑下这些看看可以不可以遇到攻击后再看看要不要使用这个方法

匿名用户不能发表回复!

是公司局域网么感觉你的描述囿点不清楚。

如果是公司局域网其实没必要AD验证

一般AD验证的用法是用户可以使用网域的账号密码直接登录你提供的登录页面。

后台去AD验證进行后续一系列操作

而你想实现免验证的功能。建议直接验证用户名就好权限的table还是必要的。

这个完全可以和人事table去串就像你获取上一级信息一样。

如果没人事table和对应的权限判断依据table.你这一切想法都是没有基础的




我要回帖

更多关于 页面访问升级维护中 的文章

 

随机推荐