皮皮网

皮皮网

【网上购物系统源码是什么】【源码授权管理】【odl 集群 源码】is验证系统网站源码_iis验证方式

时间:2024-12-26 00:28:06 分类:休闲

1.2023最新全功能版在线WEB工具箱PHP源码 66toolkit
2.网站的验证源码s验二级域名怎么查询
3.SSL如何实现源端鉴别?
4.单点登录SSO原理和实现

is验证系统网站源码_iis验证方式

2023最新全功能版在线WEB工具箱PHP源码 66toolkit

       年最新推出的全功能在线WEB工具箱,PHP源码toolkit,系统集成了种实用工具,网站专为开发人员和日常任务提供便利。证方

DNS查找工具:轻松查找域名信息。验证源码s验

IP查找和SSL查找:快速定位网络位置与安全状态。系统网上购物系统源码是什么

Whois查询:了解域名所有者和注册信息。网站

Ping工具:测试网络连接和延迟。证方

MD5生成器:确保数据唯一性。验证源码s验

Base转换:数据编码与解码工具。系统

       …(其他工具如Markdown转HTML、网站UUID生成等)…

网站托管检查:监控服务器状态。证方

字符计数器:方便文本编辑。验证源码s验源码授权管理

URL解析器:深入理解链接结构。系统

       …(更多功能如颜色转换、网站HTTP头查找等)…

系统需求:PHP 7.4+,cURL、OpenSSL等扩展支持。

       MySQL 5.7.3+,Apache与mod_rewrite模块。

       这款工具箱是开发过程中不可或缺的伙伴,为简化工作流程和提升效率提供了全方位的支持。

网站的二级域名怎么查询

       查询网站的二级域名,可以通过以下方式

       1. 使用域名查询工具。网络上有很多域名查询工具,odl 集群 源码如“站长工具”、“爱站网”等,这些工具提供域名信息查询功能。只需在查询框输入二级域名,即可快速获取相关信息。

       2. 查看网站源代码。通过访问网站,在浏览器中右键点击网页空白处,选择“查看网页源代码”,在源代码中查找域名信息。

       3. 使用WHOIS查询。WHOIS是亚马逊代购源码一个用于查询域名注册信息的数据库,大多数顶级域名的注册信息都可以通过WHOIS查询获取。输入二级域名进行WHOIS查询,可以查到相关的注册信息及二级域名所在的主域名。

       详细解释

       使用域名查询工具的具体步骤

       访问如“站长工具”这样的网站,在主页找到“域名查询”或类似选项。在查询框中输入想要查询的二级域名,例如“abc.example.com”,点击查询按钮,系统就会返回该域名的相关信息,包括其所在的主域名等。这种方式简单易行,适合普通用户操作。佛教asp源码

       查看网站源代码的方法

       在浏览网页时,右键点击页面的任意空白处,选择弹出的菜单中的“查看网页源代码”。在弹出的源代码页面中,可以搜索域名的关键词,找到与二级域名相关的部分,从而得知其主域名的信息。但这需要一定的代码识别能力。

       WHOIS查询的功能和使用方法

       WHOIS是一个公开的域名注册信息查询系统。通过访问专业的WHOIS查询网站,如“WHOIS数据库查询”,输入想要查询的二级域名,可以获取该域名的注册日期、过期日期、注册人信息等。在查询结果中,通常可以识别出二级域名所属的主域名。但需要注意的是,部分信息可能因为隐私保护而隐藏或不完全公开。

       以上三种方法各有优劣,可以根据需求和实际情况选择合适的方式进行查询。

