小编JDe*_*age的帖子

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

如何产生良好的盐 - 我的功能足够安全吗?

这是我用来生成随机盐的函数:

function generateRandomString($nbLetters){
    $randString="";
    $charUniverse="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for($i=0; $i<$nbLetters; $i++){
       $randInt=rand(0,61);
        $randChar=$charUniverse[$randInt];
        $randString=$randomString.$randChar;
    }
    return $randomString;
}
Run Code Online (Sandbox Code Playgroud)

这是针对非商业网站的.它仅用于生成salt(存储在db中并与用户提交的pw一起用于散列).

这个合适吗?我应该使用更大的字符子集,如果是这样,在PHP中有一个简单的方法吗?

php security salt

38
推荐指数
3
解决办法
6万
查看次数

PHP PDO - $ dbh和$ sth代表什么?

在PDO示例中,我经常找到缩写$dbh$sth使用.我想$dbh代表"数据库句柄" - 对吗?怎么样$sth?"声明处理"?

是否有充分的理由使用上述而不是$db_connection$query(或其他适当的)?

php pdo coding-style

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

Java - 是`null`是`object`的一个实例?

我读到这null不是instanceof什么,但另一方面,Java 中的所有东西都扩展了Object类.

java

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

将PHP默认编码设置为utf-8?

在"PHP Cookbook"中,他们说(p.589)为了正确地将传出数据的char编码设置为utf-8,有必要将default_encoding配置编辑为utf-8.

但是,我找不到这个配置php.ini.我应该简单地添加一条可以说的线default_encoding = "utf-8"吗?

我有一个;default_charset = "iso-8859-1".如你所见(;),现在它没有被激活.我应该删除分号并将其设置为"utf-8"?这会照顾默认编码吗?

我还发现了其他编码指令,我不知道该怎么办:

[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
...
; http://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15
...
;mssql.charset = "ISO-8859-1"
...
;exif.encode_unicode = ISO-8859-15
Run Code Online (Sandbox Code Playgroud)

有什么理由我不应该简单地用它们全部替换它们utf-8

php unicode encoding character-encoding

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

在php print_r语句的末尾,"1"是什么意思?

我的print_r($view)函数产生:

View Object
(
    [viewArray:View:private] => Array
        (
            [title] => Projet JDelage
        )
)
1 <--------------
Run Code Online (Sandbox Code Playgroud)

最后的"1"是什么意思?关于如何解析输出的PHP手册不是很清楚print_r.

php

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

为什么在一个instanceOf后施放?

在下面的示例中(来自我的coursepack),我们希望为Square实例c1提供一些其他对象的引用p1,但前提是这两个对象是兼容的类型.

if (p1 instanceof Square) {c1 = (Square) p1;}
Run Code Online (Sandbox Code Playgroud)

我在这里不明白的是,我们首先检查p1确实是一个Square,然后我们仍然施展它.如果是Square,为什么演员?

我怀疑答案在于明显和实际类型之间的区别,但我仍然感到困惑......

编辑:
编译器将如何处理:

if (p1 instanceof Square) {c1 = p1;}
Run Code Online (Sandbox Code Playgroud)

Edit2:
问题是instanceof检查实际类型而不是表观类型?然后演员改变了表观类型?

谢谢,

JDelage

java polymorphism instanceof

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

如何为哈希函数选择一个盐来保护密码?

我是一个(接近完整的)初学者,这是我第一次尝试加密 - 实际上这可能是我第一次使用这个词了.

这是我的问题:对于非银行/军事,甚至是商业网络应用程序,选择用于密码的哈希函数的盐的正确方法是什么?

我可以轻松地为每个新用户生成一个伪随机盐,并在应用哈希函数之前将该盐附加到他们的pw.但是我仍然需要存储盐,所以大概任何能够访问哈希密码的人都会获得盐.

盐的好处只是让pw"更随机",因此打败了基于标准字典的彩虹表吗?

以下任何一个都是好的和实用的想法:

  1. 将盐存储在一个单独的数据库中 - 可能是一个单独的系统,绝对是一个不同的主机,名称,pw等.
  2. 根据用户名(或第一个+姓氏或注册日期)的哈希值生成salt,可能使用不同的哈希函数?然后盐本身不会存储在数据库中 - 只有用于计算它的数据才会...
  3. 在db中存储一个值,该值以非常明显的方式连接散列的pw和盐(例如,盐是10个随机密钥,并且它们在字母编号1和2,4和5,8和9之间的散列pw内注入).

作为一个附带问题,在升级网站软件时更改盐渍哈希算法有多容易?现在感觉很噩梦.

security encryption hash

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

初学者问题:什么是约束力?

我试图理解早期和晚期绑定之间的区别,并在此过程中意识到绑定的概念对我来说是模糊的.我我明白它与数据作为内存字的方式与类型为一组语言特征的方式有关,但我不确定这些是正确的概念.另外,如何理解这一点有助于人们成为更好的程序员?

请注意:这个问题不是"什么是迟到的早期约束"或"两者之间的权衡取舍".这些已存在于此.

谢谢,

JDelage

data-binding language-features programming-languages data-structures

16
推荐指数
1
解决办法
2712
查看次数

我应该如何在MySQL中存储sha512 salted&hashed密码?

所有,

我使用以下PHP函数来为Web应用程序加密和哈希用户密码:

function stringHashing($password,$salt){
 $hashedString=$password.$salt;
 for ($i=0; $i<50; $i++){
  $hashedString=hash('sha512',$password.$hashedString.$salt);
  }
 return $hashedString;
}  
Run Code Online (Sandbox Code Playgroud)

在MySQL中存储结果字符串的最佳方法是什么?我想这是一个固定的CHAR字段?我该如何计算合适的长度?

谢谢,

JDelage

php mysql security

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