ip 域名 和端口號

遇到的問題:前端發佈了項目代碼,後端在本機上,用發佈的項目代碼訪問本機,遇到了cookie不能攜帶的問題,跨域的問題?javascript

 

參考連接:https://www.jianshu.com/p/806d0514ec7dphp

先搞清楚域名、ip和端口號:html

ip:ip是是分配給網絡上使用IP協議的設備的數字標籤。咱們如今常用的是 ipv4, 由32位二進制數字組成,常以XXX.XXX.XXX.XXX形式表現。前端

域名:是由一串用「點」分隔的字符組成的Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位。如 i.cnblogs.com。java

域名按域名系統(DNS)的規則流程組成。在DNS中註冊的任何名稱都是域名。域名用於各類網絡環境和應用程序特定的命名和尋址目的。數據庫

域名和ip有區別也有聯繫,域名一般都會和IP綁定起來,經過訪問域名來訪問網絡主機上的服務。ip地址一般是指主機,而域名一般表示一個網站。一個域名能夠綁定到多個ip,多個域名也能夠綁定到一個ip。後端

域名系統(DNS):因特網上做爲域名和ip地址相互映射的分佈式數據庫,能使用戶更方便地訪問互聯網,而不用去記住可以被機器直接讀取的IP地址。經過主機名,最終獲得該主機名對應的ip地址的過程叫作域名解析。 DNS協議運行在UDP協議之上,端口號53。跨域

端口號:端口,(英語:port),主要分爲物理端口和邏輯端口。咱們通常說的都是邏輯端口,用於區分不一樣的服務。由於網絡中一臺主機只有一個IP,可是一個主機能夠提供多個服務,端口號就用於區分一個主機上的不一樣服務。一個IP地址的端口經過16bit進行編號,最多能夠有65536個端口,標識是從0~65535。端口號分爲公認端口(0~1023)、註冊端口(1024~49151)和動態端口(49152~65535)。咱們本身的服務通常都綁定在註冊端口上。瀏覽器

跨域:在 HTML 中,<a><form><img><script><iframe><link> 等標籤以及 Ajax 均可以指向一個資源地址,而所謂的跨域請求就是指:當前發起請求的域與該請求指向的資源所在的域不同。這裏的域指的是這樣的一個概念:咱們認爲若協議 + 域名 + 端口號均相同,那麼就是同域。安全

跨域請求的安全問題:一般,瀏覽器會對上面提到的跨域請求做出限制。瀏覽器之因此要對跨域請求做出限制,是出於安全方面的考慮,由於跨域請求有可能被不法分子利用來發動 CSRF攻擊。

舉例:

http://www.123.com/index.html 調用 http://www.123.com/server.php (非跨域)

http://www.123.com/index.html 調用 http://www.456.com/server.php (主域名不一樣:123/456,跨域)

http://abc.123.com/index.html 調用 http://def.123.com/server.php (子域名不一樣:abc/def,跨域)

http://www.123.com:8080/index.html 調用 http://www.123.com:8081/server.php (端口不一樣:8080/8081,跨域)

http://www.123.com/index.html 調用 https://www.123.com/server.php (協議不一樣:http/https,跨域)

請注意:localhost和127.0.0.1雖然都指向本機,但也屬於跨域。

瀏覽器執行javascript腳本時,會檢查這個腳本屬於哪一個頁面,若是不是同源頁面,就不會被執行。

CSRF攻擊:

​ CSRF(Cross-site request forgery),中文名稱:跨站請求僞造,也被稱爲:one click attack/session riding,縮寫爲:CSRF/XSRF。CSRF攻擊者在用戶已經登陸目標網站以後,誘使用戶訪問一個攻擊頁面,利用目標網站對用戶的信任,以用戶身份在攻擊頁面對目標網站發起僞造用戶操做的請求,達到攻擊目的。

​ CSRF 攻擊的原理大體描述以下:有兩個網站,其中A網站是真實受信任的網站,而B網站是危險網站。在用戶登錄了受信任的A網站是,本地會存儲A網站相關的Cookie,而且瀏覽器也維護這一個Session會話。這時,若是用戶在沒有登出A網站的狀況下訪問危險網站B,那麼危險網站B就能夠模擬發出一個對A網站的請求(跨域請求)對A網站進行操做,而在A網站的角度來看是並不知道請求是由B網站發出來的(Session和Cookie均爲A網站的),這時便成功發動一次CSRF 攻擊。

​ 於是 CSRF 攻擊能夠簡單理解爲:攻擊者盜用了你的身份,以你的名義發送而已請求。CSRF可以作的事情包括:以你名義發送郵件,發消息,盜取你的帳號,甚至於購買商品,虛擬貨幣轉帳......形成的問題包括:我的隱私泄露以及財產安全。

​ 所以,大多數瀏覽器都會跨域請求做出限制,這是從瀏覽器層面上的對 CSRF 攻擊的一種防護,可是須要注意的是在複雜的網絡環境中藉助瀏覽器來防護 CSRF 攻擊並不足夠,還須要從服務端或者客戶端方面入手防護。詳細能夠參考這篇文章淺談CSRF攻擊方式

 

 

 

域名和端口怎樣對應起來的:

客戶端輸入域名,經過DNS將域名解析成爲服務器ip,找到代理服務器,由於http協議服務所佔用的端口默認爲80端口,因此會訪問服務器的80端口,而後再經過代理服務器將請求轉發到不一樣的服務器以及端口中。

 

 是否應該經過域名訪問項目:

若是用IP+端口號的方式訪問,會有如下後果

首先,IP很是難記, 域名是對人友好的有含義的字符,而ip都是4組基本無規律的數字,對人不友好。

其次, 若是服務器中的資源發生遷移,那麼原先的服務器ip地址就無效了,必需要從新使用新的ip地址訪問服務器,用戶還要再去記憶一遍IP地址。可是若是是使用域名則不存在這個問題。

最後, 不安全, 經過ip直接訪問服務器是很是危險的,至關於將整個服務器的大門向全部人打開,形成的後果是別有用心的人可以很是容易攻擊到服務器.域名訪問就能杜絕這種狀況,用戶是不知道服務器的IP地址的,並且就算有人經過域名惡意攻擊,直接和用戶交互的代理服務器也能夠保護內容服務器。這樣就算代理服務器被攻破,損失也相對較小。

相關文章
相關標籤/搜索