顯示具有 ASP 標籤的文章。 顯示所有文章
顯示具有 ASP 標籤的文章。 顯示所有文章

2019年11月24日 星期日

.net vb 排除特定符號字元

需要阻擋透過表單傳遞惡意傳遞sql或其他指令,本想用正則表達式但考慮到email跟一些使用者可能使用的符號所以還是作罷,最後用比對方式處理,紀錄一下參考資料

VB.NET code

Public Class Form3
    Private ReadOnly InvalidChars As String = "[" + System.Text.RegularExpressions.Regex.Replace(""";&^%$#", ".", "\$&") + "]"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim s As String = "有特殊字符哦"
        If System.Text.RegularExpressions.Regex.Match(s, InvalidChars).Success Then
            MessageBox.Show("有特殊字符")
        Else
            MessageBox.Show("没有特殊字符")
        End If
    End Sub
End Class

參考網址:

2019年2月10日 星期日

.NET跟IIS的上傳限制設定

更新版本後的IIS以前的寫法沒用了,網路上找到的方法引用來memo當筆記

ASP.net File Upload Size

前言

從IIS7開始,IIS預設限制28MB左右的要求內容長度,而ASP.net預設則是限制4MB大小
如果一個網站的用戶想上傳100MB檔案,勢必IIS和ASP.net兩邊都要設定

實作

ASP.net Web.config裡寫下以下區段
<system.web>
 <httpRuntime  maxRequestLength="102400" executionTimeout="600"/>
</system.web>
maxRequestLength 檔案大小(KB),預設值4096 KB(4MB),所以102400KB為100MB
executionTimeout 上傳時間(秒),600秒為10分鐘
<system.webServer>
 <security>
  <requestFiltering>
   <requestLimits maxAllowedContentLength="104857600" />
  </requestFiltering>
 </security>
</system.webServer>
maxAllowedContentLength 檔案大小(byte),所以104857600(1024*1024*100)為100MB
上述system.webServer也可以透過IIS來設定
允許的內容長度上限預設值為30000000(約28MB),把它修改為104857600

如此一來,網站便可以上傳100MB大小的檔案了

加碼補充

如果當使用者上傳檔案超過限制大小時,想重新導向到自訂的錯誤頁面
在Global.asax.cs裡寫下...
protected void Application_BeginRequest(object sender, EventArgs e)
{
 HttpRuntimeSection section = (HttpRuntimeSection)ConfigurationManager.GetSection("system.web/httpRuntime");
 int maxFileSize = section.MaxRequestLength * 1024;
 if (Request.ContentLength > maxFileSize)
 {
  try
  {
   Response.Redirect("~/MySizeError.aspx");
  }
  catch (Exception ex)
  {
   
  }
 }
}


引用來源:高級打字員的技術雲

2018年8月1日 星期三

解決瀏覽器暫存網頁無法自動更新css檔案問題

瀏覽器暫存會讓網站的css檔案無法即時更新,雖然強制重整就能解決但如果用手機觀看除非清除資料不然只能等暫存更新時間才能更新,為了讓客戶可以即時看到修改乾脆在css檔案的路徑後方加上亂數,這樣瀏覽器就會以為是不同檔案重抓css了


.net vb
<link href="Style.css?v=<%=now()%>" rel="stylesheet" type="text/css">

懶得建立亂數乾脆用當下時間了,缺點是使用者會一直下載Cache檔案 XDDD


2012年11月9日 星期五

asp網頁編碼big5->utf8處理辦法


處理很久搞不定的big5 透過post將資料傳到utf-8的頁面會出現中文亂碼問題...
總算找到個解決方法..記錄起來
轉錄自:Itano Tomomi

asp網頁採用的編碼(encoding)是用系統預設的語系,在windows 2003底下是big5。那該如何將big5轉成utf8呢?這很簡單(不是團結的故事),使用Session.CodePage跟Server.UrlEncode()就可以了。
sourceURL = "http://itanotomomi.akb48/板野友美.htm"
dim i,utf8URL,tmp,encodingStr

for i=1 to Len(sourceUrl)
  tmp = mid(sourceUrl, i, 1)
  if asc(tmp) < 0 or asc(tmp) > 128 then  '將ascii碼在1~128以外的字元當成中文編成utf8
    Session.CodePage="65001" '先將網頁設成utf8
    encodingStr = Server.UrlEncode(tmp) '將中文編成utf8
    Session.CodePage="950" '再將網頁設為Big5
    utf8URL = utf8URL & encodingStr
  else
    utf8URL = utf8URL & tmp
  end if
next
為什麼要這樣做呢?因為asp使用Server.UrlEncode()進行編碼是採用系統預設的語系,若不更改網頁的語系為utf8,直接使用Server.UrlEncode()的話,會編成big5。而且千萬記得,編成utf8後,要再將Session.CodePage指定回big5,不然以big5為主的asp網站會整個亂掉。
不過若到上面為止,就想直接將encodingStr用response.redirect送出的話,會發現還是找不到網頁。那是因為response.redirect在導向的過程會採用系統預設的語系再編碼過一次...orz...
我目前解決的方式是不用response.redirect,改使用javascript的window.open()。不過缺點是會被瀏覽器擋住。
response.write "<script type='text/javascript'>window.open('" & utf8URL & "');</script>"
以上是純ASP的解決方法,接著介紹透過ASP.NET的解法。
首先是ASP端,將url編碼丟給ASP.NET。這邊採用預設編成big5就可以了,反正主要處理在ASP.NET端。 
sourceURL = "http://itanotomomi.akb48/板野友美.htm"
Response.Redirect "http://itanotomomi.akb48/passUTF8.aspx?q=" & Server.UrlEncode(sourceUrl)
接著在passUTF8.aspx.cs的Page_Load(若使用VB則是passUTF8.aspx.vb)中撰寫下面的語法。
string sourceURL = Request.Url.Query;
sourceURL = HttpUtility.UrlDecode(sourceURL, Encoding.GetEncoding("big5")); //將asp用big5傳來的url decode
sourceURL = sourceURL.Replace("?q=", "");
Response.Redirect(sourceURL);
因為ASP.NET使用utf8,所以將asp傳來的url編成utf8後就可以直接使用Response.Redirect()丟出去了。

2012年9月11日 星期二

Request.ServerVariables 所有元素的用法

變數說明
Request.ServerVariables["ALL_HTTP"]Client端發送的所有 HTTP 標題文件
Request.ServerVariables["ALL_RAW"]顯示未處理表格中所有的標題
Request.ServerVariables["APPL_MD_PATH"]顯示 ISAPI DLL 的 (WAM) Application 的資料庫路徑
Request.ServerVariables["APPL_PHYSICAL_PATH"]顯示與資料庫路徑相應的物理路徑
Request.ServerVariables["AUTH_PASSWORD"]該值输入到客户端的鑒定對話中
Request.ServerVariables["AUTH_TYPE"]用户訪問受保護的脚本時,服務器用於檢驗用户的驗證方法
Request.ServerVariables["AUTH_USER"]未被鑒定的用户名
Request.ServerVariables["CERT_COOKIE"]客户端驗證的唯一 ID,以字串方式返回
Request.ServerVariables["CERT_FLAGS"]如有客户端驗證,则 bit0 為 1
如果客户端驗證的驗證人無效(不在伺服器許可的 CA 列表中),bit1 被設置為 1
Request.ServerVariables["CERT_ISSUER"]用户驗證中的頒布者字段(O=MS,OU=IAS,CN=user name,C=USA)
Request.ServerVariables["CERT_KEYSIZE"]安全套接字層連接關键字的位數,如 128
Request.ServerVariables["CERT_SECRETKEYSIZE"]伺服器驗證私人關键字的位數,如 1024
Request.ServerVariables["CERT_SERIALNUMBER"]用户驗證的序列號字段
Request.ServerVariables["CERT_SERVER_ISSUER"]伺服器驗證的頒發者字段
Request.ServerVariables["CERT_SERVER_SUBJECT"]伺服器驗證的主字段
Request.ServerVariables["CERT_SUBJECT"]客户端驗證的主字段
Request.ServerVariables["CONTENT_LENGTH"]客户端發出内容的長度
Request.ServerVariables["CONTENT_TYPE"]内容的數據類型
Request.ServerVariables["GATEWAY_INTERFACE"]伺服器使用的 CGI 規格的修訂
Request.ServerVariables["HTTP_HeaderName"]HeaderName 儲存在標題文件中的值
Request.ServerVariables["HTTPS"]如果請求穿過安全通道(SSL),則返回 ON。如果請求來自非安全通道,则返回 OFF。
Request.ServerVariables["HTTPS_KEYSIZE"]安全套接字層連接關键字的位數,如 128。
Request.ServerVariables["HTTPS_SECRETKEYSIZE"]伺服器驗證私人關键字的位數。如 1024。
Request.ServerVariables["HTTPS_SERVER_ISSUER"]伺服器驗證的頒發者字段
Request.ServerVariables["HTTPS_SERVER_SUBJECT"]伺服器驗證的主字段
Request.ServerVariables["INSTANCE_ID"]文本格式 IIS 實例的 ID
Request.ServerVariables["INSTANCE_META_PATH"]響應请求的 IIS 實例的資料庫路徑
Request.ServerVariables["LOCAL_ADDR"]返回接受請求的伺服器地址
Request.ServerVariables["LOGON_USER"]用户登入 Windows NT® 的帳號
Request.ServerVariables["PATH_INFO"]客户端提供的額外路徑信息
Request.ServerVariables["PATH_TRANSLATED"]PATH_INFO 轉換後的版本,該變數獲取路徑並進行必要的由虛擬至物理的映射
Request.ServerVariables["QUERY_STRING"]查询 HTTP 請求中問號(?)後的信息。
Request.ServerVariables["REMOTE_ADDR"]發出请求的遠程主機的 IP 地址
Request.ServerVariables["REMOTE_HOST"]發出請求的主機名稱
Request.ServerVariables["REMOTE_USER"]用户發送的未映射的用户名字串
Request.ServerVariables["REQUEST_METHOD"]該方法用於提出請求
Request.ServerVariables["SCRIPT_NAME"]執行脚本的虛擬路徑
Request.ServerVariables["SERVER_NAME"]出現在自引用 UAL 中的伺服器主機名、DNS 化名或 IP 地址
Request.ServerVariables["SERVER_PORT"]發送請求的 port
Request.ServerVariables["SERVER_PORT_SECURE"]如果安全端口處理了請求,則為 1,否則為 0。
Request.ServerVariables["SERVER_PROTOCOL"]請求信息協議的名稱和修訂
Request.ServerVariables["SERVER_SOFTWARE"]應答請求並運行網關的伺服器軟件的名稱和版本
Request.ServerVariables["URL"]提供 URL 的基本部分

引用:http://asp.jz123.cn/innerobject/request/intr5vsj.htm