我有一个小型PHP应用程序,用于在MySQL数据库中存储数据.目前,用户名/密码在PHP代码中是硬编码的.例如,我不喜欢这种情况,因为代码也可以在存储库中使用.
我最好的想法是将数据从代码移动到配置文件(从存储库中排除),并以某种方式对其进行编码,因此不能直接读取(混淆).有没有更好易用的方法来解决这个问题?
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
Run Code Online (Sandbox Code Playgroud)
范围:我想建立一个强大但易于使用的解决方案.我想要合理的安全性,但我不是在处理高度机密的数据.
备注:不再推荐使用这些mysql_connect
函数,请参阅Stack Overflow问题为什么我不应该在PHP中使用mysql_函数?*.我本可以更改代码示例,但由于一些注释引用了这个,我没有.但是,问题的原始性质仍然有效.
我试图在.htaccess文件中设置一个环境变量并在PHP中检索它.我在这里看了很多其他线程,但到目前为止我尝试的所有内容都失败了.
我已将此行添加到.htaccess文件中:
SetEnv SPECIAL_PATH /foo/bin
Run Code Online (Sandbox Code Playgroud)
我尝试使用getenv()PHP函数检索此值:
<?php $specialPath = getenv('SPECIAL_PATH'); ?>
Run Code Online (Sandbox Code Playgroud)
我已经运行了phpinfo()来查看可用的环境变量列表,SPECIAL_PATH不在那里.我很困惑为什么这不起作用.
谢谢!
我想要一些关于你们认为使用PHP连接到MySQL数据库的最安全方式的输入.目前我正在这样做的方式是一个实用程序PHP文件,我包含在我所有其他PHP文件的顶部.实用程序PHP文件是这样的:
<?php
if(!defined('IN_PHP')){
die("hackerssss");
}
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_pass = "root";
$mysql_db = cokertrading;
?>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
将数据库的用户名和密码保存在xml文件中并将其导入spring security的安全文件中是一个好主意吗?还有更好的选择吗?如果我需要加密密码怎么做以及如何在phpMyAdmin上找到加密版本的密码?MySQL的
登录-service.xml中
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/muDB" />
<property name="username" value="jack" />
<property name="password" value="alex123432" />
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
MyProject的-security.xml文件
....
<beans:import resource='login-service.xml'/>
....
Run Code Online (Sandbox Code Playgroud)
请注意:由于所有用户相关的密码都已加密,我只想隐藏DATABASE本身的密码而不是表格列.我的应用程序将使用此密码连接到数据库.
我们有一个开发服务器和一个具有不同数据库连接详细信息(用户名,密码等)的实时服务器.
目前,我们将数据库连接详细信息存储在initial.php中,如果存在DEFINE语句,则选择一个.我们在我们的实时服务器上手动添加DEFINE语句.
这是一种安全的方法吗?有哪些更好的/替代方法来管理数据库连接安全性?
这样做的一个结果是每个开发人员都可以看到数据库连接的详细信息,这有点风险......
可能重复:
如何在PHP中保护数据库密码?
最近我得到了一个网站项目,应该用PHP完成,但我没有太多的PHP经验.无论如何,它已经启动并运行,但还有很大的改进空间.我感觉不舒服的一件事是我处理数据库的方式:我将数据库连接信息放在一个单独的db.php文件中并在需要的地方包含它.但我记得很多时候看到服务器返回的PHP源文件.
所以现在我的问题是:放置数据库敏感数据的更好或最好的方式/地点是什么?
顺便说一句,当出现问题时,如何让PHP在网页上显示错误消息?php.ini中的某个自定义错误页面或设置?谢谢!
注意:我使用的是PHP的老式而不是面向对象的方式.但是,如果有更好的方法来为未来的项目做准备,我对面向对象或MVC方式持开放态度
随着我的服务器变得越来越大,越来越多的用户可以访问它,我不希望他们看到MySQL用来连接PHP的密码,这些密码存储在我的'connect.php'文件中并且需要每页.但是,它只是与其他php文件位于同一目录中.
我已经考虑使用第二个'connect.php'类文件,只能访问一个表,它存储加密的密码以连接到MySQL,但是我会遇到隐藏密钥的问题.
更改权限也不起作用,如果您chmod o-r
或类似的东西,显然没有人能够访问Web应用程序.
有没有一种可以解决这个问题的方法,或者我应该自己解决?问题是,如果有一种可接受的方法,我不希望它过于复杂.
我在php文件上创建了与数据库服务器建立连接.在这个文件中,我使用的mysql_connect()
功能与我的数据库服务器的参数主机,用户名和密码.
public class DatabaseConnect
{
function __construct()
{
mysql_connect('localhost','username','password') or die('Could not connect to mysql server.');
mysql_select_db('databasename');
}
}
Run Code Online (Sandbox Code Playgroud)
现在在这种情况下,其他人可以看到用户名和密码.
我找到了另一种确保价值的方法,即mysql.default_user
和mysql.default_password
.在哪种情况下我们必须这样做?
或者我怎样才能从别人那里获得价值?
我知道问题How do I secure my database connection credentials?
已被多次询问和回答(例如,如何在PHP中保护数据库密码?).
该问题的一个普遍接受的答案是将详细信息存储在Web根目录之外.但我很好奇为什么这真的有很大的不同.
根据我的理解,一个人无法通过HTTP下载PHP文件的源代码(除非您的Web服务器配置不正确,但您会立即知道).因此,除非您无论如何都可以访问PHP文件的源代码,否则您将无法看到凭据.如果我错了,请纠正我,但这不是基本上意味着你需要shell访问吗?如果你有shell访问权限,那么你不能直接访问web root之外的文件吗?
如果该问题的答案是包含文件可能具有除了Web服务器用户之外不允许任何人读取它的特殊权限,那么(考虑到我有shell访问权限),我不能只写(或修改)任何PHP文件只是回显这些凭据?
所以问题是,是否将凭证直接存储在PHP脚本中而不是存储在Web根目录外的文件中是否真的有所不同?
我是网络编程的初学者.我试图创建一个从SQL数据库中读取数据的简单网站.起初我只是写了我的数据库密码并直接登录到php代码:
<?php
$username = "login";
$password = "pw";
mysql_connect("server", $username, $password);
...
?>
Run Code Online (Sandbox Code Playgroud)
这显然不是一个好主意!那么(更多)更"安全"的方式是什么呢?我读到将php代码放入一个单独的文件中,这意味着不要进入网站的主要php文档,然后限制对该文件的访问.也许是通过.htaccess文件.这是要走的路吗?
php ×9
mysql ×5
database ×4
security ×4
.htaccess ×2
apache ×1
connection ×1
credentials ×1
encryption ×1
java ×1
passwords ×1
sql ×1
tomcat ×1
webserver ×1