小编Gum*_*mbo的帖子

白名单用户输入而不是使用预准备语句来阻止sql注入?

我读过几篇关于sql注入预防的文章.他们中的大多数建议使用预准备语句来防止sql注入和白名单只是一个额外的解决方案.我无法得到他们的观点.

恕我直言,白名单用户输入要好得多,因为它还可以防止XSS攻击.没有字符限制时,白名单是不可能的.这种情况很少发生.

让我们在nodejs中考虑这个例子.

准备好的声明

DB.query("UPDATE user SET username=?",username,cb);
Run Code Online (Sandbox Code Playgroud)

白名单

//assume that username is alphabetic
if(!/^[a-z]+$/.test(username)){
    throw new Error('Invalid user name');
}
DB.query("UPDATE user SET username='"+username+"'",cb);
Run Code Online (Sandbox Code Playgroud)

你们有什么感想?白名单或准备好的陈述?为什么不建议在准备好的语句上将用户输入列入白名单?

sql sql-injection

0
推荐指数
1
解决办法
2224
查看次数

使用SHA512存储登录密码而不是MD5

我一直在线阅读MD5不是很安全,我已经决定将我的网站切换到使用SHA512,我之前从未这样做过,所以我只是要求你检查一下我是否做得对,或者是否有另一种更安全的哈希方法可用于存储密码?

$ upass是我需要哈希的用户密码.

这是我与MD5的原始PHP:

 $uname = mysql_real_escape_string($_POST['uname']);
 $sname = mysql_real_escape_string($_POST['sname']);
 $email = mysql_real_escape_string($_POST['email']);
 $upass = md5(mysql_real_escape_string($_POST['pass']));
Run Code Online (Sandbox Code Playgroud)

这是我使用SHA的新PHP:

 $uname = mysql_real_escape_string($_POST['uname']);
 $sname = mysql_real_escape_string($_POST['sname']);
 $email = mysql_real_escape_string($_POST['email']);
 $upass = mysql_real_escape_string($_POST['pass']);

 $upass = hash('SHA512', $upass);
Run Code Online (Sandbox Code Playgroud)

这里也是单词"password"的散列字符串,只是为了确保哈希工作正常.

SHA512:

b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e

MD5:

5f4dcc3b5aa765d61d8327deb882cf99

感谢您提前提供任何帮助/建议.

php security password-storage

0
推荐指数
1
解决办法
762
查看次数

将en.example.com重定向到example.com/index.php?language=en

我想重定向以以下内容开头的地址:

en.example.com/somefile.php
Run Code Online (Sandbox Code Playgroud)

至:

example.com/somefile.php?language=en
Run Code Online (Sandbox Code Playgroud)

在lighttpd中使用mod_rewrite模块.到现在为止我得到了这个:

$HTTP["host"] =~ "^en\.(.*)\.com$" {
        url.rewrite-once = (
                "^/(.*)"
                =>
                "/$1?language=en"
        )
}
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有起作用.该怎么做才能使这项工作?

mod-rewrite multilingual lighttpd

-1
推荐指数
1
解决办法
687
查看次数

为C#.net中的表单项批量分配或修改值?

我有一组20个按钮,名为button1,button2,button3,button4,button5,button6,...,button20.

我想为每个按钮分配新的Text值:

button1.Text = "something";
button2.Text = "anotherthing";
.
button20.Text = "somethingelse";
Run Code Online (Sandbox Code Playgroud)

这些值将在主按钮的按钮单击事件中分配.有多个主按钮为每个小按钮(button1,button2,...,button20)分配不同的值.

为了使值赋值更容易和更方便,我想在数组中加载这些按钮并从数据库文件中获取值.

但是如何在阵列中安排它们呢?以及如何自动从数据库中为这些按钮赋值?

希望这个问题能得到解答.

c# visual-studio-2008 winforms

-1
推荐指数
1
解决办法
80
查看次数

如何从数组中回显php变量?

我需要回复这样的事情:

echo "<a href="#">$some['variable']</a>
Run Code Online (Sandbox Code Playgroud)

如何[]在链接中转义括号以回显变量?

php syntax escaping

-1
推荐指数
1
解决办法
769
查看次数

"<?"后需要"PHP"吗?

我正在阅读一些我一直在使用的旧代码,并且因为它仍在运行而知道有效.然而,当我发现我写了一篇文章时<?,我很困惑,但没有<?PHP.然而,之后的代码仍然有效.这个定义了吗?这应该是这样的吗?我写的代码比我写的多吗?离开它感觉很脏PHP,但是如果没关系,我也可以,对吧?


沙箱:http://sandbox.onlinephpfunctions.com/code/69b81a2f45927d3feb52af012521480e1ba01edd

php syntax

-2
推荐指数
2
解决办法
126
查看次数

具有O(N)和反向引用支持的正则表达式

您可能知道有两种不同的正则表达式实现:一种使用回溯(pcre),另一种使用有限自动机(re2).

这两种算法都有其局限性:在特定情况下,pcre可以采用指数时间来查找匹配,而有限自动机不支持反向引用.

PCRE实现支持反向引用,在像匹配的表情非常低效的/a?a?a?a?aaaa/反对aaaa,更多的a的表达和输入有-的时间也就越长,并与他们的30+它会占用大量时间,如果.

具有有限自动机的版本可以很好地处理所有这些实现,并且输入具有O(N)复杂性,但不支持反向引用:

pcre时间对复杂的表达式 - http://i.stack.imgur.com/D4gkC.png NFA处理这些,但不支持反向引用 - http://i.stack.imgur.com/t2EwI.png

有关反向引用的一些信息支持:

RE2 - http://code.google.com/p/re2/

一个重要的例外是RE2 不再支持反向引用 和广义零宽度断言,因为它们无法有效实现.

汤普森NFA - http://swtch.com/~rsc/regexp/regexp1.html

如前所述,没有人知道如何有效地实现具有反向引用的正则表达式,尽管没有人能够证明它也是不可能的.(具体来说,问题是NP完全,这意味着如果有人确实找到了有效的实施方案,那对计算机科学家来说将是一个重大新闻,并且会赢得一百万美元的奖金.)

所以我创建了自己的版本,它既支持反向引用又具有O(N)复杂性.它用haskell编写,大约600行(其中约200个是空白的,约200个类型的声明,可以跳过)行长.它在大约10秒内通过/a?a?aa/反对aa(100个a)来咀嚼,据我所知它是唯一可以匹配的版本

/a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?(a?a?a?a?a?a?a?a?a?a?aaaaaaaaaa)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\1/
Run Code Online (Sandbox Code Playgroud)

反对

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Run Code Online (Sandbox Code Playgroud)

在理智(约10秒)的时间.它当然支持基本正则表达式规范中列出的所有其他功能,我在互联网上找到了它.

问题是:它真的是"计算机科学家的重大新闻",如果是这样,我该怎么办?

PS:我将在大约一周内显示源代码 - 我仍然希望使用分析器运行一些测试并替换几个内部数据结构.

regex complexity-theory

-4
推荐指数
1
解决办法
2484
查看次数