防止SQL注入攻击

时间:2013-04-19 19:10:56

标签: php html sql mysqli

大家好我正在尝试并开始创建一个即将实施论坛的网站。我开始研究可能影响网站的安全问题。区域,如跨站点脚本和SQL注入攻击。

从研究剥离所有html标签将阻止XSS。这将与剥离 SQL特殊字符是否足以阻止sql注入攻击?

<?php
require "dbconn.php";

$mnam = strip_tags($_GET['blogentername']);
$mcom = strip_tags($_GET['blogmessage']);
$approve = 'N';
$dte = gmdate("d-M-Y H:i:s");

$mnam = mysql_real_escape_string($user);
$mcom = mysql_real_escape_string($mcom);

$query = "INSERT INTO blogentry VALUES  ('".$mnam."','".$dte."','".$mcom."','".$approve."','','')";

$results = mysql_query($query)
           or die(mysql_error());

header('Location:messages.php?messagesent=1');

?>

感谢Andy的所有时间

3 个答案:

答案 0 :(得分:0)

你永远不应该删除标签。将它们保存在数据库raw中,然后在将它们输出到浏览器时使用htmlspecialchars

答案 1 :(得分:0)

对于给出的代码 - 是的,它非常安全且难以穿透。

但是,一般来说,保护SQL注入的想法是非常错误的。

您的代码中没有“剥离SQL特殊字符”。这种剥离毫无意义。
说到SQL 字符串,如果正确格式化,它们是非常安全的。但是对于所有其他SQL文字,你称之为“剥离”的东西实际上都不会删除任何内容。

答案 2 :(得分:0)

作为最佳实践,永远不要使用字符串连接来构建SQL命令。

使用参数化查询。它们本质上更安全,可以通过数据库引擎进行优化,以便在多次执行相同类型的语句时提供更好的性能。

有关示例的更多信息,请访问:How can I prevent SQL injection in PHP?