瀚霊蓒PC 技术平台 ■■■『程序设计』 程序技巧问题综合收集(更新)...

1  /  1  页   1 跳转 查看:1958

[其他综合] 程序技巧问题综合收集(更新)...

程序技巧问题综合收集(更新)...

第一个问题:body.fix,head.fix是什么文件?用什么打开?

这个文件主要是用来生成图形验证码的文件,一般有下面几种Head.fix和Body.fix两种!
Fix是bmp的一种衍生格式,用来生成ASP代码的图形验证码
Eg:
1.图象绘制完成后,将文件存为24位位图格式的BMP图象文件.
2.去除前54Byte内容.
3.改名为BODY+数字.FIX
4.修改CHECKCODE.ASP,调用你新做的这个文件.
(checkcode.asp负责生成和输出验证码1309byte,Head.fix是54byte的BMP开头,Body.fix数字0~9 10X100竖排的RGB阵列数据3200byte)
生成彩色验证码的文件
1.Checkcode.ASP 负责生成和输出验证码 1309 byte.
2.Head.fix 是54byte的BMP头
3.Body.fix 数字0~9 10X100竖排的RGB阵列数据3200 byte

第二個問題:IIS下中文名的文件無法下載問題的解決方案
在以IIS做web server時,有些中文名的檔會出現無法下載的情況。
測試結果:檔案名為2個、4個中文字時無法下載,而1個、3個、5個時沒有問題,其他情況未做測試。
測試環境:英文版windows 2000+IIS 5.0
有兩種方法可以解決此問題:
1、在Web伺服器端修改註冊表,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\INETINFO_PARAMETERS\FAVORDBCS 把1改成0,之后重新启动IIS即可。(如果此值已经是0,应该不会出现上述问题)
2、在客户端修改IE设置 把“总是以UTF-8发送URL”设置为不选中。(最好采用第一种方案,否则不会为每个访问者都去设置一下吧)

第三個問題:如何解除FSO上傳程式小於200k限制?

  先在服務裡關閉IIS admin service服務,找到Windows\System32\Inesrv目錄下的Metabase.xml並打開,找到ASPMaxRequestEntityAllowed,將其修改為需要的值。默認為204800,即200K,把它修改為51200000(50M),然後重啟IIS admin service服務。
  ASP提供了強大的檔案系統訪問能力,可以對伺服器硬碟上的任何檔進行讀、寫、複製、刪除、改名等操作,这给学校网站的安全带来巨大的威胁。现在很多校园主机都遭受过FSO木马的侵扰。但是禁用FSO组件后,引起的后果就是所有利用这个组件的ASP程序将无法运行,无法满足客户的需求。如何既允许FileSystemObject组件,又不影响服务器的安全性呢(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)?以下是笔者多年来摸索出来的经验:
  第一步是有别于Windows 2000设置的关键:右击C盘,点击“共享与安全”,在出现在对话框中选择“安全”选项卡,将Everyone、Users组删除,删除后如果你的网站连ASP程序都不能运行,请添加IIS_WPG组(图1),并重启计算机。
  经过这样设计后,FSO木马就已经不能运行了。如果你要进行更安全级别的设置,请分别对各个磁盘分区进行如上设置,并为各个站点设置不同匿名访问用户。下面以实例来介绍(假设你的主机上E盘Abc文件夹下设Abc.com站点):
  1. 打开“计算机管理→本地用户和组→用户”,创建Abc用户,并设置密码,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”,并把用户设置为隶属于Guests组。
  2. 右击E:\Abc,选择“属性→安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),删除Everyone的完全控制(如果不能删除,请点击[高级]按钮,将“允许父项的继承权限传播”前面的对号去掉,并删除所有),添加Administrators及Abc用户对本网站目录的所有安全权限。
  3. 打开IIS管理器,右击Abc.com主机名,在弹出的菜单中选择“属性→目录安全性”选项卡,点击身份验证和访问控制的[编辑],弹出图2所示对话框,匿名访问用户默认的就是“IUSR_机器名”,点击[浏览],在“选择用户”对话框中找到前面创建的Abc账户,确定后重复输入密码。
  经过这样设置,访问网站的用户就以Abc账户匿名身份访问E:\Abc文件夹的站点,因为Abc账户只对此文件夹有安全权限,所以他只能在本文件夹下使用FSO。
  常见问题:
  如何解除FSO上传程序小于200k限制?
  先在服务里关闭IIS admin service服务,找到Windows\System32\Inesrv目录下的Metabase.xml并打开,找到ASPMaxRequestEntityAllowed,将其修改为需要的值。默认为204800,即200K,把它修改为51200000(50M),然后重启IIS admin service服务。

