让ASP组件来保护你的网站,自定义加密方法的使用
时间:2009-11-07 19:27:00
大家做网站,特别是自己写的代码,常常担心被一些黑客入侵服务器,从而导致网站代码被盗,给自己带来一些损失。
那么我们怎么样做,就算黑客盗了你的代码,也无法运行呢?
这里我推荐用组件来封装一些重要的ASP代码。
但是有的时候,黑客可能入侵服务器的话,如果找到组件地址的话,把组件拷走了,同样能运行程序。
这里,我们可以在组件中做一些处理,我来说说我通常的做法。
ASP组件,不过是VB还是VC还是VC++,都可以获取到ASP中的Request对象。我们通常可以用Request中的ServerVariables("SERVER_NAME")来获取当前网站的域名。
VB代码为:
Private rq As Request
Set rq = sc.Request
servername = rq.ServerVariables("SERVER_NAME")
VC++代码为:
IRequestDictionary * ppReqDictionary;
CString sservername;
m_piRequest->get_ServerVariables(&ppReqDictionary);
char wchItem[255]={NULL};
VARIANT VServerName;
VServerName.vt=VT_BSTR;
strcpy(wchItem,"SERVER_NAME");
ppReqDictionary->get_Item(CComVariant(wchItem), &VServerName);
/*free(wchItem);*/
VariantChangeType(&VServerName,&VServerName,0,VT_BSTR);
sservername=VServerName.bstrVal;
对于本地调试的时候,获取的值是localhost或者127.0.0.1。在组件中,我们可以用MD5将获取到的主机地址与一个自定义密码组合MD5加密得到一个字符串。
譬如调用:md5(www.aspxhome.com+servername)。
我们在ASP中调用组件方法前,需要输入注册码。即上面方法生成的。然后在组件方法里判定ASP代码中输入的注册码与组件中生成的代码是否相等。如果不下相等,则不执行方法。
通过这样的思路,我们就将组件与主机域名绑定起来了。这样的话,就算黑客拿走了代码和组件,但是他不知道我们组件的加密方法的话,还是没法运行我们的程序。