我正在考虑在public_html_root/system/config/
<?php if($calledByApp !== true) die();
$pwds['username1'] = 'hispassword';
$pwds['username2'] = 'herpassword';
$pwds['username3'] = 'anotheroned';
?>
现在。 hispassword
实际上是哈希版本
$hashedpasword = sha1($password.sha1($salt));
这样,如果包含文件,它会检查$calledByApp
,这是从入口点开始设置的 - 即root中的index.php
,所以我们可以说这样安全。如果直接从浏览器调用它 - 它将不会作为文本文件提供,而是作为PHP文件提供 - 它也会死亡,因为$calledByApp
将返回null
或false
。< / p>
此外,如果存储/删除了其他用户,则会重建该文件,因此它会反映所有用户。在包含此文件后,我们将所有用户都设置为pretty array,因此如果我们调用
if (is_string($pwds[$sanitized_username])
&& ($pwds[$sanitized_username] === $sanitized_sha1_userpassword))
我们会登录。
我的问题是:这个足够吗?
澄清:用户的数据库似乎有点矫枉过正 - max 20个用户的另一个表。此外,虽然这不会检查用户是否是真的,但它不会对数据库执行任何操作 - 看起来也增加了安全性。
答案 0 :(得分:5)
如果由于某种原因mod_php出现打嗝,可能会导致httpd显示未解释的文件;将脚本存储在文档根目录之外,以便解决此问题。
答案 1 :(得分:3)
我宁愿将该文件放在文档根目录之外,而不是依赖于PHP解释器而不会因任何原因而失败。
答案 2 :(得分:1)
不 - 这是一个非常糟糕的主意。
通过使您的源代码文件可写,您可以打开一个攻击系统的大道。 将数据嵌入到源代码中是一种混乱的做法 - 尤其是因为它无法扩展。 如果在脚本尝试包含该文件时锁定了更新,会发生什么? 如果在编写文件的过程中与浏览器的连接丢失,会发生什么?
如果你非常确定你只会拥有极少数用户和低并发性,那么到目前为止,abetter解决方案将是一个单独的目录,所有http访问被拒绝,包含一个文件每个用户,使用包含散列密码的用户名(或者您喜欢的哈希值)命名。
下进行。
答案 3 :(得分:0)
将加密密码存储在数据库中总是更安全。
如果您使用的是数据库,那么我会将用户数据存储在那里。如果没有,那么我会开始使用一个。