我正在为我的应用程序使用 Codeigniter 3,为了更高的安全性,我想为用户提供一个选项来销毁他的所有 session 。
为什么?因为用户在不同设备上登录时可能有多个事件 session 。如果一台设备或帐户被劫持,用户应该有可能销毁他所有的事件 session ,并且被劫持的帐户/设备将被 CI 应用程序强制注销。
使用 Codeigniter 和 sess_time_to_update 配置就没那么容易了。因为在特定时间之后, session 将使用新的 session ID 重新生成。
Destroying a specific session in Code Igniter这只是解决方案的一半,因为在 session 重新生成时,用户 ID 列不会填充用户 ID。
目标简而言之: CI 需要一个函数来根据用户 ID 查找所有 session ,或者我们如何在 sess_time_to_update 配置自动重新生成用户 ID 后将其添加到 session 中
感谢您的提示和帮助
最佳答案
理想情况下,您希望自己创建自定义函数。 codeignighter 在某种程度上类似于 bootstrap,因为 codeignighter 是 php 而 bootstrap 是 css。简单的 php 代码,是的,在库中使用 php 函数很方便,但大多数 php 编码人员还是这样做。我个人不共享我的自定义函数名称,因为它存在安全风险。但保持 session 存活时间过长也是一种安全风险。对于每个用户连接,$_SERVER 数组中都有一个 session cookie。您需要做的是将这些 cookie 存储在数据库表中,然后将这些 cookie 条目移动到删除提示(这将是另一个表),然后使用 Java 调用命令(以时间间隔)以查看是否cookie 在删除提示中,如果是这样它将通过命令取消设置 cookie:
setcookie("PHPSESSID","",time()-3600,"/");
////then kick them out:
session_destroy();
header('Location: index.php');
exit();
在我的一个系统上,我想出了一个不同的 cookie 系统,它基于连接和其他客户端变量。如果它没有看到从那里解析的任何检查(cookie、IP 地址、客户端主机名和其他一些),它将把不匹配的 IP 地址添加到表中(用于管理员审计),然后添加 该 ip 地址到防火墙中的拒绝 ip 地址,然后将它们重定向到 FBI 网站。我还在那个网络服务器上运行了一个特殊的代码,在 apache 配置中它不会接受 vpn 连接,这样那些认为他们可以隐藏在 vpn 后面的黑客,他们甚至无法访问服务器(网络浏览器超时。哈哈)
关于php - 销毁特定用户的所有 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44485288/
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested
我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas
在读取/解析文件(使用Ruby)时忽略某些行的最佳方法是什么?我正在尝试仅解析Cucumber.feature文件中的场景,并希望跳过不以Scenario/Given/When/Then/And/But开头的行。下面的代码有效,但它很荒谬,所以我正在寻找一个聪明的解决方案:)File.open(file).each_linedo|line|line.chomp!nextifline.empty?nextifline.include?"#"nextifline.include?"Feature"nextifline.include?"Inorder"nextifline.include?
使用rails4,ruby2。我在rails配置中为我的cookiesession设置了30分钟的超时时间。问题是,如果我转到表单,让session超时,然后提交表单,我会收到此ActionController::InvalidAuthenticityToken错误。如何在Rails中优雅地处理这个错误?比如说,重定向到登录屏幕? 最佳答案 在您的ApplicationController:rescue_fromActionController::InvalidAuthenticityTokendoredirect_tosome_p
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?