下面的代码是用php编写的:
$user = addslashes($_POST['user']);
$pwd = addslashes($_POST['pwd']);
$query = "SELECT * FROM userdata WHERE UserName='$user' AND Password=PASSWORD('$pwd')";
Run Code Online (Sandbox Code Playgroud)
然后将查询发送到mysql还有什么我需要处理的吗?
请指出.
我正在使用优秀的jquery-file-upload图像上传器,但需要在子文件夹中存储不同用户的图像.我可以通过将文件夹的名称作为$_POST
arg发送到upload.class.php或将名称作为$_SESSION
arg 检索来实现.
安全性有偏好吗?
我正在尝试开发一个表单助手来防止形式欺骗.所以我想出了这个:
<form...>
<?=form::secure()?>
...
</form>
Run Code Online (Sandbox Code Playgroud)
使用键'_token'标记隐藏的表单,使用令牌,该令牌是用户会话的id的md5(随机并在1周后续订).然后在"动作"网址(从表单):
$token = (isset($_GET['_token'])) ? $_GET['_token'] : null;
$token = (is_null($token) and isset($_POST['_token'])) ? $_POST['_token'] : $token;
if (form::is_secure($token)) { // checks if the given token is equal to md5(user id)
...ok...
} else {
...error...
}
Run Code Online (Sandbox Code Playgroud)
这是否可以防止形式欺骗或我遗漏了什么?如果用户ID的确切时刻到期时,用户刚刚加载的页面,然后提交表单,它只是打印错误,他应该再次提交表单,但多数民众赞成接受(这是罕见的).
我认为这里唯一可能出错的是,如果潜在的攻击者能够获得用户会话ID,然后他可以将?_token = id附加到它的请求并将其提供给用户进行浏览,但此时,如果攻击者拥有用户会话ID,它无论如何都可以做任何他想做的事情.
我对吗?如果没有,我如何编辑我的代码以实现我的目标?
好的,所以我理解为什么在散列之前输入密码是个好主意.问题是,通常人们建议将盐附加或添加到密码中,为什么不同时使用?
我的想法是,所以如果黑客先生掌握数据库并希望得到人x的密码,他会认为自己,大多数人都建议附加或预先添加盐,所以我们这样做.他生成一个彩虹表密码+盐的所有组合,并试试他的运气.如果这不起作用他会做同样的但盐+密码.
为了使攻击变得更加困难,为什么开发人员不再采取进一步做"盐+密码+盐",或"反向(盐)+密码+盐",或者你可能很想要并开始切割密码/盐,开始在这里和那里放点盐等.
黑客能够找到密码的唯一方法是,他是否可以访问源代码(了解在散列之前如何将盐编织到密码中)
另外需要注意的是,人们建议在进行按键拉伸时至少进行1000次迭代,为什么不进行1147,1652等等:)
第二个注意事项,当查看哈希字符串时,是否可以计算出使用的哈希函数?
因此,在构建webapp并存储密码时,安全性和性能都是要记住的重要事项.由于GPU的速度越来越快,我们已经看到即使盐析SHA1密码也很容易被破解的证据,我想知道存储密码的最佳做法是什么.
我认为,为了增加存储密码的安全性,你可以为salt添加一个秘密.所以例如,这个的python代码可能是:
import hashlib
import hmac
secret = 'XYZ'
h = hmac.new('salt' + secret, 'password')
Run Code Online (Sandbox Code Playgroud)
PS我没有在安全论坛上发布这个,因为我想要一个webapp开发人员的观点.
基于一些非常有用的提示,我使用以下代码来包含PHP
我的根目录之外的文件,看起来类似于:
define('WEB_ROOT', __DIR__);
define('APP_ROOT', dirname(__DIR__));
define('PHP_ROOT', APP_ROOT . DIRECTORY_SEPARATOR . 'application');
include(PHP_ROOT . DIRECTORY_SEPARATOR . 'bootstrap.php');
Run Code Online (Sandbox Code Playgroud)
我的问题是,例如,您可以根据bootstrap.php
上面的内容包含代码.
如果那个PHP
文件引导程序有自己的代码行,那么在public_html根文件夹中包含一个文件BACK ....如何编写一个代码呢?我这样做有些困难,我的目标是我不想在代码中填写实际的文字目录,我想避免文件遍历攻击
我的网站上有一个目录,我需要确保除了我自己之外没有人可以进入.从我所做的阅读中,看起来有两种方法可以保护目录:
我需要尽可能安全地保护目录中的文件,所以我想我会使用这两种方法进行双重保护.
问题1:我错过了什么吗?(即我可以添加另一层保护吗?)
问题2:我需要在.htaccess文件中放置什么才能使上述工作正常?
我将数据提交到Grails中的控制器并进行了javascript注入.我很惊讶,因为我认为默认是在参数进入控制器时对其进行编码.我可以轻松设置它,以便所有参数在到达控制器时进行编码吗?另外,我可以安全地create
使用文本进行GORM ,或者是否容易受到SQL注入攻击?我在指南中看到如何为find
查询阻止SQL注入,但是对象创建呢?
我还看到有一种encodeAsHTML
方法可以在返回客户端的路上调用编码.我不想在它进入数据库之前这样做,这样我只需编码一次吗?谢谢!
所以我开始研究node-mysql,因为我的整个站点都是用PHP构建的,但是我想使用node/socket.io来顺利进行异步用户端更新.但是我在node-mysql中遇到了一个问题,我还没有得到答案.mysql服务器的登录信息如何不是公共信息?
根据文档https://github.com/felixge/node-mysql你连接到数据库就像这样
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
});
connection.connect();
connection.query('SELECT 1', function(err, rows, fields) {
if (err) throw err;
console.log('Query result: ', rows);
});
connection.end();
Run Code Online (Sandbox Code Playgroud)
那么是什么阻止用户将服务器文件放入导航栏并查看mysql服务器的登录信息?我对此非常困惑,有人可以向我解释一下吗?
这是一个由两部分组成的问题.
我正在尝试建立我们的生产(实时)托管架构的新部分,所以我试图将我们的临时网络服务器指向新的生产内容共享(同一子网中另一台服务器上的UNC路径).
我目前正在获得可怕的PolicyException:无法获取所需的权限消息.
<trust level="Full" originUrl="" />
到Web.config(我很确定它已经是这样了,不管怎么说)caspol
- 见下文更令人困惑的是,抱怨的程序集是我们的内部代码库之一.在ILSpy中对它进行反编译,我可以看到对它的引用
[assembly: SecurityPermission(SecurityAction.RequestMinimum,
SkipVerification = true)]
Run Code Online (Sandbox Code Playgroud)
,除了我不记得曾经在该程序集中添加任何代码访问安全性.引用的类中Security
没有任何类具有声明性,当然也没有引用AllowPartiallyTrustedCallersAttribute或CodeAccessPermission.Assert.
我对所涉及的所有服务器(包括Web服务器和保存内容共享的服务器)具有完全管理访问权限.
那么如何解决这个问题呢?
(我们是否可以将问题#1846816转换为社区维基,其中包含所有可能的答案,而不是必须在Google上阅读数以万计的问题以及过多的点击?o)
编辑:(编辑)输出caspol -a -lg
如下:
Microsoft (R) .NET Framework CasPol 2.0.50727.4016
Copyright (c) Microsoft Corporation. All rights reserved.
Security is ON
Execution checking is ON
Policy change prompt is OFF
Level = Enterprise
Code Groups: …
Run Code Online (Sandbox Code Playgroud)