使用组件来保护你的ASP代码
发布时间:2008-06-03 13:47:00
以前大家谈了很多有关打开数据库连接安全的问题,现在我再提出一种思路:使用activex dll来保护你的代码。(既可以不用为使用共享的加密软件而发愁,更重要的是可以自己来顶制加密方法了,享受一下“一切尽在掌握之中”的感觉。同时也为了让大家都自己动手来做出自己的组件来。)
activex dlls是被编译过的机器代码,如果没有源项目文件的话是不能够被编译的。这个技术使得开发者有可能开发出公共的自动化程序,并且把它们作为shareware版本的程序发布,这个大家在chinaasp中销售的一些组件中就可以看到这个技术的运用。
如果你想保护你的asp中的一些代码的安全,例如你不想让别人看见你是使用什么连接到数据库的,或者不想让别人看到你的某个比较重要的函数是怎么完成的,或者某个重要的流程(cakk可以参阅),你就可以通过不断的开发你自己的组件,这可是个dll文件,就是别人得到了这个dll文件,一时半会也根本不能够得到你要保护的重要信息。而且你自己开发的这些组件给你的程序带来了源源不断的新功能。
下面就举一个很常用的,大家都很关心的有关如何保密打开数据库的过程的例子。例子很简单,就是在一个下拉框中显示数据库中某个字段的内容。
整个过程如下:
1。新建一个vb6的activex dll项目
2。在属性窗口中,命名你的库模块和项目文件。例子中为keiths_lookup项目名和lookup模块名.
这写名字是你在asp中将引用到的dll函数名(在asp中的对象名将为keiths_lookup.lookup)。
3.将项目和库模块使用同样的名字存盘(当然了,后缀是不能够一样的哦)。
4。从vb6中的项目菜单中选择references .然后选中microsoft activex data objects 2.0 library, microsoft activex data objects recordset 2.0 library.
文件的代码如下:
public function html_combo(comboname as string, lookup_field as string) as string
dim outstring as string
dim conn as adodb.connection
dim rst as adodb.recordset
dim sqlstring as string
set conn = createobject("adodb.connection")
set rst = createobject("adodb.recordset")
'下面这些数据库中的字段名只是为这个例子设的,你完全可以根据自己的需要修改代码
sqlstring = "select [lookup_description],[lookup_key] from _
[lookup_table] where [lookup_field] = '" & lookup_field & "'"
'在这可输入你连接数据库的用户名和密码,现在就算客户端看见了asp源代码
'他也不可能知道你使用的是什么密码了,呵呵
conn.open"dsn=sumnet;uid=;pwd=.;"
rst.open sqlstring, conn, 3, 3
if not rst.eof then
rst.movefirst
outstring = "<select name='" & comboname & "'>"
do while not rst.eof
outstring = outstring & "<option value='" &rst.fields("lookup_key") & "'>" & _
rst.fields("lookup_description") & "</option> "
rst.movenext
loop
end if
outstring = outstring & "</select>"
html_combo = outstring
rst.close
conn.close
end function
代码结束,呵呵,基本上没什么技术难点把,现在保存你的项目并且开始编译工作。
1。打开visual studio 6中带的package deployment wizard程序。
2。选择你刚才建立的activex项目文件。
3。选择package
4。选择你要打包的脚本或使用默认脚本
5。选择标准安装
6。选择一个放置你安装文件的目录
7。选择single cab.
8。其他均默认,然后单击下一步
9。现在安装程序完成后,把它拿到你的iis服务器上安装把。
下面给出如何调用你自己做的这个组件的代码:
<%@ language="vbscript" %>
<%
set look = server.createobject("keiths_lookup.lookup")
%>
<html>
<body>
<%=look.html_combo("state","states")%>
<br>
<%=look.html_combo("position","positions")%>
<br>
<%=look.html_combo("age_group","age_groups")%>
</body>
</html>
你看,asp如此的简单,谁看见了源文件你都不用担心了,可以看到,使用activex dll技术可以很好的保护你的重要的代码,你需要安全的部分,但我可不希望以后大家都牢牢地看住自己的代码不愿意公开了,毕竟国内的软件行业还远远落后,需要大家齐心协力才能够一起进步呀。


猜你喜欢
- 农历新年将至,支付宝红包打了一仗,微信在朋友圈屏蔽了它的分享,但单防守还不行,进攻才是最好的防守。昨日,微信支付现金红包接口正式开放,只需开
- 1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接、外联接和交叉联接等。如果我们想
- 本文主要介绍了详解python实现可视化的MD5、sha256哈希加密小工具,分享给大家,具体如下:效果图:刚启动的状态输入文本、触发加密按
- 前言现在我能一整天都严肃地盯着屏幕,看起来就像在很认真地工作,利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度用PYQT5 Mock一个摸鱼
- 一、MySQL备份类型详解对于现代互联网公司而言,存储在服务器数据库中的数据,逐步成为企业和公司的命脉,对企业和公司的生存发展具有十分重大的
- 什么是XML?XML 指可扩展标记语言(eXtensibleMarkupLanguage)。 你可以通过本站学习XML教程XML 被设计用来
- 众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串、列表、元组…)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢?
- 前言我们经常会与文件和目录打交道,对于这些操作python提供了一个os模块,里面包含了很多操作文件和目录的函数。在写一些系统脚本或者自动化
- 一、ready函数的实现经常用jQuery类库或其他类库中的ready方法,有时候想想它们到底是怎么实现的,但是看了一下jQuery中的源码
- int()是Python的一个内部函数 Python系统帮助里面是这么说的>>> help(int) Help
- 在xadmin中是不能像原生admin那样使用formfield_for_manytomany方法来过滤多对多字段进入xadmin源码,找到
- 在SQL Server开发问题中你可能会问到的十个问题:1、什么是常见的对表和字段的名字约束?2、有没有可能在不了解T-SQL的情况下编写存
- 下面的例子演法了怎么样从协程里返回一个值:import asyncioasync def coroutine(): print(
- 项目场景pytorch训练时我们一般把数据集放到数据加载器里,然后分批拿出来训练。训练前我们一般还要看一下训练数据长啥样,也就是训练数据集可
- 一:使用Python中的urllib类中的urlretrieve()函数,直接从网上下载资源到本地,具体代码:import os,stati
- 慢速SQL:执行时间超过给定时间范围的查询就称为慢速查询。在MySQL中如何记录慢速SQL?答:可以在my.cnf中设置如下信息:[mysq
- javascript函数的定义1:调用关键字function来构造,如:function distance(x1,x2,y1,y2){var
- 1.比喻 如同Windows用桌面、文件夹、垃圾筒来比喻计算机的*作,Web的设计也是如此。善于利用明确、抽象或概念化的比喻ICON来表达各
- 这次我们讨论的是,区分有单选框的选项和普通的选项~~乍听起来,可能不太理解我说了什么,下面举个例子先~~1、标签的单选~~例如QQ秀的支付流
- 安装环境:python版本2.7.5 ,win7系统安装Djangohttps://www.djangoproject.com/downlo