Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这种方法会保护我的数据库不被修改吗?_Php_Mysql_Sql - Fatal编程技术网

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

Php 这种方法会保护我的数据库不被修改吗?,php,mysql,sql,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)"); $stm

我所关心的是我的数据库没有被修改。我没有任何登录或类似的东西,所以我不关心绕过帐户,我只是不希望人们能够通过这个简单的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();

这会修复任何潜在的漏洞吗?-请问有没有白帽子可以确认它是安全的?

您似乎在问,您准备的查询代码是否可以防止SQL注入攻击。如果这就是你要问的,那么是的。正确使用的准备/参数化查询将查询(命令)与数据分开。SQL注入攻击之所以有效,是因为数据有时会与命令盲目混合,从而允许某人通过数据输入来控制您的服务器。因为它们在您的案例中是分开的,所以这不是一个问题

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


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

您似乎在问,准备好的查询代码是否可以防止SQL注入攻击。如果这就是你要问的,那么是的。正确使用的准备/参数化查询将查询(命令)与数据分开。SQL注入攻击之所以有效,是因为数据有时会与命令盲目混合,从而允许某人通过数据输入来控制您的服务器。因为它们在您的案例中是分开的,所以这不是一个问题

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


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

如果你真的担心它,那么最简单的方法是,你用来连接到
MySQL数据库的
MySQL的
用户名/密码
应该只有
创建、读取、更新访问权限
。向用户授予权限时,只需确保仅选择所需的操作


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

如果您真的对此感到担心,那么最简单的方法是,您用于连接到
MySQL数据库的
MySQL
用户名/密码应该只有
创建、读取、,更新访问权限
。向用户授予权限时,只需确保仅选择所需的操作



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

删除通常与从
删除
一样不安全,并且在很多情况下可能需要删除
。虽然我同意一个好的做法是只允许所需的访问,但在很多情况下,所需的访问仍然可能导致危险。@Brad我同意,但如果数据库如此重要,则最好确保用户即使在DB级别也只能有限地访问它。我曾经在一个交易平台上工作,那里没有发生物理删除,相反,当用户删除一条记录时,只有一个标志被设置为删除。然后我们有另一个脚本定期清除这些记录。当然,这是使用不同的MySQL用户帐户。与其使用布尔标志,不如在
列中使用时间戳
deleted\u,在未删除时,该时间戳为
NULL
。例如,您可以轻松地删除X周前的内容+1@halfer-完全同意,好提示<代码>从
删除通常与从删除一样不安全,而且在很多情况下可能需要执行
删除
。虽然我同意一个好的做法是只允许所需的访问,但在很多情况下,所需的访问仍然可能导致危险。@Brad我同意,但如果数据库如此重要,则最好确保用户即使在DB级别也只能有限地访问它。我曾经在一个交易平台上工作,那里没有发生物理删除,相反,当用户删除一条记录时,只有一个标志被设置为删除。然后我们有另一个脚本定期清除这些记录。当然,这是使用不同的MySQL用户帐户。与其使用布尔标志,不如在列中使用时间戳
deleted\u,在未删除时,该时间戳为
NULL
。例如,您可以轻松地删除X周前的内容+1@halfer-完全同意,好提示!XSS实际上是不相关的。我严格地询问是否存在任何可能导致数据库受损的漏洞。既然没有用户,那么XSS有什么好攻击的呢?那里只有数据,可以称之为日志,只有一个密码可以按id删除它们,但该密码由md5检查,并硬编码到站点中,而不是数据库中。@WesleyMurch。他说,“这会修复任何潜在的漏洞吗?”我试图澄清这是一个非常广泛的问题。很多人认为,因为他们解决了一个问题,他们就神奇地远离了一切。@AronH。我不知道你的申请是做什么的。你的问题很广泛。我只是想说清楚,让你明白,可能还有其他问题你没有问过。我只是觉得有很多困惑和错误信息