愤怒的大鸟 发表于 2015-1-16 22:29:40

ASP网页设计用ASP+SQL Server为网页建一道防火墙

我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。为网页设置防火墙的次要目标是依据网页内容对分歧来访者供应分歧的服务,使用JavaScript或VBScript,我们很简单做到这一点。但网页的源码在客户扫瞄器中能够被看到,会见者能够检察所用的用户判别办法,这只是一个外表情势的防火墙。ASP是Web上的客户机/服务器布局的两头层,固然它利用剧本言语(JavaScript,VBScript等)编写,程序代码在服务器上运转,在客户端仅可看到由ASP输入的静态HTML文件,但ASP仍具有某些毛病,接纳必定手腕也能够看到ASP程序的源码。这时候,经由过程ASP与SQLServer相分离,我们能够计划出复杂、高效、牢靠的使用程序。上面复杂先容一下其创建历程。

1、创建Login
  在SQLServer上创建会见者的Login和Password。

2、在收集服务器上创立数据库DSN
  利用“把持面板”中的“ODBC数据源办理器”创立某个数据库的ODBC数据资本名,即DSN,如许今后能够经由过程利用数据库DSN毗连详细的数据库。

  “ODBC数据源办理器”供应了三种DSN,分离为用户DSN、体系DSN和文件DSN。个中,用户DSN会把响应的设置信息保留在Windows的注册表中,可是只同意创立该DSN的登任命户利用。体系DSN一样将有关的设置信息保留在体系注册表中,可是与用户DSN分歧的是体系DSN同意一切登录服务器的用户利用。

  与上述两种数据库DSN分歧,文件DSN把详细的设置信息保留在硬盘上的某个详细文件中。文件DSN同意一切登录服务器的用户利用,并且即便在没有任何用户登录的情形下,也能够供应对数据库DSN的会见撑持。别的,由于文件DSN被保留在硬盘文件里,以是能够便利地复制到别的呆板中。如许,用户能够不合错误体系注册表举行任何修改便可间接利用在别的呆板上创立的DSN。

  在以上三种数据库DSN中,倡议用户选择体系DSN或文件DSN,假如用户更喜好文件DSN的可移植性,能够经由过程在NT体系下设定文件的会见权限取得较高的平安保证。

  创建新的DSN,用户起首选择“增加”,然后在弹出窗口当选择用户将要创建毗连的数据库范例并选择列表中的“SQLServer”项。假如用户是创建文件DSN,则单击“下一步”按钮并在随后的对话框中输出所要创建的文件DSN的文件名和保留路径。假如用户创建的是体系DSN,单击“完成”按钮。

  在选择完数据库以后,用户必要对数据库DSN举行设置。用户必要选择供应数据库服务的详细服务器,设定登任命户名和口令,和用户将要毗连的数据库。

3、程序计划
  上面要完成的就是一个复杂的页面防火墙的功效。此页面只限定本单元外部网的用户举行会见(在此假定外部网的IP地点是从10.61.96.至10.65.97.之间),假如是单元内部用户举行会见则请求输出会见用户名及暗码。在此要利用到request工具的ServerVariables属性,经由过程它来取得情况变量的值。

  程序源码(firewall.asp)以下:

  〈html〉

  〈head〉

  〈metahttp-equiv="Content-Type"content="text/html;charset=gb_2312-80"〉

  〈metaname="GENERATOR"content="MicrosoftFrontPageExpress2.0"〉

  〈title〉firewall.asp〈/title〉

  〈/head〉

  〈bodybackground="#800080"〉

  〈%

  利用Request.ServerVariables("REMOTE_ADDR")失掉IP地点并保留在变量remoteip中

  remoteip=Request.ServerVariables("REMOTE_ADDR")

  stip=cstr(remoteip)

  获得IP地点第三个段的值并保留到stip中

  fori=1to2

  stip=right(stip,len(stip)-instr(1,stip,"."))

  next

  stip=left(stip,instr(1,stip,".")-1)

  IP地点无效性查验及暗码考证,包含两方面的内容:假如IP地点切合则经由过程考证;假如IP地点不切合则查验输出的用户名、暗码是不是准确

  if(left(remoteip,5)〈〉"10.61"orstip〈"96"orstip〉"97")then

  username=request.form("t1")

  password=request.form("t2")

  Setfs=CreateObject("Scripting.FileSystemObject")

  Setthisfile=fs.OpenTextFile("dsn.txt")

  db_loc=thisfile.readline

  thisfile.close

  cnstr=db_loc&&"uid="&&username&&";"&&"pid="&&password

  onerrorresume  next

  setcn=server.createobject("adodb.connection")

  cn.opencnstr

  iferr=3709then%〉  

  〈p〉〈fontcolor="#FF0000"〉对不起,用户:〈%=username%〉没有会见权限,或暗码不准确!〈BR〉〈/font〉〈/p〉

  〈formmethod="POST"〉

  〈palign="center"〉用户名:〈inputtype="text"name="T1"size="20"〉口令:〈inputtype="password"name="T2"size="20"〉〈inputtype="submit"value="提交"name="B1"〉〈inputtype="reset"value="全体重写"name="B2"〉

  〈/p〉

  〈/form〉

  〈%endif

  cn.close

  setcn=nothing%〉  

  〈%else%〉

  祝贺您,您已经由过程了考证,能够间接利用本站点的资本!

  〈%endif%〉

  〈/body〉

  〈/html〉

  略微修正一下下面如IP地点等信息,该程序就能够运转了。

  固然,下面只是完成在一个页面中的防火墙功效。假如一个网站有多个页面的话,能够设置一个session变量来对用户举行标记,鄙人面的页面中都举行判别。

ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;

乐观 发表于 2015-1-19 15:10:20

不能只是将它停留在纸上谈兵的程度上。

山那边是海 发表于 2015-1-26 16:59:50

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

老尸 发表于 2015-2-4 20:06:41

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

第二个灵魂 发表于 2015-2-10 06:22:49

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

蒙在股里 发表于 2015-3-1 00:44:44

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

兰色精灵 发表于 2015-3-10 11:32:57

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

若相依 发表于 2015-3-17 06:53:38

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

再见西城 发表于 2015-3-24 00:25:20

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
页: [1]
查看完整版本: ASP网页设计用ASP+SQL Server为网页建一道防火墙