这种方法会保护我的数据库不被修改吗?

时间:2014-07-27 20:34:29

标签: php mysql sql

我所关心的是我的数据库没有被改变。我没有任何登录或类似的东西所以我不关心帐户绕过,我只是不希望人们能够通过这个简单的HTML表单发送像DROP这样的命令。

这是对的吗?这是我在阅读了另一个相关主题后提出来的。

$stmt = $dbh->prepare("INSERT INTO request_song (ip, mesaj, name, oras, pentru, song) VALUES (:ip, :mesaj, :name, :oras, :pentru, :song)");
$stmt->bindParam(':ip', $ip);
$stmt->bindParam(':mesaj', $message);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':oras', $oras);
$stmt->bindParam(':pentru', $pentru);
$stmt->bindParam(':song', $melodie);
$stmt->execute();

这会修复任何潜在的漏洞吗? This is the form - 任何白帽子都可以确认它的安全吗?

2 个答案:

答案 0 :(得分:3)

您似乎在询问您准备好的查询代码是否会阻止SQL注入攻击。如果那就是你要问的,那么是的。正确使用的准备/参数化查询将查询(命令)与数据分开。 SQL注入攻击有效,因为数据有时会与命令混合,允许某人通过数据输入控制您的服务器。由于它们在您的情况下是分开的,因此这不是问题。

  

这会修复任何潜在的漏洞吗?

不,无论如何也不可能回答“是”。这是一个非常广泛的问题。你仍然需要担心所有其他危险。不要忘记XSS攻击以及其他应用程序中没有的内容。

答案 1 :(得分:2)

如果您真的担心它,那么最简单的方法就是用于连接username/password的{​​{1}}的{​​{1}}应该只有MySQL }。在向用户授予权限时,只需确保仅选择所需的操作。

当用户尝试删除记录时,您只需设置一个删除标记,即" soft"删除。对于用户的所有意图,即使该记录仍在数据库中,该记录也是不存在的。稍后使用另一个具有删除/删除功能的MySQL帐户清除此类记录的数据库。