大家好我正在尝试并开始创建一个即将实施论坛的网站。我开始研究可能影响网站的安全问题。区域,如跨站点脚本和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的所有时间
答案 0 :(得分:0)
你永远不应该删除标签。将它们保存在数据库raw中,然后在将它们输出到浏览器时使用htmlspecialchars
。
答案 1 :(得分:0)
对于给出的代码 - 是的,它非常安全且难以穿透。
但是,一般来说,保护SQL注入的想法是非常错误的。
您的代码中没有“剥离SQL特殊字符”。这种剥离毫无意义。
说到SQL 字符串,如果正确格式化,它们是非常安全的。但是对于所有其他SQL文字,你称之为“剥离”的东西实际上都不会删除任何内容。
答案 2 :(得分:0)
作为最佳实践,永远不要使用字符串连接来构建SQL命令。
使用参数化查询。它们本质上更安全,可以通过数据库引擎进行优化,以便在多次执行相同类型的语句时提供更好的性能。
有关示例的更多信息,请访问:How can I prevent SQL injection in PHP?