SSL如何实现源端鉴别?

       SSL通信模型采用标准的C/S结构,除了在TCP层上进行传输之外,与普通的网络通信协议没有太大的区别,基于OpenSSL的程序都要遵循以下几个步骤:

       (1) OpenSSL初始化

        在使用OpenSSL之前,必须进行相应的协议初始化工作,这可以通过下面的函数实现:

        int SSL_library_int(void);

       (2) 选择会话协议

        在利用OpenSSL开始SSL会话之前,需要为客户端和服务器制定本次会话采用的协议,目前能够使用的协议包括TLSv1.0、SSLv2、SSLv3、SSLv2/v3。

        需要注意的是,客户端和服务器必须使用相互兼容的协议,否则SSL会话将无法正常进行。

       (3) 创建会话环境

        在OpenSSL中创建的SSL会话环境称为CTX,使用不同的协议会话,其环境也不一样的。申请SSL会话环境的OpenSSL函数是:

        SSL_CTX *SSL_CTX_new(SSL_METHOD * method);

        当SSL会话环境申请成功后,还要根据实际的需要设置CTX的属性,通常的设置是指定SSL握手阶段证书的验证方式和加载自己的证书。制定证书验证方式的函数是:

        int SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int(*verify_callback),int(X_STORE_CTX *));

        为SSL会话环境加载CA证书的函数是:

        SSL_CTX_load_verify_location(SSL_CTX *ctx,const char *Cafile,const char *Capath);

        为SSL会话加载用户证书的函数是:

        SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,int type);

        为SSL会话加载用户私钥的函数是:

        SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx,const char* file,int type);

        在将证书和私钥加载到SSL会话环境之后,就可以调用下面的函数来验证私钥和证书是否相符:

        int SSL_CTX_check_private_key(SSL_CTX *ctx);

       (4) 建立SSL套接字

        SSL套接字是建立在普通的TCP套接字基础之上,在建立SSL套接字时可以使用下面的一些函数:

        SSL *SSl_new(SSL_CTX *ctx);

        //申请一个SSL套接字

        int SSL_set_fd(SSL *ssl,int fd);)

        //绑定读写套接字

        int SSL_set_rfd(SSL *ssl,int fd);

        //绑定只读套接字

        int SSL_set_wfd(SSL *ssl,int fd);

        //绑定只写套接字

       (5) 完成SSL握手

        在成功创建SSL套接字后,客户端应使用函数SSL_connect( )替代传统的函数connect( )来完成握手过程:

        int SSL_connect(SSL *ssl);

        而对服务器来讲,则应使用函数SSL_ accept ( )替代传统的函数accept ( )来完成握手过程:

        int SSL_accept(SSL *ssl);

        握手过程完成之后,通常需要询问通信双方的证书信息,以便进行相应的验证,这可以借助于 下面的函数来实现:

        X *SSL_get_peer_certificate(SSL *ssl);

        该函数可以从SSL套接字中提取对方的证书信息,这些信息已经被SSL验证过了。

        X_NAME *X_get_subject_name(X *a);

        该函数得到证书所用者的名字。

       (6) 进行数据传输

        当SSL握手完成之后,就可以进行安全的数据传输了,在数据传输阶段,需要使用SSL_read( ) 和SSL_write( )来替代传统的read( )和write( )函数,来完成对套接字的读写操作:

        int SSL_read(SSL *ssl,void *buf,int num);

        int SSL_write(SSL *ssl,const void *buf,int num);

       (7) 结束SSL通信

        当客户端和服务器之间的数据通信完成之后,调用下面的函数来释放已经申请的SSL资源:

        int SSL_shutdown(SSL *ssl);

        //关闭SSL套接字

        void SSl_free(SSL *ssl);

        //释放SSL套接字

        void SSL_CTX_free(SSL_CTX *ctx);

        //释放SSL会话环境

        结束语

        SSL协议采用数字证书进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传输过程中是否被篡改和伪造,从而为敏感数据在Internet上的传输提供了一种安全保障手段。

        OpenSSL是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。调用OpenSSL 的函数就可以实现一个SSL加密的安全数据传输通道,从而保护客户端和服务器之间数据的安全。

单点登录SSO原理和实现

       æ¬¢è¿Žå¤§å®¶å…³æ³¨?github.com/hsfxuebao?,希望对大家有所帮助,要是觉得可以的话麻烦给点一下Star哈

