有管理系统A位于192.168.8.3服务器上,要把系统B(位于192.168.8.201)添加到A的菜单中(A有此功能,可以设置菜单链接地址,参数).
B以传入的USERID判断用户身份.http://192.168.8.201/b/default.aspx?USERID=XXXXX此时我想到如果用户直接在地址栏中输入地址,则只要知道管理员的USERID就可以以管理员的身份操作.于是乎使用了下面的句子:
if (Request.ServerVariables["HTTP_REFERER"] == null)
{
Response.Write("非法进入");
Response.End();
}后来在测试中发现了如下的结果:
1. 手动在地址栏中输入则提示非法进入.
2. 先登陆上A中,从A的菜单中打开B,右击,找到B的地址,复制,粘贴到现在见面的地址栏中.没有提示非法进入.请教Request.ServerVariables["HTTP_REFERER"]是怎么工作的?谢谢大家了.
B以传入的USERID判断用户身份.http://192.168.8.201/b/default.aspx?USERID=XXXXX此时我想到如果用户直接在地址栏中输入地址,则只要知道管理员的USERID就可以以管理员的身份操作.于是乎使用了下面的句子:
if (Request.ServerVariables["HTTP_REFERER"] == null)
{
Response.Write("非法进入");
Response.End();
}后来在测试中发现了如下的结果:
1. 手动在地址栏中输入则提示非法进入.
2. 先登陆上A中,从A的菜单中打开B,右击,找到B的地址,复制,粘贴到现在见面的地址栏中.没有提示非法进入.请教Request.ServerVariables["HTTP_REFERER"]是怎么工作的?谢谢大家了.
解决方案 »
- 请大家进来帮帮忙
- RDLC
- 如何使用UltraWebGrid自定义绑定列?
- 请问各位老大:我用VS2003建立Asp.net Web应用程序老是抱这样一个错:
- 水晶报表能显示数据却显示不出数据图???急~~~
- asp.net与sql server 2000的应用
- 数据库问题.简单.只是我自己搞不清楚了.
- #####高手的问题,有点难度,不会的也可以凑个热闹,会的盼望给我解围。#####
- linkbuttond的onclick问题
- 在线等待:在WebForm上放置Table控件,运行后没有显示.
- replace(/\|/,"?").replace(/-/,"&").replace(/\~/,"=")!!!!!!!!!!
- |zyciis| 做一个网上商城网站 经理要我写出20个技术特点 我晕 只想到了几个 大家帮我想想
这个设置与你需要的功能不一样.你可以手动设置window.open()中的参数为不可见.可以解决你的问题.但是并不能从根本上解决...所以你的问题最好是通过sever.transfer或session解决.
-------------------------------------------------------------------------返回一个字符串包含该网页的网址中提到的要求,以目前的网页使用的HTML <a>标记。请注意,该网址是一个使用者输入到浏览器地址栏中,这可能不包括名称预设文件。 如果网页是自由的, http_referer是空的。 http_referer是不是一个强制性的成员的HTTP规范。
OnClientClick = "window.open('B.aspx?USERID=XXXXX','_blank','top=84,left=112,width=800,height=600,menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes')";
用Session不是很好吗?
呵呵,我想你的意思是在A系统中用window.open打开系统B是吧? 但我是受到限制的,通过A系统的配置功能把B的链接加到A的菜单中,打开时传递的参数,打开的方式都已经被限制死了.这一点我刚开始没有说明白,抱歉.
A与B系统不是一个系统,A是公司购买的一个公司的产品(.NET1.1,2003的,没办法改动程序),B是我自己开发的(.NET2.0,2008开发的).
同时A与B不在一个服务器上,但我却要使用A系统中企业组织架构及员工的数据(判断进入的用户是哪个部门的,哪个角色等等).所以在系统B中只根据传入的一个用户ID来判断用户身份.有什么更好的解决方案的话请提示一下,谢谢.
你可以在A系统上传递用户ID,并加上一个根据这个ID加密的一个Key,传递到B系统
到B系统再解密,如果结果正确,就验证通过类似于点击QQ图标,弹出的IE窗口能自动通过验证。
那么还可以这么做,Key是根据UserId和系统时间(精确到秒)加密,
然后到B系统解密出这个系统时间,如果这个时间与当前时间相比,误差不超过1分钟,就允许验证通过
呵呵,可惜地很,从系统A传递参数到别的网址是A自带的功能.其实有参数加密的选项,但不知道怎么解密,很是郁闷.122706C2147AED568A312CC0870775C060B8000F1BD042DB12B4B873F755A2E1
122706C2147AED568A312CC0870775C060B8000F1BD042DBFEA0B3D629F4A442
122706C2147AED568A312CC0870775C0CD58B5FE6495820DBF3E3A3F832C7F23上面的值是"07100058"的密文,每次后面的一些位并不一样,谁知道系统A是根据什么操作的呢,也许是以时间做密钥,也许只不过把传递的参数打乱了,然后放在固定的位置,其余的位置加随便字符等等.
本来想反编译A的代码,后来发现A系统非常庞大复杂,有些东西隐藏得非常深,于是就放弃了.不值得.
window.open 能隐藏吗? 页面点击右键》属性 还不是一样可以看见