首先,一点背景:我正在为CodeIgniter实现一个auth + auth系统并不是什么秘密,到目前为止我赢了(可以这么说).但是我遇到了一个非常重要的挑战(大多数auth库完全错过了,但我坚持正确处理它):如何智能地处理大规模,分布式,可变用户名的暴力攻击.
我知道所有常用的技巧:
现在,这些只是理论上可行的想法.有很多垃圾想法可以打开网站(比如琐碎的DoS攻击).我想要的是更好的东西.更好的是,我的意思是:
它必须安全(+)抵御DoS和暴力攻击,并且不会引入任何新的漏洞,这些漏洞可能会让稍微狡猾的机器人继续在雷达下运行
它必须是自动化的.如果需要人工操作员验证每次登录或监控可疑活动,那么它无法在真实场景中运行
它必须适用于主流网络使用(即可由非程序员执行的高流失率,高流量和开放式注册)
它不会妨碍用户体验到临时用户会感到烦恼或沮丧(并可能放弃网站)
它不能涉及小猫,除非它们真的是非常安全的小猫
(+)'安全',我的意思是至少和偏执的用户保密密码一样安全
所以 - 让我们听听吧!你会怎么做?你知道我没有提到过的最佳实践(哦,请你说)吗?我承认我对自己有所了解(结合3和4的想法),但我会让真正的专家在让自己尴尬之前说话;-)
我正在寻找实现"忘记密码"功能的最佳方法.
我提出了2个想法:
当用户点击忘记密码时,用户需要输入用户名,电子邮件以及出生日期或姓氏.然后,具有临时密码的邮件将被发送到用户电子邮件帐户.用户使用临时密码登录并重置其密码.
类似,但电子邮件中会包含一个链接,让用户重置密码.
或者任何人都可以建议我更好更安全的方式?我也想发送临时密码或链接,强制用户在24小时内重置密码,否则临时密码或链接将无法使用.怎么做?
我知道可以获得一个空的HTTP_REFERER.在什么情况下会发生这种情况?如果我得到一个空的,它是否总是意味着用户改变了它?获得一个空的一个与获得一个空的一样?在什么情况下我也能得到它?
我最近注册了oneplusone网站https://account.oneplus.net/sign-up,并注意到这个复选框重新开始
它是如何工作的,我如何在我的网站上使用它?比那些神秘的单词/数字要好得多:)
recaptcha网站没有提及任何新的重新收回方法... https://www.google.com/recaptcha/intro/index.html
我想知道在MVC 5和ASP.NET Identity Framework附带的UserManager中默认实现的Password Hasher是否足够安全?如果是这样,如果你可以向我解释它是如何工作的?
IPasswordHasher界面如下所示:
public interface IPasswordHasher
{
string HashPassword(string password);
PasswordVerificationResult VerifyHashedPassword(string hashedPassword,
string providedPassword);
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它不需要盐,但在这个帖子中提到:" Asp.net身份密码哈希 ",它确实在幕后加盐.所以我想知道它是如何做到的?这盐来自何处?
我担心的是盐是静态的,使它非常不安全.
int func(char* str)
{
char buffer[100];
unsigned short len = strlen(str);
if(len >= 100)
{
return (-1);
}
strncpy(buffer,str,strlen(str));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码容易受到缓冲区溢出攻击,我正在试图找出原因.我认为它与len被宣布为一个short而不是一个int,但我不是很确定.
有任何想法吗?
有关创建以System.String出它不保护你的SecureString的所有预订一边,怎么能做到呢?
如何将普通的System.Security.SecureString转换为System.String?
我相信很多熟悉SecureString的人会回应说,永远不应该将SecureString转换为普通的.NET字符串,因为它会删除所有安全保护. 我知道.但是现在我的程序用普通字符串完成所有操作,我正在尝试增强其安全性,虽然我将使用返回SecureString的API给我,但我并不是想用它来增加我的安全性.
我知道Marshal.SecureStringToBSTR,但我不知道如何取出BSTR并从中制作System.String.
对于那些可能要求知道我为什么要这样做的人,好吧,我正在从用户那里获取密码并将其作为html表单POST提交以将用户登录到网站.所以......这真的必须使用托管的,未加密的缓冲区.如果我甚至可以访问非托管的,未加密的缓冲区,我想我可以在网络流上进行逐字节流写入,并希望这样可以保证密码的安全性.我希望能够回答至少其中一种情况.
我需要开发一个可以长时间离线运行的Web应用程序.为了使其可行,我无法避免在本地存储中保存敏感数据(个人数据,而不是您只存储散列的数据类型).
我接受这不是推荐的做法,但是我没有做多少选择来保护数据:
我很欣赏魔鬼经常处于细节之中,并且知道对于本地存储和基于javascript的安全性存在很多怀疑.任何人都可以评论是否有:
谢谢你的帮助.
是否存在在自运行(例如LAMP堆栈)Web应用程序上使用Google身份验证器(双因素身份验证)的公共API ?
不知何故,将鼠标悬停在Google+加一个窗口小部件上可能会引入工具提示类型的交易,该交易明显大于<iframe>其所包含的元素.我已经检查了DOM以确认这一点.*
所以:
什么?怎么样!?
如果恶意使用,这不是点击劫持的大好机会吗?(想象一下有人为这些社交小部件做MITM!)
*更新:我看到的是工具提示消息是第二个动态创建的消息iframe.
security ×10
c# ×2
passwords ×2
.net ×1
asp.net ×1
browser ×1
brute-force ×1
c ×1
cross-domain ×1
encryption ×1
google-oauth ×1
html ×1
html5 ×1
http ×1
http-headers ×1
http-referer ×1
iframe ×1
owasp ×1
recaptcha ×1