เมื่อเขียน asp เราต้องใส่ใจกับการประมวลผลสตริงพิเศษเพื่อป้องกันไม่ให้แฮกเกอร์ใช้ประโยชน์ เพื่อนที่ใช้ asp ก็ต้องดูนะครับ
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'แปลงเนื้อหาเพื่อป้องกันอุบัติเหตุ
-
ฟังก์ชั่น Content_Encode (ByVal t0)
IF IsNull(t0) หรือ Len(t0)=0 จากนั้น
Content_Encode=""
อื่น
Content_Encode=แทนที่(t0,"<", "<")
Content_Encode=แทนที่(Content_Encode,">",">")
สิ้นสุด ถ้า
ฟังก์ชันสิ้นสุด
-
'ยกเลิกการแปลงเนื้อหา
-
ฟังก์ชั่น Content_Decode (ByVal t0)
IF IsNull(t0) หรือ Len(t0)=0 จากนั้น
Content_Decode=""
อื่น
Content_Decode=แทนที่(t0,"<",<")
Content_Decode=แทนที่(Content_Decode,">",">")
สิ้นสุด ถ้า
ฟังก์ชันสิ้นสุด
-
'กรองอักขระ
-
ฟังก์ชั่น ข้อความกรอง(ByVal t0,ByVal t1)
ถ้า Len(t0)=0 หรือ IsNull(t0) หรือ IsArray(t0) จากนั้น FilterText="":Exit Function
t0=ตัดแต่ง(t0)
เลือกกรณี t1
กรณี "1"
t0=แทนที่(t0,Chr(32)," ")
t0=แทนที่(t0,Chr(13),"")
t0=แทนที่(t0,Chr(10)&Chr(10),"<br>")
t0=แทนที่(t0,Chr(10),"<br>")
กรณี "2"
t0=แทนที่(t0,Chr(8),"")'กลับมา
t0=Replace(t0,Chr(9),"")'tab (อักขระแท็บแนวนอน)
t0=แทนที่(t0,Chr(10),"")'ขึ้นบรรทัดใหม่
t0=Replace(t0,Chr(11),"")'tab (อักขระแท็บแนวตั้ง)
t0=Replace(t0,Chr(12),"")'การเปลี่ยนหน้า
t0=แทนที่(t0,Chr(13),"")' การขึ้นบรรทัดใหม่ chr(13)&chr(10) การรวมกันของการขึ้นบรรทัดใหม่และการป้อนบรรทัด
t0=แทนที่(t0,Chr(22),"")
t0=แทนที่(t0,Chr(32),"")'SPACE
t0=แทนที่(t0,Chr(33),"")'!
t0=แทนที่(t0,Chr(34),"")'"
t0=แทนที่(t0,Chr(35),"")'#
t0=แทนที่(t0,Chr(36),"")'$
t0=แทนที่(t0,Chr(37),"")'%
t0=แทนที่(t0,Chr(38),"")'&
t0=แทนที่(t0,Chr(39),"")''
t0=แทนที่(t0,Chr(40),"")'(
t0=แทนที่(t0,Chr(41),"")')
t0=แทนที่(t0,Chr(42),"")'*
t0=แทนที่(t0,Chr(43),"")'+
t0=แทนที่(t0,Chr(44),"")',
t0=แทนที่(t0,Chr(45),"")'-
t0=แทนที่(t0,Chr(46),"")'.
t0=แทนที่(t0,Chr(47),"")'/
t0=แทนที่(t0,Chr(58),"")':
t0=แทนที่(t0,Chr(59),"")';
t0=แทนที่(t0,Chr(60),"")'<
t0=แทนที่(t0,Chr(61),"")'=
t0=แทนที่(t0,Chr(62),"")'>
t0=แทนที่(t0,Chr(63),"")'?
t0=แทนที่(t0,Chr(64),"")'@
t0=แทนที่(t0,Chr(91),"")'/
t0=แทนที่(t0,Chr(92),"")'/
t0=แทนที่(t0,Chr(93),"")']
t0=แทนที่(t0,Chr(94),"")'^
t0=แทนที่(t0,Chr(95),"")'_
t0=แทนที่(t0,Chr(96),"")''`
t0=แทนที่(t0,Chr(123),"")'{
t0=แทนที่(t0,Chr(124),"")'|
t0=แทนที่(t0,Chr(125),"")'}
t0=แทนที่(t0,Chr(126),"")'~
กรณีอื่น
t0=แทนที่(t0, "&", "&")
t0=แทนที่(t0, "'", "'")
t0=แทนที่(t0, """", """)
t0=แทนที่(t0, "<", "<")
t0=แทนที่(t0, ">", ">")
สิ้นสุดการเลือก
IF Instr(Lcase(t0),"expression")>0 จากนั้น
t0=แทนที่(t0,"การแสดงออก", "การแสดงออก", 1, -1, 0)
สิ้นสุดถ้า
ข้อความตัวกรอง=t0
ฟังก์ชันสิ้นสุด
-
'กรองอักขระทั่วไปและ Html
-
ฟังก์ชั่น FilterHtml(ByVal t0)
ถ้า Len(t0)=0 หรือ IsNull(t0) หรือ IsArray(t0) จากนั้น FilterHtml="":Exit Function
ถ้า Len(Sdcms_Badhtml)>0 จากนั้น t0=ReplaceText(t0,"<(//|)("&Sdcms_Badhtml&")", "<$1$2")
ถ้า Len(Sdcms_BadEvent)>0 จากนั้น t0=ReplaceText(t0,"<(.[^>]*)("&Sdcms_BadEvent&")", "<$1$2")
t0=ข้อความตัวกรอง(t0,0)
ตัวกรองHtml=t0
ฟังก์ชันสิ้นสุด
ฟังก์ชั่น GotTopic (ByVal t0, ByVal t1)
ถ้า Len(t0)=0 หรือ IsNull(t0) แล้ว
มีหัวข้อ = ""
ออกจากฟังก์ชัน
สิ้นสุด ถ้า
หรี่ l,t,c,i
t0=แทนที่(แทนที่(แทนที่(แทนที่(t0," "," "),"",chr(34)),">",">"),"<", "<")
l=เลน(t0)
เสื้อ=0
สำหรับ I=1 ถึง l
c=Abs(Asc(กลาง(t0,i,1)))
ถ้า c>255 แล้ว t=t+2 อย่างอื่น t=t+1
ถ้า t>=t1 แล้ว
gotTopic=ซ้าย(t0,I)&"…"
ออกเพื่อ
อื่น
GotTopic=t0
สิ้นสุด ถ้า
ต่อไป
GotTopic=แทนที่(แทนที่(แทนที่(แทนที่(GotTopic," "," "),chr(34),""),">",">"),"<", "<")
ฟังก์ชันสิ้นสุด
ฟังก์ชั่น UrlDecode (ByVal t0)
หรี่แสง t1,t2,t3,i,t4,t5,t6
t1=""
t2=เท็จ
t3=""
สำหรับ I=1 ถึง Len(t0)
t4=กลาง(t0,I,1)
ถ้า t4="+" แล้ว
t1=t1&" "
ElseIF t4="%" จากนั้น
t5=กลาง(t0,i+1,2)
t6=Cint("&H" & t5)
ถ้า t2 แล้ว
t2=เท็จ
t1=t1&Chr(Cint("&H"&t3&t5))
อื่น
ถ้า Abs(t6)<=127 แล้ว
t1=t1&Chr(t6)
อื่น
t2=จริง
t3=t5
สิ้นสุด ถ้า
สิ้นสุด ถ้า
ผม=ผม+2
อื่น
t1=t1&t4
สิ้นสุด ถ้า
ต่อไป
UrlDecode=t1
ฟังก์ชันสิ้นสุด
ฟังก์ชั่น CutStr (byVal t0, byVal t1)
หรี่ l,t,c,i
ถ้า IsNull(t0) จากนั้น CutStr="":Exit Function
l=เลน(t0)
t1=อินท์(t1)
เสื้อ=0
สำหรับ I=1 ถึง l
c=Asc(กลาง(t0,I,1))
ถ้า c<0 หรือ c>255 แล้ว t=t+2 อื่น t=t+1
ถ้า t>=t1 แล้ว
CutStr=ซ้าย(t0,I)&"..."
ออกเพื่อ
อื่น
ตัดStr=t0
สิ้นสุด ถ้า
ต่อไป
ฟังก์ชันสิ้นสุด
ฟังก์ชั่น CloseHtml (ByVal t0)
Dim t1,I,t2,t3,Regs,แมตช์,J,แมตช์
ตั้งค่า Regs=RegExp ใหม่
Regs.IgnoreCase=จริง
Regs.Global=จริง
t1=อาร์เรย์("p", "div", "span", "ตาราง", "ul", "แบบอักษร", "b", "u", "i", "h1", "h2", "h3" ""h4""h5""h6")
สำหรับ I=0 ถึง UBound(t1)
t2=0
t3=0
Regs.Pattern="/<"&t1(I)&"( [^/</>]+|)/>"
ตั้งค่าการจับคู่=Regs.Execute(t0)
สำหรับการแข่งขันแต่ละครั้งในการแข่งขัน
t2=t2+1
ต่อไป
Regs.Pattern="/</"&t1(I)&"/>"
ตั้งค่าการจับคู่=Regs.Execute(t0)
สำหรับการแข่งขันแต่ละครั้งในการแข่งขัน
t3=t3+1
ต่อไป
สำหรับ j=1 ถึง t2-t3
t0=t0+"</"&t1(ฉัน)&">"
ต่อไป
ต่อไป
ปิดHtml=t0
ฟังก์ชันสิ้นสุด