2016-04-03 79 views
0

我正在使用000webhost网站托管从我的Android应用程序访问的数据库。我创建了一个PHP脚本这样在php脚本中掩盖真正的用户名,密码,dbname

<?php 
    $connection = mysqli_connect("localhost", "my_user", "my_password", "my_db"); 
... 

当我运行它时,它说无法连接“访问被拒绝的用户‘my_user’@‘localhost’的(使用密码:YES)”。这是我看过的教程语法。他们正在使用相同的网站。

但是,如果我要

<?php 
    $connection = mysqli_connect("mysql1.000webhost.com", "a80023423_as22", "abc222", "a80023423_as22"); 

它的工作参数给出的实际值。

如果有人在地址栏中键入我的URL,他们可以访问我所有的php文件,并因此使我的密码和连接到数据库所需的所有数据。我经历了一些博客和网站,甚至在堆栈中的一些答案,但无法弄清楚如何掩盖这些值。

如果您有任何提示可以提供?或者是已经发布的答案的链接?

+4

普通用户看不到php文件的源代码,他们只能看到这些文件生成的输出。 –

+0

你不应该从你的android应用程序访问你的数据库,这是一个巨大的安全问题。相反,您应该使用json或xml或其他方式来检索信息,并且其他API可以从另一端接收信息,请检查此框架或类似信息http://www.slimframework.com/ – Saikios

+0

不能解码.php文件?此外,我想知道为什么“my_user”不工作为“a80023423_as22”做 – Blogger

回答

0

您的php ini设置为E_ALL & ~E_NOTICEdisplay_errors ini指令设置为1.这就是为什么它以纯文本格式打印失败的mysqli请求。这在测试环境中可能是可取的,但绝对不是在生产中。

如果您可以编辑您的php.ini文件,那么您可以将display_errors指令设置为0

如果你不能改变的ini文件,你需要包括在你的脚本的顶部验证码:

error_reporting(E_ALL); 
ini_set("display_errors", 0); 

这样可以防止像MySQL的失败登录错误被显示给用户。在php文件中有实际的用户名和密码是安全的。

+0

在生产中设置不同的错误报告级别没有任何理由。还有很多理由让它和dev一样。在开发中它应该是E_ALL –

+0

应该完全删除'error_reporting'行然后。 – Torchify

+0

好吧,虽然它与答案无关,但在代码中仍然应该保留,所以最好保留。 –