一個簡單的後台連線防護程式

需求很簡單,公司的網頁雖然有對外公開,但總是會有一些管理後台,這些管理後台的「安全」通常就要花費程式人員許多的時間,但想了想,公司會使用這些後台的人都是由「內網」來連線,而且Server也在內網,而且我也看不到有人下班後還在使用這些管理後台裡工作,所以就想出了這段簡單的程式碼來做第一段的防護,發現效果還不錯,分享出來給各位:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  Dim localIP As String = ""

  '取得連線的IP
  localIP = Request.ServerVariables("REMOTE_ADDR").ToString
  Dim IP() As String = localIP.Split(".")

  '判斷前三碼是否為內網IP段
  If IP(0) <> "192" OrElse IP(1) <> "168" OrElse IP(2) <> "3" Then
    Response.Write(">script type="text/javascript">
alert('此網頁只能從公司內網進入!網頁將轉向首頁!')
>/script>")
    Response.Redirect("http://kkbruce.blogspot.com/")
  End If
End Sub
End Class

原理很簡單,我只是1.取得遠端IP,2.然後分割為陣列,3.然後比對一下,不對的話,4.就請他離開!因為轉向很快,所以那段javascript不會顯示,各位可以加強一下。

唯一的代價是,「完完全全無法從外網連線」。不過還是有解,我們或許可以偷放個參數,當參數為true時,就停用此段程式碼。

各位不要小看以上這段小程式,基本上他的作用不管是內網還是外網都可以很正常的運作,怎麼說?例如我們的Server是放在外面的機房,但只要我們公司對外的IP是固定IP,我們一樣可以使用以上的方式來過濾不安全的IP連線,不是公司的IP就不給連線,現在的ADSL要申請固定IP那麼簡單,所以這一段就留給大家去解決。

2 則留言:

  1. 這個功能不需要寫程式
    IIS本身就內建這樣的機制了,可以設定允許的來源IP

    回覆刪除
  2. Dear Jed
    我會從程式觀點出發,是因為…IIS有5.6.7...版本之分,不是每個版本都有你說的功能。

    還是很感謝你提供資訊。

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。