【问题标题】:How to hide SQL statements from hackers? [closed]如何对黑客隐藏 SQL 语句? [关闭]
【发布时间】:2013-05-07 15:34:02
【问题描述】:

我想在黑客查看源代码时隐藏我的数据库连接详细信息 因为他们可以向我的数据库发送恶意代码。

例如:

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin',35)");

mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Glenn', 'Quagmire',33)");

mysqli_close($con);
?>

黑客现在知道我的数据库的用户名、密码和名称是什么,他可以向我的数据库注入错误代码。我搜索了该网站,但找不到正确的格式来解决我的问题。

【问题讨论】:

  • 如果黑客可以查看您的源代码,他们也可以读取您的密码,他们可以读取您的盐、您的加密密钥以及使任何类型的安全性可行的所有其他内容。访问者应该看不到您的源代码。期间。
  • 您可以定义用户名和密码,然后将它们存储在不在您网站目录中的文件中,如果您真的担心有人看到 php。
  • 如果一切正常,用户将看不到您的 PHP 源代码,但最好将您的凭据放在 Web 根目录之外并在需要时include 他们。
  • 用户看不到 php 代码(除非您的服务器配置错误)。因此,将您的数据库密码包含在您的 PHP 代码中不会使其对黑客可用。
  • 你的黑客不应该访问你服务器上的文件,他不应该在你的服务器上看到你的 php 源代码,你的服务器应该有一个安全措施来防止这种情况。

标签: php mysqli sql-injection


【解决方案1】:

php是一种服务器端语言,除非有php文件,否则其他人是无法读取的,用户在浏览器中看到的就是浏览器解析出来的输出。

只要您不回显、打印或以任何方式显示您的凭据,您就应该很好。

【讨论】:

  • 我的意思是当我在同一页面中编写 html 表单和 sql 语句时,当用户从浏览器单击查看源代码时,他能够看到它
  • 如果代码包含在php标签中,则无法通过查看源选项查看
  • 好的,谢谢,我不知道
  • 没问题,当我第一次开始学习使用 php 使用数据库时,这是我想知道的。
【解决方案2】:

除非他们真的入侵或破解了您的网络帐户,否则他们无法读取数据库信息。您可以对数据库信息进行编码,仅此而已。

正确的方法是阻止对 PHP 代码本身的访问。 included 文件中的数据库信息只能由 Web 服务器读写,这样可以防止非法访问。这样做的缺点是,如果您需要更改信息,您需要 root/admin 帐户来更新信息。

为防止 SQL 注入,您应该对字符串使用 real_escape_string,对数字使用 is_numeric。

【讨论】:

  • 不,为了防止 SQL 注入,应该使用prepared statements
  • @MarcelKorpel 这是另一个可能更简单的选择。感谢添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2020-04-07
  • 2010-11-05
相关资源
最近更新 更多