第四個問題:運行IIS的最小NTFS許可權

本文介紹了正常運行IIS所需要的最小NTFS許可權,當IIS不能正常運行或者想嚴格限制許可權的時候可以參照此文,以下是操作的7個步驟。

1、 選取整個硬碟:
System:完全控制
Administrator:完全控制
(允許將來自父系的可繼承性許可權傳播給對象)

2、 \Program Files\Common Files:
Everyone:讀取及運行
列出檔目錄
讀取
(允許將來自父系的可繼承性許可權傳播給對象)

3、 \Inetpub\wwwroot:(按FSO处理)
IUSR_MACHINE:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)

4、 \Winnt\system32:
选择除Inetsrv和Centsrv以外的所有目录,去除“允许将来自父系的可继承性权限传播给对象”选框,复制。

5、 \Winnt:
选择除了Downloaded Program Files、Help、IIS Temporary Compressed Files、Offline Web Pages、system32、Tasks、Temp、Web以外的所有目录,去除“允许将来自父系的可继承性权限传播给对象”选框,复制。

6、 \Winnt:
Everyone:读取及运行
列出文件目录
读取
(允许将来自父系的可继承性权限传播给对象)

7、 \Winnt\Temp:(允许访问数据库并显示在ASP页面上)
Everyone:修改
(允许将来自父系的可继承性权限传播给对象)

这样,你就拥有了一个权限严格而又可以正常运行的IIS系统了。

第五個問題:如何防止ASP 木馬在伺服器上運行
目前比較流行的ASP木馬主要通過三種技術來進行對伺服器的相關操作。
  一、使用FileSystemObject元件
  FileSystemObject可以對檔進行常規操作
  可以通過修改註冊表,將此元件改名,來防止此類木馬的危害。
  HKEY_CLASSES_ROOT\Scripting.FileSystemObject\
  改名為其它的名字,如:改為FileSystemObject_ChangeName
  自己以後調用的時候使用這個就可以正常调用此组件了
  也要将clsid值也改一下
  HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值
  也可以将其删除,来防止此类木马的危害。
  注销此组件命令:RegSrv32 /u C:\WINNT\SYSTEM\scrrun.dll
  禁止Guest用户使用scrrun.dll来防止调用此组件。
  使用命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests
  二、使用WScript.Shell组件
  WScript.Shell可以调用系统内核运行DOS基本命令
  可以通过修改注册表,将此组件改名,来防止此类木马的危害。
  HKEY_CLASSES_ROOT\WScript.Shell\及HKEY_CLASSES_ROOT\WScript.Shell.1\
  改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName
  自己以后调用的时候使用这个就可以正常调用此组件了
  也要将clsid值也改一下
  HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值
  HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值
  也可以将其删除,来防止此类木马的危害。
  三、使用Shell.Application组件
  Shell.Application可以调用系统内核运行DOS基本命令
  可以通过修改注册表,将此组件改名,来防止此类木马的危害。
  HKEY_CLASSES_ROOT\Shell.Application\及HKEY_CLASSES_ROOT\Shell.Application.1\
  改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName
  自己以后调用的时候使用这个就可以正常调用此组件了
  也要将clsid值也改一下
  HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值
  HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值
  也可以将其删除,来防止此类木马的危害。
  禁止Guest用户使用shell32.dll来防止调用此组件。
  使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests
  注:操作均需要重新启动WEB服务后才会生效。
  四、调用Cmd.exe
  禁用Guests组用户调用cmd.exe
  cacls C:\WINNT\system32\Cmd.exe /e /d guests
  通过以上四步的设置基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。

