相关疑难解决方法(0)

Safari第三方cookie iframe技巧不再有效?

所以这是"我如何让第三方cookie在Safari中工作"的第十五次复仇,但我再次提问,因为我认为比赛场地已经发生了变化,可能是在2012年2月之后.获得第三名的标准技巧之一Safari中的派对cookie如下:使用一些javascript POST到隐藏的iframe.它(曾经)欺骗Safari认为用户已经与第三方内容进行了交互,因此允许设置cookie.

认为这个漏洞已经在温和的丑闻之后被关闭,据透露谷歌正在利用其广告中的这一技巧.至少,在使用这个技巧时,我完全无法在Safari中设置cookie.我发现了一些随机的互联网帖子,声称Apple正在努力弥补漏洞,但我还没有发现任何官方消息.

作为后备,我甚至尝试重新设计主要的第三方框架,以便在内容加载之前必须单击按钮,但即使是这种级别的直接交互也不足以融化Safari冷酷的心脏.

那么有人确切知道Safari是否确实关闭了这个漏洞?如果是,是否有其他解决方法(除了在每个请求中手动包含会话ID)?

javascript safari iframe facebook

135
推荐指数
9
解决办法
11万
查看次数

使用ASP .Net Membership保持用户登录持久性

我有一个使用sql成员资格提供程序构建在ASP.NET 3.5和SQL Server 2005中的网站,并且可能是表单身份验证.

由于我网站上的安全需求非常低,我想进行一次身份验证,然后无限期地保持登录(不给用户选择).

发生的事情是用户登录,保持登录会话,然后下次他们到达时,他们会被注销.

如何保持登录?

这是技术细节,我已经尝试了许多持续时间的变化.

 Try
            If Membership.ValidateUser(UserName.Text, Password.Text) Then
                Security.UserManager.AuthenticateUser(UserName.Text)

                If FormsAuthentication.GetRedirectUrl(UserName.Text, False) = "/default.aspx" Then
                    Try
                        'Custom Logic'
                    Catch Ex As Exception
                        'Custom Error handling'
                    End Try
                Else
                    FormsAuthentication.RedirectFromLoginPage(UserName.Text, True)
                End If
            End If
        Catch ex As Exception
            RaiseEvent ExceptionThrown(New ApplicationException("An error occurred trying to log the user in after account creation.", ex))
        End Try

Public Shared Sub AuthenticateUser(ByVal Username As String)
    Dim Expiration As DateTime = DateTime.Now.AddMonths(3)

    Dim authTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(Username, …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-membership asp.net-3.5 sqlmembershipprovider

18
推荐指数
2
解决办法
2万
查看次数

在iOS Safari上的浏览器会话之间未保存Cookie

我有一个MVC 4网站,用户可以登录,我保存一个cookie及其会话信息,这样他们就不必再次登录了.

public void SetCookie(HttpCookie cookie)
{
    HttpContext.Current.Response.Cookies.Set(cookie);
}
Run Code Online (Sandbox Code Playgroud)

这适用于桌面设备,但是当我在iOS上运行它时,它在100%的时间内都不起作用.如果我在移动浏览器(Chrome或Safari)中打开至少1页并导航回我的网站,则会找到我的会话cookie,而不必登录.但是,如果我关闭该浏览器的所有窗口,那么下次我导航回我的网站时,找不到会话cookie.我在我的cookie上设置了1年的持续时间/到期时间,因此它没有到期.

到目前为止,我唯一发现的是这是.NET 4.0中的一个错误,并在.NET 4.5中得到修复.我相信我已经在运行.NET 4.5,通过查看我的*.csproj和TargetFrameworkVersion元素:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>
    </ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{xxxxxxxxxxxxxxxxxx}</ProjectGuid>
    <ProjectTypeGuids>{xxxxxxxx};{xxxxxxxxxxxxx};{xxxxxxxxxxxxxxxx}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>MyApp</RootNamespace>
    <AssemblyName>MyApp</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    <UseIISExpress>true</UseIISExpress>
    <IISExpressSSLPort />
    <IISExpressAnonymousAuthentication />
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这是.NET(或MVC)的错误,还是我的编码?我是否需要升级到MVC 5(而不是升级到.NET 4.5的原始建议)?

这真的被窃听我,因为在未来的未来几个月大部分的流量到我的网站将是移动用户,我可能会失去他们中的一些,如果他们要保持记录的每次(我知道我讨厌不得不在移动设备上登录...)

编辑:

顺便说一句 - 这是关于同一主题的另一个页面:使用iPhone UIWebView时的Asp.Net Forms身份验证

我也试过实现这个,它也没有用:

http://www.bloggersworld.com/index.php/asp-net-forms-authentication-iphone-cookies/

以上内容包括Scott Hanselmans建议修复:

http://www.hanselman.com/blog/FormsAuthenticationOnASPNETSitesWithTheGoogleChromeBrowserOnIOS.aspx

这是我的cookie创建代码,以防它有用:

private void CreateAndSetAuthenticationCookie(int loginId, string username)
    { …
Run Code Online (Sandbox Code Playgroud)

c# cookies asp.net-mvc session ios

11
推荐指数
1
解决办法
1万
查看次数

Safari和Asp.net中的cookie存在奇怪的问题

我在Asp.net的登录页面上有一个奇怪的问题,这个问题只发生在Safari上.

验证用户后,我从数据库中获取用户的名称(数据库中的字段为UTF8)并将其保存在cookie中.问题是,当用户的名字带有特殊字符时,我会被重定向到我来自的页面而不登录.例如"Moller"工作正常,用户登录但不是"Møller".

同样,这只发生在Safari上,当我在名字中有特殊字符时.无效的行是:Response.Cookies ["userInfo"] ["name"] = getNameFromUserid(userid);

这是我的代码:

string userid = validUserWithEmail(TextBoxEmail.Text, TextBoxPassword.Text);
if (userid != null) {
    //VALID USER
    Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(30);
    Response.Cookies["userInfo"]["name"] = getNameFromUserid(userid);

    FormsAuthentication.RedirectFromLoginPage(userid, CheckBoxPersistCookie.Checked);
} 
else
{
    //NOT A VALID USER SHOW A MESSAGE FOR THE USER OR SOMETHING
}
Run Code Online (Sandbox Code Playgroud)

asp.net cookies safari redirect forms-authentication

6
推荐指数
1
解决办法
8806
查看次数

iOS Safari/Chrome 中的 Cookie 持久性

当我在 iOS Safari(和 Chrome)上关闭并重新打开浏览器时,我的持久性 cookie 将被删除。我使用的是 iOS 11,但也在 iOS10/9 上进行了测试。cookie 在 Android 和桌面上正确保留。奇怪的是,它适用于 iOS 上的 Firefox。

我在这里缺少什么?

这是我的 javascript 代码,用于设置 cookie 和过期日期:

  setCookie = function(cname, cvalue, exdays) {
     var d = new Date();
     d.setTime(d.getTime() + (exdays*24*60*60*1000));
     var expires = "expires="+ d.toUTCString();
     document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  }

  setCookie("test", "random test value", 365);
Run Code Online (Sandbox Code Playgroud)

javascript cookies safari google-chrome ios

6
推荐指数
1
解决办法
2736
查看次数