เมื่อเขียน 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=:ออกจากฟังก์ชัน
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=แทนที่(t0,Chr(9),)'tab(อักขระแท็บแนวนอน)
t0=แทนที่(t0,Chr(10),)'ขึ้นบรรทัดใหม่
t0=แทนที่(t0,Chr(11),)'tab(แท็บแนวตั้ง)
t0=แทนที่(t0,Chr(12),)' การเปลี่ยนแปลงหน้า
t0=Replace(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=:ออกจากฟังก์ชัน
ถ้า 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=ซินท์(&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=:ออกจากฟังก์ชัน
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,table,ul,font,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.รูปแบบ=/</&t1(I)&/>
ตั้งค่าการจับคู่=Regs.Execute(t0)
สำหรับการแข่งขันแต่ละครั้งในการแข่งขัน
t3=t3+1
ต่อไป
สำหรับ j=1 ถึง t2-t3
t0=t0+</&t1(I)&>
ต่อไป
ต่อไป
ปิดHtml=t0
ฟังก์ชันสิ้นสุด