第六個問題:
ASP獲取真實的IP位址
在ASP中使用Request.ServerVariables("REMOTE_ADDR") 來取得用戶端的IP位址,但如果用戶端是使用代理服務 器來訪問,那取到的就是代理伺服器的IP位址,而不是真正的用戶端IP地址。要想透過代理伺服器取得用戶端的真實IP位址,就要使用Request.ServerVariables("HTTP_X_FORWARDED_FOR") 來讀取。
  不過要注意的事,並不是每個代理伺服器都能用Request.ServerVariables("HTTP_X_FORWARDED_FOR")来读取客户端的真实IP,有些用此方法读取到的仍然是代理服务器的 IP。
  还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:

<%
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")
%>

  即:如果客户端通过代理服务器,则取HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取REMOTE_ADDR 的值。
 

回复:程序技巧问题综合收集(更新)...

ASP初學者常用的代碼
1.獲得系統時間:
<%=now()%>
2.取得來訪用的IP:
<%=request.serverVariables("remote_host")%>
3.獲得系統,流覽器版本:
<script>
window.document.write("版本:"+navigator.appName+navigator.appVersion+" browser.")
</script>
4.去除IE混動條:
<body scroll="no">
<body style="overflow-y:hidden">
5.进入网站,跳出广告:
<script language="javascript">
<!--
<!-- 注意更改文件所在路径-->
window.open(''http://www.XXXXXX.com'','''',''height=200,width=300,top=0,left=30'');
// -->
</script>
6.随机数:
<%randomize%>
<%=(int(rnd()*n)+1)%>
N为可改变数
7.向上混动代码:
<marquee direction="up" scrolldelay="200" style="font-size: 9pt; color: #FF0000; line-height: 150%; font-style:italic;

font-weight:bold" scrollamount="2" width="206" height="207" bgcolor="#FFFF00">hhhhhhhhhhhhhhhhhhh</marquee>
8.自动关闭网页:
<script LANGUAGE="javascript">
<!--
setTimeout(''window.close();'', 10000); //60秒后关闭
// -->
</script>
<p align="center">本页10秒后自动关闭,请注意刷新页面</p>
9.随机背景音乐:
<%randomize%>
<bgsound src="mids/<%=(int(rnd()*60)+1)%>.mid" loop="-1"> 
 

可以修改数字,限制调用个数,我这里是60个.
10.自动刷新本页面:
<script>
<!--  

var limit="0:10"  

if (document.images){
var parselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1
}
function beginrefresh(){
if (!document.images)
return
if (parselimit==1)
window.location.reload()
else{
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if (curmin!=0)
curtime=curmin+"分"+cursec+"秒后重刷本页!"
else
curtime=cursec+"秒后重刷本页!"
window.status=curtime
setTimeout("beginrefresh()",1000)
}
}  

window.onload=beginrefresh
file://-->
</script>
11.ACCESS数据库连接:
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
'更改数据库名字
db="data/dvBBS5.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
c & Server.MapPath(db)
'如果你的服务器采用较老版本Access驱动,请用下面连接方法
'c & Server.MapPath(db)
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>
12.SQL数据库连接:
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
c
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>
13.用键盘打开网页代码:
<script language="javascript">
function ctlent(eventobject)
{
if((event.ctrlKey && window.event.keyCode==13)||(event.altKey && window.event.keyCode==83))
{
window.open('网址','','')
}
}
</script> 

这里是Ctrl+Enter和Alt+S的代码 自己查下键盘的ASCII码再换就行
14.让层不被控件复盖代码:
<div z-Index:2><object ***></object></div> # 前面
<div z-Index:1><object ***></object></div> # 后面
<div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-index:2"><table height=100% width=100%

bgcolor="#ff0000"><tr><td height=100% width=100%></td></tr></table><iframe width=0 height=0></iframe></div>
<div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-index:1"><iframe height=100% width=100%>

</iframe></div>
15.动网FLASH广告代码:
<object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http:

//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="468" height="60">

<param name=movie value="images/yj16d.swf"><param name=quality value=high>

<embed src="images/dvbanner.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?

P1_Prod_Version=ShockwaveFlash";;;; type="application/x-shockwave-flash" width="468" height="60"></embed></object>
16.VBS弹出窗口小代码:
<script language=vbscript>
msgbox"你还没有注册或登陆论坛","0","精品论坛"
location.href = "login.asp"
</script>
16.使用FSO修改文件特定内容的函数
function FSOchange(filename,Target,String)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FiletempData = objCountFile.ReadAll
objCountFile.Close
FiletempData=Replace(FiletempData,Target,String)
Set objCountFile=objFSO.CreateTextFile(Server.MapPath(filename),True)
objCountFile.Write FiletempData
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
17.使用FSO读取文件内容的函数
function FSOFileRead(filename)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FSOFileRead = objCountFile.ReadAll
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
18.使用FSO读取文件某一行的函数
function FSOlinedit(filename,lineNum)
if linenum < 1 then exit function
dim fso,f,temparray,tempcnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
set f = nothing
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
FSOlinedit = temparray(lineNum-1)
end if
end if
end function
19.使用FSO写文件某一行的函数
function FSOlinewrite(filename,lineNum,Linecontent)
if linenum < 1 then exit function
dim fso,f,temparray,tempCnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
temparray(lineNum-1) = lineContent
end if
tempcnt = join(temparray,chr(13)&chr(10))
set f = fso.createtextfile(server.mappath(filename),true)
f.write tempcnt
end if
f.close
set f = nothing
end function
20.使用FSO添加文件新行的函数
function FSOappline(filename,Linecontent)
dim fso,f
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),8,1)
f.write chr(13)&chr(10)&Linecontent
f.close
set f = nothing
end function
 

