5810|12

161

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

网络开发笔记7_安全用户登陆 [复制链接]

一 问题与目标

    问题是对我们之前在JavaScript里面提出的问题,在那里我们展现了用JavaScript做的前台用户验证。我们也看到当我们使用IE提供给我们的源代码分析器时,就能将我们的源代码一览无余。不安全之处就不用说的了。

    IE代码公析窗口图如图1所示

我们要那么做才能安全地登陆呢?我们的目标出来了,我们要做一个能正常登陆又不能被简单地破解的登陆方式

 

二 前后台验证方案

    此方法是后台动态地把用户名和密码提交到前台,然后用上术前台验证的方法验证是否是全法用户,这种方法虽然可以实现密码修改与存储,但这种方法同样因为密码都放到了前台,因而不安全,用户可以查看网页源码而得到密码。

代码如下

       Cgi文件

t <script type="text/javascript">

t function login(){

t var f = document.forms[0];

t var userName = document.forms[0].userName.value;

t var password = document.forms[0].password.value;

t var user = document.forms[0].user.value;

t var pwd = document.forms[0].pwd.value;

t if(userName==user &&password==pwd ){

t f.action="test.html";

t f.submit();

t }

t }

t </script>

……………………………………………………………………….

c d 1 <input type="hidden" name="user" value="%s"/>

c d 2 <input type="hidden" name="pwd" value="%s"/>

      

cgi_func函数

  case 'd':

      /* System password - file 'system.cgi' */

      switch (env[2]) {

        case '1':

          len = sprintf((char *)buf,(const char *)&env[4],

                        "admin");

          break;

        case '2':

          len = sprintf((char *)buf,(const char *)&env[4],"admin");

          break;

      }

      break;

 

.....................................详见PDF

查看本帖全部内容,请登录或者注册

1.jpg (51.51 KB, 下载次数: 3)

1.jpg

网络开发笔记7_安全用户登陆.pdf

265.6 KB, 下载次数: 195

最新回复

Cool  详情 回复 发表于 2011-4-5 22:32
 
点赞 关注

回复
举报

161

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

后台验证方案

       我们的思路很简单,用户把数据提交到后台,经Web服务器验证后,跳转到相应的页面,但是现在有个问题,我们怎样实现页面的跳转?Rl-TCPNet没有提供专门用于页面跳转的函数。

       我们由process_data来验证是否成功登陆,在由cgi角本与JavaScript共同来实现网页的跳转。

    跳转的实现,首先我们的cgi文件里加入一条JavaScript实现网页跳转的代码,但要跳转的页面用%s代替,然后将其传给cgi_func做进一步处理。例如:

       c d 1 window.location.href="%s";

而页面提交的数据经过process_data验证后设置两个标志位,在由cgi_func处理,对因于上面cgi代码,我们应交由cgi_funcd 1处理,在其d 1中我们判断验证是否成功,成功则转向成功登陆的页面,否则转向登陆页重新登陆。跳转代码分析如下:

              if(userName==1 && pwd==1)//如果登陆成功

              {

               len = sprintf((char *)buf,(const char *)&env[4], "test.cgi");//成功跳转

              }

              else

                 len = sprintf((char *)buf,(const char *)&env[4], "logn.html");//跳转失败

 

后台验证的安全性

       为什么我已经验证了用户是否是合法的了,还要提到这个方法的安全性呢?在很多网络安全常识告诉我们,有很多方法是可以破解掉一个网站的登陆系统的,我简单地测试,了我的后台是否安全,我先看网页源代码,再也看不到明码的密码了。这方面已安全,然而当我用绕障法去测试时,却发现,我们根本不用登陆那么麻烦,直接在IE地址栏内输入相应网页地址,就可以跳转过去。这样我们就绕开了我们自以为安全的屏障,我们又要经过怎样的处理,才会却保不能绕开登陆而到达我们的安全域呢?

       我的灵感告诉我,可以试着把所有的安全域都做成cgi的文件,在cgi的头部判断是否是已登陆的用户,如果是就正常显示,如果不是就转向登陆页。我试着这样去做,发现却实是种可行的方法,

       cgi文件代码分析如下:

