通过不同的编程语言实现安全
Security through different programming language
有什么方法可以通过不同的编程语言来查看登录状态吗?
现在我正在使用登录过程后同时启动的三个会话(同名),使用 ajax.
现在,login.html 表单在三个文件上处理:login.aspx、login.asp 和 login.php 但它似乎太慢而且很奇怪。我正在将同一公司的三种不同服务合并为一个,在 mysql 中重新构建用户和其他公用表后,一切似乎都运行良好,但我真的很害怕安全漏洞。
只是想让你知道,我必须在任何 ajax 回调之前检查登录会话状态,所以如果用户正在 ASP 页面上调用 PHP 通过Ajax,可能是会话在 ASP 上仍处于活动状态,但在 php 文件上已过期。
有什么有效的方法可以一次全部检查吗?我也可以接受 cookie 解决方案,但如何使其在 php、asp 和 .net 之间可读?
您可以开发自己的会话提供程序,将数据存储在单独的位置(例如在数据库或文件中)。然后你需要做的就是在每个环境中编写一些代码来处理来自该提供者的会话信息。因为您只使用一个来源来存储会话信息,所以您的任何环境之间的同步都不会出现问题。
如果需要,您可以使用网络服务在每个环境和会话提供者之间交换会话信息。每个应用程序都可以使用安全连接从该会话 Web 服务获取和设置有关会话的信息。
这听起来像是单点登录。让我们尝试拆分问题。
There is any way to check the login status through different programming language?
您对使用的语言不是很感兴趣。给定相同的信息和算法,任何语言都可以成功解码相同的加密数据。我猜你反而遇到了问题,因为 PHP 关于这一点的应用程序逻辑与 ASP 的不同。
所以对于第一点,你可以
在您的所有应用程序中实施/标准化相同的会话检查逻辑。这可能是不可行的,因为你可能在这里使用 Laravel,而在另一个地方使用 ASP.Net,两者在这方面可能略有不同。如果可以,就这样做,或者...
查看 JSON Web 令牌。我不会详细介绍,但这些或多或少是为了解决这个 class 问题而设计的。它们也很容易处理,但请注意,在使用它们进行用户身份验证时,您必须注意一些方面。
[...] Just to let you you know, I have to check the login session status before any ajax callback, so if the user is working on an ASP page calling PHP through Ajax, may be that the session is still active on the ASP, but expired on the php file.
不是那个人,但是这里有些概念有些变形。会话不会在文件上过期;它们通常设置有给定的到期时间和给定的 域 。所以一般来说,会话从 PHP 应用程序打开,存储在 cookie 上,然后从 ASP 应用程序读取,不应该改变,因为两个应用程序的会话处理逻辑之间没有区别。
Any valid method to check all in one time? I can also accept a cookie solution but how to make it readable between php, asp and .net?
对于我上面建议的两种解决方案,尤其是对于 cookie 解决方案,重要的是让应用程序在会话处理方面完全相同。虽然这对于 JWT 来说是微不足道的(因为在应用程序端几乎没有任何逻辑),但如果身份验证逻辑来自其他人的代码(如在框架中),这对于 cookie 来说可能会更难。
我还没有问过单点退出,在这一点上我不敢问 :)。但这些是一些准则:
如果走 cookie 路线,请注意 cookie 的域。 Cookie 通常对来自网站域 (name.com) 的每个请求都有效,但您的某些应用程序可能在子域下(例如 phpapp.name.com)。在这种情况下,请确保从给定应用程序创建的 cookie 对 整个 域有效,而不仅仅是子域。并使应用程序在同一域下的子域/页面上可用。 Cookie 不能跨域工作,您必须处理这个问题,因为 cookie 域策略是在浏览器级别强制执行的。
启动三个 AJAX 调用意味着触发三个登录过程。我想所有这些都会在未来的某个时候终止,并且所有这些都会存储/重写 cookie。如果应用程序理解相同的 cookie,则您必须在 其中一个 上打开登录过程。这将存储 cookie,然后自动从第二个应用程序的页面中选择应用程序,让您无缝过渡到第二个应用程序的登录状态。
JWT 通常需要一些 JS 工作,您可能会喜欢,因为可以在您的所有应用程序中轻松加载相同的脚本。另一方面,您可以确定处理 JWT 的不同服务器库对您来说都是一样的,从而确保兼容性。
就个人而言,我会研究 JSON Web 令牌。
我认为你可以做到!你可以创建将数据存储到数据库中的提供程序。然后编写一些很酷的代码来管理您的 provider.You 也可以使用 webapp 或 sevice.Every 服务使用安全性来获取和放置信息。
有什么方法可以通过不同的编程语言来查看登录状态吗? 现在我正在使用登录过程后同时启动的三个会话(同名),使用 ajax.
现在,login.html 表单在三个文件上处理:login.aspx、login.asp 和 login.php 但它似乎太慢而且很奇怪。我正在将同一公司的三种不同服务合并为一个,在 mysql 中重新构建用户和其他公用表后,一切似乎都运行良好,但我真的很害怕安全漏洞。
只是想让你知道,我必须在任何 ajax 回调之前检查登录会话状态,所以如果用户正在 ASP 页面上调用 PHP 通过Ajax,可能是会话在 ASP 上仍处于活动状态,但在 php 文件上已过期。
有什么有效的方法可以一次全部检查吗?我也可以接受 cookie 解决方案,但如何使其在 php、asp 和 .net 之间可读?
您可以开发自己的会话提供程序,将数据存储在单独的位置(例如在数据库或文件中)。然后你需要做的就是在每个环境中编写一些代码来处理来自该提供者的会话信息。因为您只使用一个来源来存储会话信息,所以您的任何环境之间的同步都不会出现问题。
如果需要,您可以使用网络服务在每个环境和会话提供者之间交换会话信息。每个应用程序都可以使用安全连接从该会话 Web 服务获取和设置有关会话的信息。
这听起来像是单点登录。让我们尝试拆分问题。
There is any way to check the login status through different programming language?
您对使用的语言不是很感兴趣。给定相同的信息和算法,任何语言都可以成功解码相同的加密数据。我猜你反而遇到了问题,因为 PHP 关于这一点的应用程序逻辑与 ASP 的不同。 所以对于第一点,你可以
在您的所有应用程序中实施/标准化相同的会话检查逻辑。这可能是不可行的,因为你可能在这里使用 Laravel,而在另一个地方使用 ASP.Net,两者在这方面可能略有不同。如果可以,就这样做,或者...
查看 JSON Web 令牌。我不会详细介绍,但这些或多或少是为了解决这个 class 问题而设计的。它们也很容易处理,但请注意,在使用它们进行用户身份验证时,您必须注意一些方面。
[...] Just to let you you know, I have to check the login session status before any ajax callback, so if the user is working on an ASP page calling PHP through Ajax, may be that the session is still active on the ASP, but expired on the php file.
不是那个人,但是这里有些概念有些变形。会话不会在文件上过期;它们通常设置有给定的到期时间和给定的 域 。所以一般来说,会话从 PHP 应用程序打开,存储在 cookie 上,然后从 ASP 应用程序读取,不应该改变,因为两个应用程序的会话处理逻辑之间没有区别。
Any valid method to check all in one time? I can also accept a cookie solution but how to make it readable between php, asp and .net?
对于我上面建议的两种解决方案,尤其是对于 cookie 解决方案,重要的是让应用程序在会话处理方面完全相同。虽然这对于 JWT 来说是微不足道的(因为在应用程序端几乎没有任何逻辑),但如果身份验证逻辑来自其他人的代码(如在框架中),这对于 cookie 来说可能会更难。 我还没有问过单点退出,在这一点上我不敢问 :)。但这些是一些准则:
如果走 cookie 路线,请注意 cookie 的域。 Cookie 通常对来自网站域 (name.com) 的每个请求都有效,但您的某些应用程序可能在子域下(例如 phpapp.name.com)。在这种情况下,请确保从给定应用程序创建的 cookie 对 整个 域有效,而不仅仅是子域。并使应用程序在同一域下的子域/页面上可用。 Cookie 不能跨域工作,您必须处理这个问题,因为 cookie 域策略是在浏览器级别强制执行的。
启动三个 AJAX 调用意味着触发三个登录过程。我想所有这些都会在未来的某个时候终止,并且所有这些都会存储/重写 cookie。如果应用程序理解相同的 cookie,则您必须在 其中一个 上打开登录过程。这将存储 cookie,然后自动从第二个应用程序的页面中选择应用程序,让您无缝过渡到第二个应用程序的登录状态。
JWT 通常需要一些 JS 工作,您可能会喜欢,因为可以在您的所有应用程序中轻松加载相同的脚本。另一方面,您可以确定处理 JWT 的不同服务器库对您来说都是一样的,从而确保兼容性。
就个人而言,我会研究 JSON Web 令牌。
我认为你可以做到!你可以创建将数据存储到数据库中的提供程序。然后编写一些很酷的代码来管理您的 provider.You 也可以使用 webapp 或 sevice.Every 服务使用安全性来获取和放置信息。