【问题标题】:Best methods and ways of protecting website保护网站的最佳方法和方法
【发布时间】:2013-04-14 14:19:40
【问题描述】:

我几乎已准备好将我的网站转移到我的虚拟主机上,但在此之前,我希望尽可能地对其进行保护。我听说过 MySQL 注入和您可能面临的其他问题,我将如何保护我的网站、MySQL 数据库和文件免受它们的侵害?

我打算从mysql扩展改成mysqli或者PDO,你推荐哪个?

【问题讨论】:

标签: php mysql file security web


【解决方案1】:

我个人会使用 PDO,它比 mysqli 好。如果您不知道 mysql 注入是将原始数据插入到这样的查询中:

$query = "SELECT * FROM users WHERE username='" .$_GET['user']. "' AND password='" .$_GET['password']. "'";

如果不清理输入,如果有人输入 admin 作为用户名,' OR '1'='1 作为密码,则查询变为:

SELECT * FROM users WHERE username='admin' AND password='' OR '1'='1'

这会导致查询忽略密码并以管理员身份登录,只要 1=1,它总是这样做。只需使用 mysql,您就可以使用 mysql_real_escape_string($_GET['user']) 来转义任何可能影响查询的内容,例如数据库可以理解的 ' would become \' 。请注意,攻击者可以做比以管理员身份登录更糟糕的事情,例如,他们可以使用 drop 命令删除您的整个数据库结构并在其后注释掉代码,或者实际上使用非常奇怪的 shellcode 影响您的 Web 服务器。

使用 PDO 或 MySQLi 之类的东西,准备好的语句首先告诉数据库查询将是什么,然后发送信息,而不是像这样在查询中实际包含它:

$stm = $pdo->prepare("SELECT * FROM users WHERE username=? AND password=?");
$stm->execute(array($_GET['user'], $_GET['password']));

编辑:还有一件事,我认为仍然可以使用 pdo 进行 mysql 注入,但我不知道它是如何工作的,所以我建议做更多的研究,看看你是否能找到任何东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2012-06-20
    • 2010-11-23
    • 2014-09-12
    • 2020-09-26
    相关资源
    最近更新 更多