c d 2 if(%s)    //交由cgi_func判断,是否已登陆,登陆则%s0,否则置1跳转

t window.location.href="logn.html";

       cgi_func代码分析如下:

if(logn==0)//如果没登陆

       len = sprintf((char *)buf,(const char *)&env[4],"1");//%s1跳转

else

          len = sprintf((char *)buf,(const char *)&env[4],"0");//0正常显示

 
 

回复

161

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

后台验证方案

       我们的思路很简单,用户把数据提交到后台,经Web服务器验证后,跳转到相应的页面,但是现在有个问题,我们怎样实现页面的跳转?Rl-TCPNet没有提供专门用于页面跳转的函数。

       我们由process_data来验证是否成功登陆,在由cgi角本与JavaScript共同来实现网页的跳转。

    跳转的实现,首先我们的cgi文件里加入一条JavaScript实现网页跳转的代码,但要跳转的页面用%s代替,然后将其传给cgi_func做进一步处理。例如:

       c d 1 window.location.href="%s";

而页面提交的数据经过process_data验证后设置两个标志位,在由cgi_func处理,对因于上面cgi代码,我们应交由cgi_funcd 1处理,在其d 1中我们判断验证是否成功,成功则转向成功登陆的页面,否则转向登陆页重新登陆。跳转代码分析如下:

              if(userName==1 && pwd==1)//如果登陆成功

              {

               len = sprintf((char *)buf,(const char *)&env[4], "test.cgi");//成功跳转

              }

              else

                 len = sprintf((char *)buf,(const char *)&env[4], "logn.html");//跳转失败

 

后台验证的安全性

       为什么我已经验证了用户是否是合法的了,还要提到这个方法的安全性呢?在很多网络安全常识告诉我们,有很多方法是可以破解掉一个网站的登陆系统的,我简单地测试,了我的后台是否安全,我先看网页源代码,再也看不到明码的密码了。这方面已安全,然而当我用绕障法去测试时,却发现,我们根本不用登陆那么麻烦,直接在IE地址栏内输入相应网页地址,就可以跳转过去。这样我们就绕开了我们自以为安全的屏障,我们又要经过怎样的处理,才会却保不能绕开登陆而到达我们的安全域呢?

       我的灵感告诉我,可以试着把所有的安全域都做成cgi的文件,在cgi的头部判断是否是已登陆的用户,如果是就正常显示,如果不是就转向登陆页。我试着这样去做,发现却实是种可行的方法,

       cgi文件代码分析如下:

c d 2 if(%s)    //交由cgi_func判断,是否已登陆,登陆则%s0,否则置1跳转

t window.location.href="logn.html";

       cgi_func代码分析如下:

if(logn==0)//如果没登陆

       len = sprintf((char *)buf,(const char *)&env[4],"1");//%s1跳转

else

          len = sprintf((char *)buf,(const char *)&env[4],"0");//0正常显示

 

logn.cgi代码

t <head>

t <script language="javascript">

c d 1 window.location.href="%s";

t </script>

t </head>

t <body>

t </body>

.

 

test.cgi代码

t <head>

t <script language="javascript">

c d 2 if(%s)

t window.location.href="logn.html";

t </script>

t </head>

t <body>

t test

t </body>

.

 

 
 
 

回复

161

帖子

0

TA的资源

一粒金砂(高级)

4
 

后台验证方案

       我们的思路很简单,用户把数据提交到后台,经Web服务器验证后,跳转到相应的页面,但是现在有个问题,我们怎样实现页面的跳转?Rl-TCPNet没有提供专门用于页面跳转的函数。

       我们由process_data来验证是否成功登陆,在由cgi角本与JavaScript共同来实现网页的跳转。

    跳转的实现,首先我们的cgi文件里加入一条JavaScript实现网页跳转的代码,但要跳转的页面用%s代替,然后将其传给cgi_func做进一步处理。例如:

       c d 1 window.location.href="%s";

而页面提交的数据经过process_data验证后设置两个标志位,在由cgi_func处理,对因于上面cgi代码,我们应交由cgi_funcd 1处理,在其d 1中我们判断验证是否成功,成功则转向成功登陆的页面,否则转向登陆页重新登陆。跳转代码分析如下:

              if(userName==1 && pwd==1)//如果登陆成功

              {

               len = sprintf((char *)buf,(const char *)&env[4], "test.cgi");//成功跳转

              }

              else

                 len = sprintf((char *)buf,(const char *)&env[4], "logn.html");//跳转失败

 
 
 

