我遇到了一个讨论,其中我了解到我一直在做的事情实际上并没有腌制密码而是给它们加油,而且我已经开始使用以下功能:
hash_function($salt.hash_function($pepper.$password)) [multiple iterations]
Run Code Online (Sandbox Code Playgroud)
忽略所选的哈希算法(我希望这是对盐和辣椒的讨论,而不是特定的算法,但我使用的是安全算法),这是一个安全的选择还是我应该做一些不同的事情?对于那些不熟悉这些条款的人:
甲盐是通常存储与设计,使其不可能使用哈希表来破解密码的数据库中的字符串中的随机生成值.由于每个密码都有自己的盐,因此必须对它们进行单独的强制攻击才能破解它们; 但是,由于salt使用密码哈希存储在数据库中,因此数据库泄露意味着丢失两者.
甲胡椒是从中旨在是秘密的数据库(在应用程序的源代码通常硬编码)分开存储站点范围静态值.它的使用是为了破坏数据库不会导致整个应用程序的密码表变得暴力破解.
有什么我缺少的,并且正在腌制和密封我的密码是保护用户安全的最佳选择吗?这样做有没有潜在的安全漏洞?
注意:为了讨论的目的,假设应用程序和数据库存储在不同的机器上,不共享密码等,因此违反数据库服务器并不会自动意味着破坏应用程序服务器.
我正在尝试启动此脚本:
#!/usr/bin/perl
use DBI;
my $dbh = DBI->connect( 'dbi:Oracle:host=lonlin2;sid=TIMFX1AD;port=1524','xbsesdbo','xbsesdbo123' ) || die ( $DBI::errstr . "\n" );
my $query= "SELECT * FROM product_elements WHERE element_id = 1001";
my $queryHandler= $dbh->prepare($query);
my $result= $queryHandler->execute();
open(fileHandler,"> note.txt");
print fileHandler "Risultato query: $result\n";
my $e= $dbh->disconnect();
close(fileHandler);
Run Code Online (Sandbox Code Playgroud)
当我启动此脚本时,我收到此错误:
无法在@INC中找到DBI.pm(@INC包含:/opt/perl_32/lib/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/5.8.3/opt/perl_32/lib/site_perl/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/site_perl/5.8.3/opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.3/IA64.ARCHREV_0- thread-multi /opt/perl_32/lib/vendor_perl/5.8.3/opt/perl_32/lib/vendor_perl.)at ./prova.pl第3行.
我已经安装好!! DBI.pm安装!!
我做了一个DIVwith visibility: hidden并附加了::before这个DIV 的伪元素visibility: visible.这在Firefox,Chrome和Safari中可以正常工作,但在Internet Explorer 10中,伪元素不会呈现.
请解释我是否完成了这个错误,或者这是否是Internet Explorer的问题.有没有解决方法(我们只能访问CSS,而不是源HTML)?
我需要监视(使用watchdog)单个文件,而不是整个目录。
避免监视整个目录的最佳方法是什么?我想这
class watchdog.events.PatternMatchingEventHandler(patterns=None, ignore_patterns=None, ignore_directories=False, case_sensitive=False)[source]
Run Code Online (Sandbox Code Playgroud)
可能会有所帮助,但是如何为我的文件(C:/dir1/dir2/file.txt)定义适当的模式?
我最近在不知道自己在做什么的情况下将Git安装到了我的Windows 7笔记本电脑上。我现在遇到的问题是我 PC 上的所有文件上都有问号图标,就好像它们需要提交到存储库一样。
我怎样才能撤消我所做的一切,以便文件上不再有问号图标?
我有这2个mysql表:TableA和TableB
TableA
*ColumnAId
*ColumnA1
*ColumnA2
TableB
*ColumnBId
*ColumnAId
*ColumnB1
*ColumnB2
在PHP中,我想拥有这种多维数组格式
$array = array(
array(
'ColumnAId' => value,
'ColumnA1' => value,
'ColumnA2' => value,
'TableB' => array(
array(
'ColumnBId' => value,
'ColumnAId' => value,
'ColumnB1' => value,
'ColumnB2' => value
)
)
)
);
Run Code Online (Sandbox Code Playgroud)
这样我就可以用这种方式循环它
foreach($array as $i => $TableA) {
echo 'ColumnAId' . $TableA['ColumnAId'];
echo 'ColumnA1' . $TableA['ColumnA1'];
echo 'ColumnA2' . $TableA['ColumnA2'];
echo 'TableB\'s';
foreach($value['TableB'] as $j => $TableB) {
echo $TableB['...']...
echo $TableB['...']...
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,查询MySQL数据库的最佳方法或正确方法是什么,以便我可以实现这一目标?
解决方案1 ---我正在使用的那个 …
我有一个分散的MySQL数据库表分布在许多服务器上,并希望有一个函数来获取随机记录.
我看待它的方式,最好的方法是:
这个问题将集中在解决方案的第2部分.
我的表没有数字ID,我们决定使用GUID以避免必须维护票务服务的开销.我们将GUID与分片标识符结合使用,以确保它们是唯一的.
表是这样的:
guid name details
003-b0470602-a64b-11da-8632-93ebf1c0e05a Aura Some details
Run Code Online (Sandbox Code Playgroud)
杰克建议我到目前为止提出的最佳答案是:
SELECT * FROM table LIMIT {result from step 2}我担心这涉及的处理可能会非常大(虽然肯定比这更好ORDER BY RAND() LIMIT 1,并且想知道是否有人有更好的解决方案使用非数字标识符.
我目前使用会话将用户登录到我的网站.现在,我想在混合中添加cookie,以便人们可以在几天后访问该网站,而无需再次登录.
我不想将密码存储在cookie中或加密任何东西 - 所以我的解决方案是将用户名存储在cookie中,并使用一种登录哈希(特定于每个用户的每次登录)创建另一个cookie.然后,在每个页面的顶部,检查cookie和登录会话.如果cookie存在但会话不存在,请找到用户名并将用户登录.
因此,这会在他们成功登录后发生($row['username']是他们输入的用户名):
$_SESSION['username']=$row[username];
$_SESSION['user_id']=$row['id'];
$loginhash = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 32);
$number_of_days = 14;
$date_of_expiry = time() + 60 * 60 * 24 * $number_of_days ;
setcookie( "userlogin", $row['username'], $date_of_expiry, "/" ) ;
setcookie( "loginhash", $loginhash, $date_of_expiry, "/" ) ;
$today=date("Y-m-d");
mysql_query("update members set last_login='$today',loginhash='$loginhash' where id='$row[id]' ") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
然后在每个页面的顶部,执行以下操作:
if($_COOKIE['userlogin'] && !isset($_SESSION[user_id])){
$username=mysql_real_escape_string($_COOKIE['userlogin']);
$loginhash=mysql_real_escape_string($_COOKIE['loginhash']);
$result=mysql_query("select * from members where (username='$username' || email='$username') && loginhash='$loginhash' ") or die (mysql_error());
$row=mysql_fetch_array($result);
$_SESSION['username']=$row[username];
$_SESSION['user_id']=$row['id'];
}
Run Code Online (Sandbox Code Playgroud)
然后,当然,当用户手动注销时取消设置cookie.
我的问题是,这是否安全(除了其他人使用用户计算机的危险)?为每次登录生成随机哈希,因此有人不能仅使用某人的用户名创建cookie并以该人身份登录.
登录脚本使用HTTPS,因此该方面没有危险.
我是 Perl 新手,现在正在学习 Perl 中的 OOP。
有没有一种方法不需要任何额外的库(禁止使用任何额外的库)来访问另一个包中一个包中的变量?
package Class;
my $CONSTANT = 'foo'; # this doesn't work, neither our $CONSTANT ..
# ...
# class methodes
# ...
package main;
print Class::$CONSTANT ."\n";
Run Code Online (Sandbox Code Playgroud)