2013-04-21 86 views
0

我几乎准备好将我的网站转移到我的网站主机,但在此之前,我希望尽可能保护好网站。我听说过有关MySQL注入和其他可能面临的问题,我将如何保护我的网站,MySQL数据库和它们的文件?保护网站的最佳方法和方法

我将从mysql扩展更改为mysqli或PDO,您推荐哪些?

+0

可能的重复[如何防止SQL注入PHP?](http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php) – Quentin 2013-04-21 18:43:38

回答

2

我会亲自使用PDO,它比mysqli更好。如果你不知道MySQL的注入是您插入原始数据转换成这样的查询:

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

未经消毒的输入,如果用户输入管理员的用户名和' OR '1'='1的查询变得密码:

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

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

的东西,如PDO和库MySQLi,准备语句告诉数据库首先应该查询将是,然后发送,情报,而不是实际上有它在查询像这样:

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

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