回复

161

帖子

0

TA的资源

一粒金砂(高级)

5
 

后台验证的安全性

       为什么我已经验证了用户是否是合法的了,还要提到这个方法的安全性呢?在很多网络安全常识告诉我们,有很多方法是可以破解掉一个网站的登陆系统的,我简单地测试,了我的后台是否安全,我先看网页源代码,再也看不到明码的密码了。这方面已安全,然而当我用绕障法去测试时,却发现,我们根本不用登陆那么麻烦,直接在IE地址栏内输入相应网页地址,就可以跳转过去。这样我们就绕开了我们自以为安全的屏障,我们又要经过怎样的处理,才会却保不能绕开登陆而到达我们的安全域呢?

       我的灵感告诉我,可以试着把所有的安全域都做成cgi的文件,在cgi的头部判断是否是已登陆的用户,如果是就正常显示,如果不是就转向登陆页。我试着这样去做,发现却实是种可行的方法,

       cgi文件代码分析如下:

c d 2 if(%s)    //交由cgi_func判断,是否已登陆,登陆则%s0,否则置1跳转

t window.location.href="logn.html";

       cgi_func代码分析如下:

if(logn==0)//如果没登陆

       len = sprintf((char *)buf,(const char *)&env[4],"1");//%s1跳转

else

          len = sprintf((char *)buf,(const char *)&env[4],"0");//0正常显示

 
 
 

回复

161

帖子

0

TA的资源

一粒金砂(高级)

6
 

logn.cgi代码

t <head>

t <script language="javascript">

c d 1 window.location.href="%s";

t </script>

t </head>

t <body>

t </body>

.

 

test.cgi代码

t <head>

t <script language="javascript">

c d 2 if(%s)

t window.location.href="logn.html";

t </script>

t </head>

t <body>

t test

t </body>

.

 

logn.html代码

<head>

<title></title>

</head>

<body>

<form action="logn.cgi" method="post">

 用户名:<input type="text" name="userName" />

 密码:<input type="password" name="password" />

<input type="submit" name="loginBtn" value="logn" />

<input type="reset" name="resetBtn" value="reset" />

</form>

</body>

</html>

 

cgi_func代码

U16 cgi_func (U8 *env, U8 *buf, U16 buflen, U32 *pcgi) {

 

   U32 len = 0;

  switch (env[0]) {

     case 'd':

      /* System password - file 'system.cgi' */

      switch (env[2]) {

        case '1':

       if(userName==1 && pwd==1)

       {

          len = sprintf((char *)buf,(const char *)&env[4],

                        "test.cgi");

       userName=0;

       pwd=0;

       logn=1;

       }

       else

          len = sprintf((char *)buf,(const char *)&env[4],

                        "logn.html");

          break;

        case '2':

       if(logn==0)

          len = sprintf((char *)buf,(const char *)&env[4],"1");

         else

          len = sprintf((char *)buf,(const char *)&env[4],"0");

          break;

      }

      break;   

  }

  return ((U16)len);

}

 
 
 

回复

161

帖子

0

TA的资源

一粒金砂(高级)

7
 

由于论谈里的谉核机制,部分内容,半天都上传不了,请参看PDF

 
 
 

回复

2万

帖子

71

TA的资源

管理员

8
 

回复 7楼 yuhua8688 的帖子

呵呵  带链接的帖子需要一些时间显示出来 主要是因为广告贴太过泛滥的缘故 还请多多理解。

已经审核通过了,你看下,是否完全。
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

9
 
不错,学习下。。。
 
 
 

回复

1026

帖子

0

TA的资源

五彩晶圆(中级)

10
 
非常感谢!
 
 
 

回复

1026

帖子

0

TA的资源

五彩晶圆(中级)

11
 
非常感谢!
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

12
 
非常有用, 非常感谢
 
 
 

回复

2143

帖子

3

TA的资源

五彩晶圆(中级)

13
 
Cool
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 2

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表