1. 单系统登录机制1.1 / 和?/index.html ?否 同源(协议、域名、端口号相同)

       / 和?/index.html?跨域 协议不同(/ 和?百度一下,你就知道?跨域 主域名不同(test/baidu)

       /? 和 /?跨域 子域名不同(www/blog)

       :/?和 :/?跨域 端口号不同(/)

2.3 多系统解决方案

       è™½ç„¶å•ç³»ç»Ÿçš„登录解决方案很完美,但对于多系统应用群已经不再适用了,为什么呢?

       å•ç³»ç»Ÿç™»å½•è§£å†³æ–¹æ¡ˆçš„核心是cookie,cookie携带会话id在浏览器与服务器之间维护会话状态。但cookie是有限制的,这个限制就是cookie的域(通常对应网站的域名),浏览器发送”,然后将它们的cookie域设置为“baidu.com”,这种做法理论上是可以的,甚至早期很多多系统登录就采用这种同域名共享cookie的方式。然而,可行并不代表好,共享cookie的方式存在众多局限:

       é¦–先,应用群域名得统一;

       å…¶æ¬¡ï¼Œåº”用群各系统使用的技术(至少是web服务器)要相同,不然cookie的key值(tomcat为JSESSIONID)不同,无法维持会话,共享cookie的方式是无法实现跨语言技术平台登录的,比如java、php、.net系统之间;

       ç¬¬ä¸‰ï¼Œcookie本身不安全。

       å› æ­¤ï¼Œæˆ‘们需要一种全新的登录方式来实现多系统应用群的登录,这就是单点登录

3. 单点登录

       ä»€ä¹ˆæ˜¯å•ç‚¹ç™»å½•ï¼Ÿå•ç‚¹ç™»å½•å…¨ç§°Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分

3.1 登录

       ç›¸æ¯”于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。这个过程,也就是单点登录的原理,用下图说明

       ä¸‹é¢å¯¹ä¸Šå›¾ç®€è¦æè¿°:

       ç”¨æˆ·è®¿é—®ç³»ç»Ÿ1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数

       sso认证中心发现用户未登录,将用户引导至登录页面

       ç”¨æˆ·è¾“入用户名密码提交登录申请

       sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌

       sso认证中心带着令牌跳转会最初的请求地址(系统1)

       ç³»ç»Ÿ1拿到令牌,去sso认证中心校验令牌是否有效

       sso认证中心校验令牌,返回有效,注册系统1

       ç³»ç»Ÿ1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源

       ç”¨æˆ·è®¿é—®ç³»ç»Ÿ2的受保护资源

       ç³»ç»Ÿ2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数

       sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌

       ç³»ç»Ÿ2拿到令牌,去sso认证中心校验令牌是否有效

       sso认证中心校验令牌,返回有效,注册系统2

       ç³»ç»Ÿ2使用该令牌创建与用户的局部会话,返回受保护资源

       ç”¨æˆ·ç™»å½•æˆåŠŸä¹‹åŽï¼Œä¼šä¸Žsso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系:

       å±€éƒ¨ä¼šè¯å­˜åœ¨ï¼Œå…¨å±€ä¼šè¯ä¸€å®šå­˜åœ¨

       å…¨å±€ä¼šè¯å­˜åœ¨ï¼Œå±€éƒ¨ä¼šè¯ä¸ä¸€å®šå­˜åœ¨

       å…¨å±€ä¼šè¯é”€æ¯ï¼Œå±€éƒ¨ä¼šè¯å¿…须销毁

       ä½ å¯ä»¥é€šè¿‡åšå®¢å›­ã€ç™¾åº¦ã€csdn、淘宝等网站的登录过程加深对单点登录的理解,注意观察登录过程中的跳转url与参数

3.2 注销

       å•ç‚¹ç™»å½•è‡ªç„¶ä¹Ÿè¦å•ç‚¹æ³¨é”€ï¼Œåœ¨ä¸€ä¸ªå­ç³»ç»Ÿä¸­æ³¨é”€ï¼Œæ‰€æœ‰å­ç³»ç»Ÿçš„会话都将被销毁,用下面的图来说明

       sso认证中心一直监听全局会话的状态,一旦全局会话销毁,监听器将通知所有注册系统执行注销操作

       ä¸‹é¢å¯¹ä¸Šå›¾ç®€è¦è¯´æ˜Ž:

       ç”¨æˆ·å‘系统1发起注销请求

       ç³»ç»Ÿ1根据用户与系统1建立的会话id拿到令牌,向sso认证中心发起注销请求

       sso认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址

       sso认证中心向所有注册系统发起注销请求

       å„注册系统接收sso认证中心的注销请求,销毁局部会话

       sso认证中心引导用户至登录页面

4. 实现

       åªæ˜¯ç®€è¦ä»‹ç»ä¸‹åŸºäºŽjava的实现过程,不提供完整源码,明白了原理,我相信你们可以自己实现。sso采用客户端/服务端架构,我们先看sso-client与sso-server要实现的功能(下面:sso认证中心=sso-server)

       sso-client:

       æ‹¦æˆªå­ç³»ç»Ÿæœªç™»å½•ç”¨æˆ·è¯·æ±‚,跳转至sso认证中心

       æŽ¥æ”¶å¹¶å­˜å‚¨sso认证中心发送的令牌

       ä¸Žsso-server通信,校验令牌的有效性

       å»ºç«‹å±€éƒ¨ä¼šè¯

       æ‹¦æˆªç”¨æˆ·æ³¨é”€è¯·æ±‚,向sso认证中心发送注销请求

       æŽ¥æ”¶sso认证中心发出的注销请求,销毁局部会话

       sso-server:

       éªŒè¯ç”¨æˆ·çš„登录信息

       åˆ›å»ºå…¨å±€ä¼šè¯

       åˆ›å»ºæŽˆæƒä»¤ç‰Œ

       ä¸Žsso-client通信发送令牌

       æ ¡éªŒsso-client令牌有效性

       ç³»ç»Ÿæ³¨å†Œ

       æŽ¥æ”¶sso-client注销请求,注销所有会话

       æŽ¥ä¸‹æ¥ï¼Œæˆ‘们按照原理来一步步实现sso吧!

4.1 sso-client拦截未登录请求

       java拦截请求的方式有servlet、filter、listener三种方式,我们采用filter。在sso-client中新建LoginFilter.java类并实现Filter接口,在doFilter()方法中加入对未登录用户的拦截

public?void?doFilter(ServletRequest?request,?ServletResponse?response,?FilterChain?chain)?throws?IOException,?ServletException?{ HttpServletRequest?req?=?(HttpServletRequest)?request;HttpServletResponse?res?=?(HttpServletResponse)?response;HttpSession?session?=?req.getSession();if?(session.getAttribute("isLogin"))?{ chain.doFilter(request,?response);return;}//跳转至sso认证中心res.sendRedirect("sso-server-url-with-system-url");}4.2 sso-server拦截未登录请求

       æ‹¦æˆªä»Žsso-client跳转至sso认证中心的未登录请求,跳转至登录页面,这个过程与sso-client完全一样

4.3 sso-server验证用户登录信息

       ç”¨æˆ·åœ¨ç™»å½•é¡µé¢è¾“入用户名密码,请求登录,sso认证中心校验用户信息,校验成功,将会话状态标记为“已登录”

@RequestMapping("/login")public?String?login(String?username,?String?password,?HttpServletRequest?req)?{ this.checkLoginInfo(username,?password);req.getSession().setAttribute("isLogin",?true);return?"success";}4.4、sso-server创建授权令牌

       æŽˆæƒä»¤ç‰Œæ˜¯ä¸€ä¸²éšæœºå­—符,以什么样的方式生成都没有关系,只要不重复、不易伪造即可,下面是一个例子

String?token?=?UUID.randomUUID().toString();4.5、sso-client取得令牌并校验

       sso认证中心登录后,跳转回子系统并附上令牌,子系统(sso-client)取得令牌,然后去sso认证中心校验,在LoginFilter.java的doFilter()中添加几行

//?请求附带token参数String?token?=?req.getParameter("token");if?(token?!=?null)?{ //?去sso认证中心校验tokenboolean?verifyResult?=?this.verify("sso-server-verify-url",?token);if?(!verifyResult)?{ res.sendRedirect("sso-server-url");return;}chain.doFilter(request,?response);}

       verify()方法使用/xuxueli/xxl…Downloadgitee.com/xuxueli…Download5.4 文档地址

       ä¸­æ–‡æ–‡æ¡£

5.5 项目结构说明HttpSession?session?=?request.getSession();session.getAttribute("isLogin");.6 基于Token方式部署

       ç”±äºŽå‰åŽç«¯åˆ†ç¦»å¼€å‘的模式较多,这里只介绍基于Token方式部署,在一些无法使用Cookie的场景下,可使用该方式,如需要Cookie查看基于cookie方式部署

5.6.1 认证中心(SSO Server)搭建

       é¡¹ç›®åï¼šxxl-sso-server

       é…ç½®æ–‡ä»¶ä½ç½®ï¼šapplication.properties

HttpSession?session?=?request.getSession();session.getAttribute("isLogin");.6.2 单点登陆Client端搭建

       é¡¹ç›®åï¼šxxl-sso-token-sample-springboot

       maven依赖

HttpSession?session?=?request.getSession();session.getAttribute("isLogin");3

       é…ç½®æ–‡ä»¶ï¼šapplication.properties

HttpSession?session?=?request.getSession();session.getAttribute("isLogin");4

       é…ç½® XxlSsoTokenFilter

HttpSession?session?=?request.getSession();session.getAttribute("isLogin");.6.3 验证 (模拟请求 Token 方式接入SSO的接口)

       ä¿®æ”¹Host文件:域名方式访问认证中心,模拟跨域与线上真实环境

HttpSession?session?=?request.getSession();session.getAttribute("isLogin");6

       åˆ†åˆ«è¿è¡Œ "xxl-sso-server" 与 "xxl-sso-token-sample-springboot"

       è®¤è¯ä¸­å¿ƒæ­å»ºæˆåŠŸåŽï¼Œé»˜è®¤ä¸ºToken方式登陆提供API接口:

       1、登陆接口:/app/login

       code: 表示成功、其他失败

       msg:错误提示

       data: 登陆用户的 sso sessionid

       username:账号

       password:账号

       å‚数:POST参数

       å“åº”:JSON格式

       2、注销接口:/app/logout

       code: 表示成功、其他失败

       msg:错误提示

       sessionId:登陆用户的 sso sessionid

       å‚数:POST参数

       å“åº”:JSON格式

       3、登陆状态校验接口:/app/l