0

大家好,我正在试验并开始创建一个将实施论坛的网站。我已经开始研究可能影响网站的安全问题。跨站脚本和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');

?>

谢谢大家的时间安迪

4

3 回答 3

0

你不应该剥离标签。将它们原始保存在数据库中,然后在将它们htmlspecialchars输出到浏览器时使用。

于 2013-04-19T19:12:38.140 回答
0

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

但是,您防御 SQL 注入的想法通常是非常错误的。

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

于 2013-04-19T19:14:03.860 回答
0

作为最佳实践,切勿使用字符串连接来构建 SQL 命令。

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

此处包含示例的更多信息: 如何防止 PHP 中的 SQL 注入?

于 2013-04-19T19:29:53.663 回答