%ALLUSERSPROFILE%:All Users設定檔的資料夾位置。
%APPDATA%:目前使用者的Application Data資料夾位置。
%CD%:目前的工作資料夾。
%CLIENTNAME%:目前使用者的NETBIOS電腦名稱。
%CMDCMDLINE%:處理目前命令提示字元視窗命令的cmd.exe的完整路徑。
%CMDEXTVERSION%:目前Command Processor Extensions的版本。
%COMPUTERNAME%:電腦名稱。
%COMSPEC%::命令提示字元視窗的解譯程式路徑,通常與%CMDCMDLINE%相同。
%CommonProgramFiles%:Common Files資料夾的路徑。
%DATE%:目前的系統日期。
%ERRORLEVEL%:最近執行過的命令的錯誤碼;非零的值表示發生過的錯誤碼。
%HOMESHARE%:目前使用者共用資料夾的網路路徑。
%HomeDrive%:使用者目錄的磁碟機。
%HomePath%:使用者家目錄。
%LOGONSEVER%:目前使用者所登入的網路控制器名稱。
%NUMBER_OF_PROCESSORS%:電腦的處理器數量。
%OS%:作業系統名稱,其值固定為Windows_NT
%PATHEXT%:作業系統是為執行檔的副檔名。
%PROCESSOR_ARCHITECTURE%:處理器的架構名稱,例如x86。
%PROCESSOR_IDENTFIER%:說明處理器的文字(不一定會有此環境變數)。
%PROCESSOR_LEVEL%:處理器的model number。
%PROCESSOR_REVISION%:處理器的revision number。
%PROMPT%:目前解譯程式的命令提示字串。
%Path%:執行檔的搜尋路徑。
%ProgramFiles%:應用程式目錄,預設是C:\Program Files。
%RANDOM%:顯示0到32767之間的十進位整數亂數。
%SESSIONNAME%:連上終端伺服器的session names。
%SystemDirectory%:系統目錄,預設是C:\WINNT\System32或C:\WINDOWS\System32。
%SystemDrive%:系統磁碟機,預設是C:。
%SystemRoot%:系統根目錄,預設是C:\WINNT或C:\WINDOWS。
%TIME%:目前的系統時間。
%Temp%、%Tmp%:暫存檔目錄。
%USERPROFILE%:目前使用者的設定檔路徑。
%UserDomain%:包含使用者帳號的網域名稱,或者電腦名稱。
%UserName%:使用者帳號名稱。
%WinDir%:Windows目錄,預設是C:\WINNT或C:\WINDOWS。
jonas1011 發表在 痞客邦 留言(0) 人氣(123)
一、跨網域限制
使用ajax進行http通訊時,必須處理跨網域限制,也就是限制頁面裡所請求的URL必須與頁面本身屬於相同網域,
就像是JavaScript不能操作其他頁框(frame)或子視窗中其他網域之網頁的內容一樣。這是各種瀏覽器所現有的限制,
實作時不需特別在意。
二、跨網站指令碼(cross-site scripting;XSS)
通常發生在表單傳送資料時,如server端的test.php程式
<?php echo($_GET['test']); ?>
這時有人不經表單而自行傳送
test.php?test=<script>alert('您好')</script>
這樣的GET請求,JavaScript是會被執行的。
●排除外來的程式碼:
常用的方法是將HTML標籤無效化,如將<轉換成<,將>轉換成>
php可使用htmlspecialchars()函式轉換
$data="<script>alert(1)</script>";
$data=htmlspecialchars($data);
echo $data;
perl可用正規表示式(regular expression)來轉換
$data=~ s/</</g;
print $data;
●JSON eval動作應小心
eval("var test=" + oj.responseText);
這段程式碼必須小心responseText的內容不能是外部傳送進來的原來樣子。
三、SQL/OS命令植入攻擊
●SQL Injection攻擊
$SQL="select * from tableA where id=".$_GET['id'].";";
像這樣對$_GET['id']原封不動放入SQL敘述裡,外部很有機會放入惡意程式碼來執行。
例如將$_GET['id']改為
;DROP TABLE tableA;
則tableA會被刪除掉
●單引號「'」插入SQL敘述攻擊
以PHP而言,可用mySQL_escape_string(),SQLite_escape_string()函式來跳脫SQL指令。
●OS命令植入攻擊(OS Command Injection)
程式中若使用system(),倒引號「`」來執行shell,可能會遭受OS Command Injection。
以PHP而言,可用escapeshellarg(),escapeshellcmd()函式避免風險。
若php.ini裡的magic_quotes_gpc設為on,則GET/POST/Cookie傳入之資料中所包含的所有單引號「'」、
雙引號「"」、反斜線「\」與null字元會自動被加上反斜線跳脫。
四、密碼檔案管理
密碼不能寫在JavaScript裡。
密碼不能寫在伺服端的程式碼裡。如http sever出問題,php或perl等程式碼可能會見光死。
ajax進行http通訊時,以open方法傳入帳號、密碼。原則上這些帳號、密碼應由使用者輸入,
伺服端應該這些資料加密,並妥善存放在不會被公開到web上的目錄下。
五、參考表格:
SQL Injection
mySQL/php對策:$code=mySQL_escape_string($_GET['code']);
mySQL/perl對策:$code=~s/'/"/g; $code=~s/\\/\\\\/g;
pgSQL/php對策:$code=pgSQL_escape_string($_GET['code']);
pgSQL/perl對策:$code=~s/'/"/g; $code=~s/\\/\\\\/g;
SQLite/php對策:$code=SQLite_escape_string($_GET['code']);
OS Commmand Injection
Linux/php對策:$safe_text=escapeshellarg($text);
Linux/perl對策:$test=~s/'/\\'/g;
cross site scripting
php對策:$data=htmlspecialchars($data);
perl對策:$data=~s/</</g;
jonas1011 發表在 痞客邦 留言(0) 人氣(303)
JavaScript 的正規式(Regular expressions)是一個內建的物件,
其建構函示(Construction functoin)為 RegExp,典型用法如下:
<font>
re = new RegExp("pattern", "flag")
</font>
jonas1011 發表在 痞客邦 留言(0) 人氣(9,121)
DOCTYPE 切換運作的方式:
若有完整 URI 的 XHTML DOCTYPE,則切到標準模式,用 W3C 規則來讀網頁裡的 CSS 與 XHTML。
若有不完整或過時的 DOCTYPE 或沒有 DOCTYPE,就切成相容模式,用傳統方法來處理網頁。
jonas1011 發表在 痞客邦 留言(0) 人氣(123)

你相信嗎?
一顆牛腱要價9萬5千零九十九塊!!
有圖為證!!
jonas1011 發表在 痞客邦 留言(0) 人氣(23)
php從版本5.1.0之後,在php.ini上加入了date.timezone,這個項目是用來設定時區。
若是這個項目關閉的話,那預設時間皆是格林威治標準時間。
因此,要顯示為台北時間(GMT+8)的話,需要開啟這項功能,並將date.timezone設定為:
date.timezone = Asia/Taipei
jonas1011 發表在 痞客邦 留言(0) 人氣(157)
On error resume next
Dim JMail, contentId
Set JMail = Server.CreateObject("JMail.Message")
JMail.Charset = "big5" ' 郵件字符集,預設為"US-ASCII"
JMail.ISOEncodeHeaders = False ' 是否進行ISO編碼,預設為True
'發送者信息(可用變量方式賦值)
JMail.From = "name@domain.net" ' 發送者地址
JMail.FromName = "name" ' 發送者姓名
JMail.Subject = "subject" ' 郵件主題
'身份驗證
JMail.MailServerUserName = "username" ' 身份驗證的用戶名
JMail.MailServerPassword = "password" ' 身份驗證的密碼
' 設置優先級,範圍從1到5,越大的優先級越高,3為普通
JMail.Priority = 3
JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
' 加入一個收件人【變量email:收件人地址】可以同一語句重複加入多個
JMail.AddRecipient("someone@somehost.com")
' 加入附件【變量filename:附件文件的絕對地址,確保用戶IUSR_機器名有訪問的權限】
' 【參數設置是(True)否(False)為Inline方式】
'contentId = JMail.AddAttachment (Server.MapPath("jmail.asp"), True)
' 郵件主體(HTML(注意信件內鏈接附件的方式))
JMail.HTMLBody = "<html><head><meta http-equiv="content-type" content="text/html; charset=big5" /></head><body><font color="red">郵件正文</font></body></html>"
' 郵件主體(文本部分)
JMail.Body = "我們的郵件採用了HTML格式,但是您的郵件查看軟件可能不支持……郵件正文,郵件正文,郵件正文"
' 發送【調用格式:objJMail.Send([username:password@]SMTPServerAddress[:Port])】
JMail.Send("smtp.domain.com")
' 關閉並清除物件
JMail.Close()
Set JMail = Nothing
jonas1011 發表在 痞客邦 留言(0) 人氣(1,664)
進入 about:config 頁面
將 browser.search.openintab 設為 True
jonas1011 發表在 痞客邦 留言(0) 人氣(118)
ASP沒有像PHP中有函式可以轉換成UNIX時間,所以還得自己寫一個函式來用,
可是本人很懶惰,實在不想自己寫啦!只好請出google大神來幫忙,剛好找到下面這兩個函式:
'參數:strTime:要轉換的時間;intTimeZone:該時間對應的時區
'返回值:strTime相對於1970年1月1日午夜0點經過的秒數
'示例:ToUnixTime("2008-5-23 10:51:0", +8),返回值為1211511060
Function ToUnixTime(strTime, intTimeZone)
If ( IsEmpty(strTime) Or Not IsDate(strTime) ) Then
strTime = Now
End If
If ( IsEmpty(intTimeZone) Or Not isNumeric(intTimeZone) ) Then
intTimeZone = 0
End If
ToUnixTime = DateAdd("h", -intTimeZone, strTime)
ToUnixTime = DateDiff("s","1970-1-1 0:0:0", ToUnixTime)
End Function
'把UNIX時間戳轉換為標準時間
'參數:intTime:要轉換的UNIX時間戳;intTimeZone:該時間戳對應的時區
'返回值:intTime所代表的標準時間
'示例:FromUnixTime("1211511060", +8),返回值2008-5-23 10:51:0
Function FromUnixTime(intTime, intTimeZone)
If IsEmpty(intTime) Or Not IsNumeric(intTime) Then
FromUnixTime = Now()
Exit Function
End If
If IsEmpty(intTime) Or Not IsNumeric(intTimeZone) Then
intTimeZone = 0
End If
FromUnixTime = DateAdd("s", intTime, "1970-1-1 0:0:0")
FromUnixTime = DateAdd("h", intTimeZone, FromUnixTime)
End Function
jonas1011 發表在 痞客邦 留言(0) 人氣(402)
jonas1011 發表在 痞客邦 留言(0) 人氣(204)