小编lui*_*bal的帖子

为PHP密码保护哈希和盐

目前据说MD5部分不安全.考虑到这一点,我想知道用于密码保护的机制.

这个问题,"双重哈希"密码是否比仅仅哈希一次更安全? 建议多次散列可能是一个好主意,而如何实现单个文件的密码保护?建议使用盐.

我正在使用PHP.我想要一个安全快速的密码加密系统.散列密码一百万次可能更安全,但也更慢.如何在速度和安全性之间取得良好的平衡?另外,我更喜欢结果具有恒定数量的字符.

  1. 散列机制必须在PHP中可用
  2. 它必须是安全的
  3. 它可以使用盐(在这种情况下,所有的盐都同样好吗?有没有办法产生好的盐?)

另外,我应该在数据库中存储两个字段(例如,一个使用MD5,另一个使用SHA)?它会使它更安全或更不安全吗?

如果我不够清楚,我想知道使用哪种散列函数以及如何选择好的盐以便拥有安全和快速的密码保护机制.

相关问题并不完全涵盖我的问题:

PHP中的SHA和MD5有什么区别
简单密码加密
存储密钥的安全方法,asp.net的密码
如何在Tomcat 5.5中实现salted密码

php security passwords hash protection

1142
推荐指数
13
解决办法
21万
查看次数

C++ 0x中有哪些新的Unicode函数?

在几个来源中已经提到C++ 0x将包括对Unicode的更好的语言级支持(包括类型和文字).

如果语言要添加这些新功能,那么很自然地会假设标准库也是如此.但是,我目前无法找到任何对新标准库的引用.我希望找到这些答案的答案:

  1. 新库是否提供将UTF-8转换为UTF-16等的标准方法?
  2. 新库是否允许将UTF-8写入文件,控制台(或文件,控制台).如果是这样,我们可以使用cout还是我们还需要其他东西?
  3. 是否新的库包括"碱性的"功能性,诸如:发现一个UTF-8字符串的字节数和长度,转换为大写/小写(这并不考虑语言环境的影响?)

最后,这些功能是否可用于任何流行的编译器,如GCC或Visual Studio?

我试图寻找信息,但我似乎找不到任何东西.我实际上开始认为这些事情可能还没有决定(我知道C++ 0x正在进行中).

c++ unicode utf-8 standard-library c++11

19
推荐指数
1
解决办法
1026
查看次数

使用Cookie和Salted Hashes的PHP登录系统

我正在开发一个基于PHP的登录系统.每个用户都有一个ID(一个数字)和一个密码,它被存储为盐渍哈希.

我能够确定登录是否成功,但现在我需要在某处存储该信息(以便用户不会永久注销).

在过去,我玩过$ _SESSION变量.但是,这些似乎在用户离开浏览器时被删除,这是不希望的.此外,我不能"假设"用户不会试图欺骗系统,因此它必须是安全的.

所以,这是我的问题:

  1. 我应该使用$_SESSION$_COOKIE?每种方法的主要优点是什么?
  2. 如何实现"记住我"复选框?
  3. 哪些信息应存储在session/cookie变量中?

请注意,在此特定问题中没有考虑数据库安全问题.

关于3号,我的意思是:

  • 我应该在cookie/session中存储用户的ID和哈希密码,或者
  • 我应该在cookie/session中存储用户的ID和非散列密码,或者
  • 我应该存储"SessionID"和密码(散列或非散列?)或
  • 我应该存储"SessionID","ID"和密码(再次,散列或非散列)?

我想让我的网站尽可能安全但高效且用户友好.如果采用基于SessionID的方法,我也会对如何将其存储在数据库中的一些解释表示赞赏.

先感谢您

编辑:伊兰和布莱恩的答案似乎是我需要的.不幸的是,我只能将其中一个标记为已接受.我会尝试继续实施,看看哪一个更有用.

php cookies session login

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

责任链与类列表有什么优势?

最近,我正在与另一个程序员讨论重构一个充满"if"语句的巨大(1000行)方法的最佳方法.

代码是用Java编写的,但我想这个问题也可能发生在C#等其他语言中.

为了解决这个问题,他建议使用责任链模式.他建议有一个基础"处理程序"类.然后,"Handler1","Handler2"等将扩展"Handler".
然后,处理程序将具有"getSuccessor"方法,该方法将返回null(如果它是链的最后一个)或链的下一个Handler.
然后,"的handleRequest(请求)"功能,要么处理请求,或者将它传递给下一个链条,如果没有以前的解决方案的工作,它将返回空值只是或抛出异常.
要向链中添加新的Handler,编码器将转到链的最后一个元素并告诉它有一个新元素.要做某事,他只需要在链的第一个元素上调用handleRequest.

为了解决这个问题,我建议使用不同的方法.
我还有一个基础"Handler"类,带有"Handler1","Handler2",就像之前提到的方法一样.
但是,没有"getSuccessor"方法.相反,我有一个Collection类,其中包含一个处理程序列表(Vector,一个ArrayList,或者在这种情况下最好的).
handleRequest函数仍然存在,但它不会将调用传播给下一个处理程序.它只会处理请求或返回null.
要处理请求,可以使用

for(Handler handle : handlers){
    result = handle.handleRequest(request);
    if(result!=null) return result;
}
throw new CouldNotParseRequestException(); //just like in the other approach
Run Code Online (Sandbox Code Playgroud)

