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地址的,并且就算有人经过域名恶意攻击,直接和用户交互的代理服务器也能够保护内容服务器。这样就算代理服务器被攻破,损失也相对较小。

相关文章
相关标签/搜索