特殊的空格字元

2021-06-21 14:57:18 字數 2429 閱讀 5664

特殊的空格字元 

author:大風

在asp程式設計中,我們常常使用trim(rtrim ,ltrim)函式去掉一些資料的開頭和結尾的空格,筆者最近寫了乙個asp聊天室, 

有下面的一段**: 

<% dim name,title 

name=trim(request.form("name")) 

password=trim(request.form("password")) 

if name="" or password="'' then response.redirect "error.asp?error=name&name=null" 

mydsn="dsn=test;uid=test;pwd=test" 

set cn=server.createobject("adodb.connection") 

cn.open mydsn 

sql="insert into test(name,title) values('"&name&"','"&password&"')" 

cn.execute(sql) 

cn.close%> 

筆者使用了trim函式來去掉開頭和結尾的空格,在一般的情況下,這段程式執行的很正常,但是後來筆者竟然發現有人竟 

然可以使用空格進來,意思就是說,該使用者的name完全為空格,但是筆者嘗試自己使用空格卻無論都不能通過(即被程式 

監測了出來),開頭和結尾的空格都被trim函式給去掉了,即使中間有空格,筆者需要的話也可以使用乙個函式把中間的 

空格給去掉,由於筆者使用的是sql資料庫記錄下的使用者資料,於是筆者懷疑他使用了其它什麼的東西讓系統看不到,於是 

去察看紀錄使用者資料的sql資料庫(筆者曾經使用這種方法看到了帶換行符的使用者),但是筆者仍然看到資料庫中的改使用者 

的資料也是空格,這難道說該使用者使用了一種手段可以繞過我的使用者名稱和密碼監測嗎???實在找不到程式上的漏洞,於 

是只能向這位使用者請教,幸運的是這位使用者爽快的告訴了筆者,原來是"alt+255",按住alt鍵然後依次按下小鍵盤 

中"2","5","5"就會產生乙個比較特殊的東西"空格"字元(這個概念筆者也不是比較清楚,這是一種控制字元,在一些編 

輯器中可以看到word2000,應該還有其他的控制字元),這個空格字元不同於傳統的按下空格鍵產生的字元,它的asc** 

是255,而傳統的space鍵入的空格的asc**是32,trim函式只能認識asc**為32的**並去除,所以出現了出現空格用 

戶的情況!針對這種情況筆者設計了下面的兩種函式去掉這個"空格"字元, 

function xuankong(str) 

dim result 

dim j 

j=len(str) 

result="" 

dim i 

for i = 1 to j 

select case mid(str,i,1) 

case "<" 

result=result+"<" 

case ">" 

result=result+">" 

case chr(34) 

result=result+""" 

case "&" 

result=result+"&" '以上**轉換一些html標記

case chr(255) '防止特殊空格 

result=result 

case chr(13) '防止回車符 

result=result+"

" case chr(10) '防止換行符 

result=result+"

" case else 

result=result+mid(str,i,1) 

end select 

next 

xuankong=result 

end function 

然後在你的asp程式中使用這個函式,比如: 

name=xuankong(trim(request.form("name")))

因為字元0-z asc**的數值為 48-122 這乙個區段 ,所以可以使用如下的方法監測:

dim j 

j=len(trim(request.form("name"))) 

for i= 1 to j 

if asc(mid(name,i,1))>122 or asc(mid(name,i,1))<48 then response..redirect"error.asp? 

error=special" 

next, 

雖然這種「空格」暫時沒有發現會破壞程式的問題,但是卻是可以讓人搗亂的,還是防了的好,不過這種空格也有一種好 

處,如果作為你得上網密碼的話,嘿嘿… …恐怕沒有幾個人能看到吧!看到的都是以為是space,但是卻不是… … 筆 

者不熟悉php和jsp所以不知道在這兩種東西中是否會存在這種問題。 

中文特殊字元 空格

zc 全形空格儲存 以後直接複製就可以使用了 全形空格 與漢字一樣作為gbk的乙個字元,它對應的十進位製碼是 定義上是2個半形空格的大小,在網頁中卻大約相當於3 4個半形空格的大小,而且它自身不易被左對齊。全形空格一般適用於在強制性左對齊的情況下需要居中或者在其他特定位置的時候。一些亂碼字中也會出現...

msyql去除空格與特殊字元

我們從excel匯入資料的時候會產生前後空字元,或者其他特殊字元,我們可以利用replace 與trim 來進行解決 update table set field replace replace replace field,char 9 char 10 char 13 去除特殊符號 update t...

HTML css js 特殊字元(空格符號)

不會累加的 只算1個 且該空格佔據寬度受 字型 影響明顯而強烈 type button 提 交button 佔據的寬度正好是1 2個中文寬度,且基本上不受字型影響 type button 提 交button 佔據的寬度正好是1個中文寬度,且基本上不受字型影響 type button 提 交butto...