或者,为了防止代码重复,可以将"parseRequest(request)"方法添加到集合类中.要添加一个新的处理程序,可以转到集合构造函数(或static {}块,或者等价物)并简单地添加代码"addHandler(new Handler3());".

对于这种方法,我错过了什么样的责任链优势?哪种方法最好(假设一个最好的方法)?为什么?每种设计方法可能导致哪些潜在的错误和问题?

对于那些需要上下文的人来说,这是原始代码的样子:

if(x instanceof Type1)
{
//doSomething1
} else if(x instanceof Type2)
{
//doSomething2
}
//etc.
Run Code Online (Sandbox Code Playgroud)

java list chain-of-responsibility

17
推荐指数
2
解决办法
4802
查看次数

MySQL仍然是免费/开源数据库的不错选择吗?

直到最近,我已经在所有服务器项目中使用MySQL来满足我所有的数据库需求.

然而,在甲骨文出现并购买MySQL之后,似乎对MySQL的未来存在一些不确定性.

所以我想知道我是否应该坚持使用MySQL(我非常熟悉),或者我应该切换到像PostgreSQL这样的东西.有什么想法吗?

mysql database postgresql

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

ANTLR Parser带有手动词法分析器

我正在将基于C#的编程语言编译器从手动词法分析器/解析器迁移到Antlr.

Antlr一直给我带来严重的头痛,因为它通常大部分都有效,但是有些小部件没有,而且难以解决.

我发现我的大部分头痛都是由Antlr的词法分析器部分引起的,而不是解析器引起的.然后我注意到parser grammar X;并意识到也许我可以手动编写lexer,然后是Antlr生成的解析器.

所以我正在寻找关于这个主题的更多文档.我想自定义ITokenStream可以工作,但似乎几乎没有关于这个主题的在线文档...

c# antlr parser-generator lexer

9
推荐指数
1
解决办法
1480
查看次数

开发内核并在虚拟机中测试它们

我喜欢编程挑战,编写内核似乎是编程挑战.

遗憾的是,内核特别难以测试,因为它们基本上是操作系统的核心,因此它们不能轻易地在操作系统上运行.

但是,我知道可以模拟计算机硬件的称为虚拟机的应用程序.

使用虚拟机开发和测试内核(C + Assembly)的最简单/最好的方法是什么?

c assembly kernel virtual-machine

8
推荐指数
1
解决办法
2419
查看次数

如何在GTK#中使用Ubuntu Unity全局菜单?

我正在开发一个简单的GTK#应用程序(没什么严重的,只是一个小项目),我注意到我的应用程序菜单栏显示在我的应用程序窗口而不是Ubuntu的Unity全局菜单栏中.

有没有办法让菜单栏显示在统一菜单栏中?我试图谷歌一点但大多数结果似乎是关于禁用此行为 - 我想启用它.

目前,我正在通过MonoDevelop的可视化编辑器将菜单栏添加到VBox.

c# ubuntu gtk# menubar ubuntu-unity

8
推荐指数
1
解决办法
1384
查看次数

带有TEXT列的MySQL表

我一直在研究数据库,我必须处理一个TEXT字段.

现在,我相信我已经看到一些地方提到最好将TEXT列与表的其余部分隔离开来(将它放在自己的表中).

但是,现在我无法在任何地方找到这个参考,因为它已经有一段时间了,我开始认为我可能误解了这些信息.

一些研究揭示了这一点,暗示了这一点

将文本/ blob与元数据分开,如果不需要,请不要将text/blob放在结果中.

但是,我不熟悉这里使用的"元数据"的定义.

所以我想知道将TEXT列放在自己的表中是否有任何相关的优点.与其他领域合作的潜在问题是什么?将它保存在分离表中的潜在问题?

应该相当频繁地搜索(选择)该表(没有TEXT字段)."过早优化被认为是邪恶的"在这里很重要吗?(如果在TEXT列中确实存在惩罚,那么它的相关程度如何,考虑到以后需要时更改它很容易).

此外,这个话题有什么好的联系吗?(也许stackoverflow问题和答案?我试图搜索这个主题,但我只发现了TEXT与VARCHAR的讨论)

mysql sql optimization text

6
推荐指数
2
解决办法
3884
查看次数

使用HMAC + nonce的PHP密码存储 - nonce随机性是否重要?

几年后,我在stackoverflow上询问了如何使PHP密码存储安全.在主要答复建议使用以下哈希算法:

function hash_password($password, $nonce) {
  global $site_key;
  return hash_hmac('sha512', $password . $nonce, $site_key);
}
Run Code Online (Sandbox Code Playgroud)

答案建议使用随机的随机数.有一个随机的随机数比简单的独特的随机数有什么优势吗?

例如,每个用户可以拥有自己的ID,但不会改变.但是,我们假设用户ID是顺序的(使用MySQL的自动增量功能构建),因此不是随机的.用户ID是一个好的nonce还是随机性很重要?

现在,每个用户都可以选择用户名.每个用户都有自己的用户名,该用户名不会更改,两个不同的用户不能拥有相同的用户名.用户名仍然不是随机的,但它们也不是顺序的.用户名是否足够好作为nonce?它会比使用用户ID更好吗?

php security hash hmac password-storage

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