回复:程序技巧问题综合收集(更新)...

<marquee direction="up" scrolldelay="200" style="font-size: 9pt; color: #FF0000; line-height: 150%; font-style:italic;font-weight:bold" scrollamount="2" width="206" height="207" bgcolor="#FFFF00">我来试验一下...... 不能使用?</marquee>
最后编辑liuzv2000 最后编辑于 2008-02-14 10:40:55
我的幸福都是微小的事情!
 

回复:程序技巧问题综合收集(更新)...

留个脚印
 

回复 3F liuzv2000 的帖子

这个是HTML语言.
 

回复:程序技巧问题综合收集(更新)...

5月12日,四川汶川等地发生大地震造成重大人员伤亡,为表达对在地震中遇难同胞的深切哀悼根据国务院文件,5.19-5.21为全国哀悼日,在此期间,全国和各驻外机构下半旗志哀,停止公共娱乐活动,外交部和我国驻外使领馆设立吊唁簿。5月19日14时28分起,全国人民默哀3分钟,届时汽车、火车、舰船鸣笛,防空警报鸣响!
第一:
最快速度把自己网站变灰,只支持IE~
在CSS文件或style中加入
*{filter:gray; color:gray;}
第二:
html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}
这个比 filter:gray; 好,可解决与 position: relative; 的冲突,加在 css 第一行即可
 

回复:程序技巧问题综合收集(更新)...

顶 辛苦了
 

回复:程序技巧问题综合收集(更新)...

html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }

使用方法:这段代码可以变网页为黑白,将代码加到CSS最顶端就可以实现素装。建议全国站长动起来。为在地震中遇难的同胞哀悼。

如果网站没有使用CSS,可以在网页/模板的HTML代码<head>和</head> 之间插入:

<style>
html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}
</style>

有一些站长的网站可能使用这个css 不能生效,是因为网站没有使用最新的网页标准协议

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

请将网页最头部的<html>替换为以上代码。

有一些网站FLASH动画的颜色不能被CSS滤镜控制,可以在FLASH代码的<object …>和</object>之间插入:

<param value="false" name="menu"/>
<param value="opaque" name="wmode"/>

最简单的把页面变成灰色的代码是在head 之间加
<style type="text/css">

html {
    FILTER: gray
}
</style>
 
1  /  1  页   1 跳转

版权所有 瀚霊蓒   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc. 粤ICP备05143804号
返顶部