为什么以及何时应该session_regenerate_id()
在php中使用该功能?我使用后应该经常使用session_start()
吗?我已经读过我必须使用它来防止会话固定,这是唯一的原因吗?
在ASP.NET MVC 1.0中,有一个用于处理跨站点请求伪造安全问题的新功能:
<%= Html.AntiForgeryToken() %>
[ValidateAntiForgeryToken]
public ViewResult SubmitUpdate()
{
// ... etc
}
Run Code Online (Sandbox Code Playgroud)
我发现每次呈现新表单时,以html格式生成的令牌都会不断变化.
我想知道这些令牌是如何生成的?当使用某些软件扫描此站点时,它将报告另一个安全问题:会话已修复.为什么?由于令牌不断变化,这个问题怎么来了?
还有另外一个功能,就是"盐" antiForgeryToken
,但我真的知道这用了什么,即使我们不使用"salt"来生成令牌,令牌也会一直在变化,所以为什么会这样功能?
我已阅读有关会话固定的内容,据我了解,它强迫用户使用攻击者的会话.它是否正确?你能告诉我一个如何冒犯用户的例子吗?
ruby中的大多数会话固定主题主要与rails相关.sinatra中是否存在任何会话固定漏洞?在rails中,我们主要建议在分配会话之前执行reset_session.我们如何防止sinatra中的会话固定?
我正在尝试在相当大的ASP.NET Web应用程序(C#)上处理许多安全问题.为了防止会话固定攻击,我想在每次用户验证自己时生成一个新的会话ID.但是我想只生成一个新的会话ID而不会丢失会话的其余部分.在对这个主题做了一些研究后,我找到了几个有效的解决方案:
解决方案1:在ASP.NET中生成新的SessionId
这建议通过将会话cookie设置为空字符串来手动清除会话cookie.但是,这需要页面刷新或使用AJAX来确保cookie确实被删除,这在我的特定情况下不是真正可行的选项.
解决方案2:在当前HTTPContext中生成新的ASP.NET会话
我已经实现了这种方法,并且它按预期工作.然而,正如原始海报所述,这并不是你所谓的优雅解决方案.此外,这篇文章还有几年历史,我希望现在可能有更好的解决方案.
我想知道的是,如果有任何替代方法可以做到这一点,我在研究中错过了,或者在没有操作会话管理内部的情况下可以使用解决方案2.
我在读SO许多Q/A有关的会话固定/劫持,许多人建议改变风险php.ini
就像指令session.use_only_cookies
来ON
和别人的php.ini指令,以使服务器更安全...
如果我可以在基于PHP5 + Apache的localhost服务器上复制一个简单的攻击场景,我想看看我的眼睛.
在我的localhost session.use_only_cookies
是OFF
如此根据上面的q/a我的localhost基本上是不受保护的,这是我需要做的测试.
我第一次阅读这篇关于如何进行会话固定攻击的简单文章:
为了复制本文中描述的场景,我创建了两个非常简单的PHP脚本(代码如下),但攻击不起作用,这就是我所做的:
(假装是Mallory)我对Alice说:"你好去访问http://localhost/login.php?PHPSESSID = mysessionid "
然后(假装是爱丽丝)我去了 http://localhost/login.php?PHPSESSID = mysessionid
作为我的localhost服务器的管理员,我看到在服务器磁盘上创建的会话(它被作为名称的文件被冻结sess_ mysessionid
),所以我想:很酷,它正在工作!
然后(假装是Alice)我登录后输入"joe"作为凭证
Alice登录并将她重定向到insession_ok.php
,此时(根据上面的维基百科文章),Mallory也应该能够看到insession_ok.php
因为他固定了会话mysessionid
,但事实并非如此,因为当Alice登录新会话时在服务器上创建sess_vdshg238cnfb4vt7ahpnp1p522
,所以我不明白Mallory应该如何固定/劫持会话,如文章中所解释的那样???
的login.php
<?php
session_start();
//if user credentials are ok, let's put him in session
if( @$_POST['usr'] === 'joe' )
$_SESSION['in_session'] = TRUE;
//if user is already logged in, let's redirect him to the account page "insession_ok.php" …
Run Code Online (Sandbox Code Playgroud) 嗨大家可以任何人在会话固定,会话重播和会话劫持攻击之间给出明显的区别,我已阅读了很多文章,但会议劫持和会话重播攻击之间的问题仍然不明确.....
提前致谢
security session session-fixation session-hijacking session-replay
我使用命令"reset_session"按照这里以避免会话固定.
运行该命令后,我想将新生成的session_id存储在数据库中,但未定义会话[:session_id].
我写了一个简单的测试:
class ApplicationController < ActionController::Base
protect_from_forgery
after_filter :after_test
def after_test
RAILS_DEFAULT_LOGGER.debug "Old Session: #{session.inspect}"
reset_session
session[:random_number] = ((rand*1000).to_i)
RAILS_DEFAULT_LOGGER.debug "New Session: #{session.inspect}"
end
end
Run Code Online (Sandbox Code Playgroud)
两个conescutives页面加载的日志结果是:
Started GET "/" for 127.0.0.1 at 2011-04-16 11:42:57 +0200
Processing by WelcomeController#index as HTML
Rendered welcome/index.html.erb within layouts/application (1.9ms)
Old Session: {"random_number"=>519, "session_id"=>"d17df62e286f20bd25e2714ee4f58020", "_csrf_token"=>"NkD5ZjG/RYLolfRy0ADmr+h+Sp2TXEOQlc6HhNpyp/g="}
New Session: {:random_number=>172}
Completed 200 OK in 7ms (Views: 6.4ms | ActiveRecord: 0.0ms)
Run Code Online (Sandbox Code Playgroud)
和
Started GET "/" for 127.0.0.1 at 2011-04-16 11:42:58 +0200
Processing by WelcomeController#index as …
Run Code Online (Sandbox Code Playgroud) 我试图为每次新登录获取会话 Cookie 的新值。基本上,每次用户登录时,下面屏幕截图中的值都应该有一个新的随机字符串。这是为了避免会话固定。
我已经尝试过以下操作:
登录时:
Response.Cookies.Delete(".AspNetCore.Session");
HttpContext.Request.Cookies[".AspNetCore.Session"] = "123132" //does not allow to be set
Run Code Online (Sandbox Code Playgroud)
注销时:
HttpContext.Session.Clear();
Response.Clear();
Session.Abandon() // Abandon is no longer available
Run Code Online (Sandbox Code Playgroud)
但会话 Cookie 的值并没有改变。非常感谢任何指导。
我有一个用java编写的Web应用程序.我们不在身份验证过程中使用会话.运行了应用程序扫描,发现我们有会话固定攻击的可能性.我想知道我们什么时候不使用会话,你如何修复或阻止会话固定?这就是FORTIFY扫描报告所说的内容
The following changes were applied to the original request:
• Added parameter 'Cookie_abcxyz.com-443' with the following value 'R3777273810'
• Removed cookie 'Cookie_abcxyz.com-443'
Request/Response:
GET / HTTP/1.1
Content-Length: 43
Accept: */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
Host: myportal.abcxyz.com
Cookie_abcxyz.com-443=R3777273810
HTTP/1.1 200 OK
Set-Cookie: Cookie_abcxyz.com-443=R3777273810; path=/
Content-Length: 11211
Date: Mon, 13 Feb 2012 17:08:14 GMT
Server: abcxyz
Cache-Control: no-cache
Content-type: text/html
Run Code Online (Sandbox Code Playgroud) 我知道会话固定是在PHP中破解网站的方法.
会话修复是一种攻击,允许攻击者劫持有效的用户会话
会话固定,
但我不知道这可以防止我的项目中出现此问题.
是描述解决方案的方式或样本.
session-fixation ×12
session ×5
security ×4
php ×3
apache ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
c# ×1
csrf ×1
java ×1
oauth ×1
razor-pages ×1
ruby ×1
sessionid ×1
sinatra ×1