chr(9) chr(10) chr(13) chr(32) chr(34)
ตารางทั้งหมดเกี่ยวกับรหัส ASCII: [url][/url]
chr(13) คือการส่งคืนรถ
Chr(10) เป็นอักขระขึ้นบรรทัดใหม่
chr(32) เป็นอักขระช่องว่าง
9/34 เป็นแท็บไม่ระบุ?
นี่คือตัวอย่างบางส่วน
อักขระพื้นที่พิเศษ
ในการเขียนโปรแกรม asp เรามักจะใช้ฟังก์ชัน trim(rtrim,ltrim) เพื่อลบช่องว่างที่จุดเริ่มต้นและจุดสิ้นสุดของข้อมูลบางส่วน ผู้เขียนเพิ่งเขียนห้องสนทนา asp ด้วยโค้ดต่อไปนี้:
<% ชื่อ,ชื่อเรื่องสลัว
name=trim(request.form("ชื่อ"))
รหัสผ่าน=trim(request.form("รหัสผ่าน"))
ถ้า name=""หรือรหัสผ่าน="" แล้ว response.redirect "error.asp?error=name&name=null"
myDSN="DSN=test;uid=test;pwd=test"
ตั้งค่า cn=server.createobject("adodb.connection")
cn.เปิด myDSN
sql = "ใส่เข้าไปในค่าทดสอบ (ชื่อ, ชื่อ) ('"&ชื่อ&"','"&รหัสผ่าน&"')"
cn.execute(sql)
cn.ปิด%>
ผู้เขียนใช้ฟังก์ชันตัดแต่งเพื่อลบช่องว่างที่จุดเริ่มต้นและจุดสิ้นสุด ภายใต้สถานการณ์ปกติ โปรแกรมนี้ทำงานได้ตามปกติ แต่ต่อมาฉันพบว่ามีคนสามารถใช้ช่องว่างในการป้อนได้ ซึ่งหมายความว่าชื่อผู้ใช้นั้นเป็นช่องว่างทั้งหมด ผู้เขียนพยายามใช้ช่องว่างแต่ไม่สามารถผ่านได้ (คือ มันถูกตรวจพบโดยโปรแกรม) ช่องว่างที่จุดเริ่มต้นและจุดสิ้นสุดถูกลบออกโดยฟังก์ชันการตัดแต่ง แม้ว่าจะมีช่องว่างตรงกลางฉันก็สามารถใช้ได้ ถ้าจำเป็น ใช้ฟังก์ชันลบช่องว่างตรงกลาง เนื่องจากผู้เขียนใช้ข้อมูลผู้ใช้ที่บันทึกไว้ในฐานข้อมูล sql ผู้เขียนจึงสงสัยว่าเขาได้ใช้อย่างอื่นเพื่อป้องกันไม่ให้ระบบมองเห็น จึงไปตรวจสอบฐานข้อมูล sql ที่บันทึกข้อมูลผู้ใช้ (ผู้เขียนฉันใช้วิธีนี้เพื่อดูผู้ใช้ที่มีการขึ้นบรรทัดใหม่) แต่ฉันยังเห็นว่าข้อมูลของผู้ใช้ในฐานข้อมูลยังมีช่องว่างด้วย หมายความว่าผู้ใช้รายนี้ใช้วิธีการเลี่ยงชื่อผู้ใช้ของฉันหรือไม่ และการตรวจสอบรหัสผ่าน? - - ฉันไม่พบช่องโหว่ใด ๆ ในโปรแกรมดังนั้นฉันจึงขอคำแนะนำจากผู้ใช้รายนี้เท่านั้น โชคดีที่ผู้ใช้รายนี้บอกฉันทันทีว่ามันกลายเป็น "Alt+255" กดปุ่ม alt ค้างไว้แล้วกด " Center" บนแป้นพิมพ์ขนาดเล็ก 2", "5", "5" จะสร้างอักขระ "เว้นวรรค" พิเศษ (ผู้เขียนไม่ค่อยชัดเจนเกี่ยวกับแนวคิดนี้ นี่คืออักขระควบคุมในคอมไพเลอร์บางตัว คุณสามารถดู word2000 ได้ในโปรแกรมแก้ไข และควรมีอักขระควบคุมอื่นๆ) อักขระเว้นวรรคนี้แตกต่างจากอักขระดั้งเดิมที่สร้างขึ้นโดยการกดแป้นเว้นวรรค 32. ฟังก์ชั่นตัดแต่งสามารถจดจำและลบโค้ดที่มีโค้ด asc 32 เท่านั้น จึงมีผู้ใช้ที่มีช่องว่าง! เพื่อตอบสนองต่อสถานการณ์นี้ ผู้เขียนได้ออกแบบฟังก์ชันสองฟังก์ชันต่อไปนี้เพื่อลบอักขระ "ช่องว่าง":
ฟังก์ชันซวนคง(str)
ผลลัพธ์สลัว
สลัวเจ
j=เลน(str)
ผลลัพธ์ = ""
สลัวฉัน
สำหรับฉัน = 1 ถึงเจ
เลือกกรณีกลาง (str, i,1)
กรณี "<"
ผลลัพธ์=ผลลัพธ์+"<"
กรณี ">"
ผลลัพธ์=ผลลัพธ์+">"
กรณี ch(34)
ผลลัพธ์=ผลลัพธ์+"""
กรณี "&"
result=result+"&" 'โค้ดด้านบนแปลงแท็ก html บางส่วน
กรณี chr (255) 'ป้องกันการเว้นวรรคพิเศษ
ผลลัพธ์=ผลลัพธ์
กรณี ch (13) 'ป้องกันการส่งคืนรถ
ผลลัพธ์=ผลลัพธ์+""
กรณี chr (10) 'ป้องกันการขึ้นบรรทัดใหม่
ผลลัพธ์=ผลลัพธ์+""
กรณีอื่น
ผลลัพธ์=ผลลัพธ์+กลาง(str,i,1)
สิ้นสุดการเลือก
ต่อไป
ซวนคง=ผลลัพธ์
ฟังก์ชั่นสิ้นสุด
จากนั้นใช้ฟังก์ชันนี้ในโปรแกรม asp ของคุณ เช่น:
name=xuankong(trim(request.form("ชื่อ")))
เนื่องจากค่าของอักขระ 0-z asc code อยู่ในช่วง 48-122 คุณจึงสามารถใช้วิธีต่อไปนี้เพื่อตรวจสอบ:
สลัวเจ
j=len(ตัดแต่ง(request.form("ชื่อ")))
สำหรับ i= 1 ถึง j
ถ้า asc(mid(name,i,1))>122 หรือ asc(mid(name,i,1))<48 แล้ว response..redirect"error.asp?
ข้อผิดพลาด=พิเศษ"
ต่อไป
แม้ว่ายังไม่พบว่า "พื้นที่" ประเภทนี้ก่อให้เกิดปัญหาที่จะทำให้โปรแกรมเสียหาย แต่ก็สามารถทำให้เกิดปัญหาได้และควรป้องกันไว้จะดีกว่า อย่างไรก็ตาม หากใช้พื้นที่ประเภทนี้ก็มีข้อดีเช่นกัน รหัสผ่านอินเตอร์เน็ตของคุณ อิอิ... เกรงว่าจะมีคนเห็นไม่มากนัก! ทุกสิ่งที่ฉันเห็นถูกมองว่าเป็นพื้นที่ แต่ไม่ใช่... ผู้เขียนไม่คุ้นเคยกับ php และ jsp เลยไม่รู้ว่าทั้งสองสิ่งนี้มีปัญหาประเภทนี้หรือไม่
ใหม่ 12-01-2549 01:55 น
วิธีอ่านช่องว่าง
วิธีอ่านช่องว่าง
เรามักจะจำเป็นต้องแสดงเนื้อหาที่นำมาจากไฟล์บนเว็บเพจแบบไดนามิก หากคุณเขียนโปรแกรม เช่น ห้องสนทนาหรือฟอรั่ม เนื้อหาของวิทยากรแต่ละคนจะต้องถูกเก็บไว้ในไฟล์ข้อความก่อนแล้วจึงแสดงในไฟล์ข้อความบน หน้าเว็บ แต่การควบคุมที่เราใช้บนหน้าเว็บเพื่อให้ผู้ใช้สามารถป้อนเนื้อหาได้คือกล่องข้อความ จากนั้นเมื่อเนื้อหาในกล่องข้อความแสดงบนหน้าเว็บ จะไม่สามารถแสดงอักขระ เช่น การเว้นวรรคและการขึ้นบรรทัดใหม่ได้ ซึ่งหมายความว่าไม่มีย่อหน้า ในการแสดงย่อหน้าบนหน้าเว็บ จะต้องแทรกแท็ก HTML ลงในช่องว่างและอักขระขึ้นบรรทัดใหม่ที่เราป้อนข้อความเพื่อแสดงอักขระเหล่านี้ โปรดดูตัวอย่างด้านล่าง
หากมีหน้าจอห้องสนทนาบนหน้าเว็บ หลังจากที่เราป้อนเนื้อหาในกล่องข้อความแล้ว ให้คลิก "ส่ง" เพื่อแสดงเนื้อหาของเราบนหน้านั้น กล่องข้อความชื่อ Text1 เราสามารถใช้วิธีต่อไปนี้ได้ ตระหนักถึงฟังก์ชั่นการแสดงตัวแบ่งบรรทัดข้อความและการเว้นวรรคอย่างชาญฉลาด
-
-
-
str=request.querystring("text1")
str=แทนที่(str, Chr(32), " ")
'แทนที่ช่องว่างด้วยป้าย'
str=แทนที่(str, vbCrLf, "<br>")
'แทนที่อักขระขึ้นบรรทัดใหม่และการป้อนบรรทัดด้วยแฟล็ก <br>
Response.write str
-
-
-
หลังจากส่งโค้ดข้างต้นแล้ว เราจะเปลี่ยนการขึ้นบรรทัดใหม่และการป้อนบรรทัดในข้อความให้เป็นเครื่องหมายป้อนบรรทัด <br> ที่เบราว์เซอร์สามารถจดจำได้ และแทนที่ช่องว่างด้วยเครื่องหมายเว้นวรรค ในหมู่พวกเขา Chr(32) แสดงถึงช่องว่างและ vbCrLf แสดงถึงการขึ้นบรรทัดใหม่และการป้อนบรรทัด
ใหม่ 12-01-2549 01:55 น
chr(13) คือการส่งคืนรถ
-
ตัวอย่าง: แทนที่การขึ้นบรรทัดใหม่ทั้งหมดด้วย <br/>
#Replace(foo, Chr(13), "<br />", "ALL")#
-
Chr(10) เป็นอักขระขึ้นบรรทัดใหม่
ตารางทั้งหมดเกี่ยวกับรหัส ASCII: [url][/url]
<cfscript>
-
* ฟังก์ชั่นการจัดรูปแบบย่อหน้าบทความเวอร์ชันปรับปรุง
* ใช้ ) เพื่อแทนที่ TAB และรองรับหลายระบบ
* รองรับการเขียนซ้ำและ multiOS โดย Nathan Dintenfas
-
* @param string สตริงที่จะจัดรูปแบบ (จำเป็น)
* @return ส่งกลับสตริง
* @ผู้เขียน เบน ฟอร์ตา ([อีเมล][email protected][/email])
* @เวอร์ชัน 3, 26 มิถุนายน 2545
-
ฟังก์ชั่น Paragrap1hFormat2(str) {
//ขั้นแรกให้สร้างสไตล์ Windows ให้เป็นสไตล์ Unix
str = แทนที่ (str, chr (13) & chr (10), chr (10), "ทั้งหมด");
//ตอนนี้ทำให้สไตล์ Macintosh เป็นสไตล์ Unix
str = แทนที่ (str, chr (13), chr (10), "ทั้งหมด");
// ตอนนี้แก้ไขแท็บ
str = แทนที่ (str, chr (9)," , "ทั้งหมด");
// ตอนนี้ส่งคืนข้อความที่จัดรูปแบบเป็น HTML
กลับแทนที่ (str, chr (10), "<br />", "ALL");
-
</cfscript>