Php 停止sql注入的最佳方法?

Php 停止sql注入的最佳方法?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我的问题是,对于那些试图进行sql注入的人来说,如何成为最烦人的人,我可能没有真正正确地表达我在写blow时试图做什么和寻找什么 提前感谢大家的帮助。我正在努力学习MySQL。我打算建立一个数据库来练习,但我一直在这里阅读和寻找示例,不断看到人们说他们将在哪里获得SQL注入 我已经读了一段时间了,读得越多,我就越糊涂。我已经决定与PDO合作来防止这种情况。即使从我所读到的内容来看,是准备好的声明让它变得安全,我仍然必须将它列入白名单 我的问题是,如果有人能给像我这样的初学者一个设置,我们可以使用

我的问题是,对于那些试图进行sql注入的人来说,如何成为最烦人的人,我可能没有真正正确地表达我在写blow时试图做什么和寻找什么

提前感谢大家的帮助。我正在努力学习MySQL。我打算建立一个数据库来练习,但我一直在这里阅读和寻找示例,不断看到人们说他们将在哪里获得SQL注入

我已经读了一段时间了,读得越多,我就越糊涂。我已经决定与PDO合作来防止这种情况。即使从我所读到的内容来看,是准备好的声明让它变得安全,我仍然必须将它列入白名单

我的问题是,如果有人能给像我这样的初学者一个设置,我们可以使用它来非常有效地阻止这些攻击。据我所知,几乎不可能阻止他们,我看到有人说dns是唯一确定的方法。我想学会用正确的方法来做这件事,即使我现在可能不需要太多的安全措施

如果我没有错的话,即使你使用PDO,他们仍然可以使用盲注。如果是这样的话,我想增加2-5秒的延迟或者类似的东西。我不知道这对用户端来说是否太多,我只是在学习,没有真实的体验

而且我将要做的事情的类型,现在可能是非常基本的。。。妈妈和爸爸类型的东西。如果我用用户名和密码为某人建立一个网站,我不想让他们受到这些攻击,我只是不喜欢。所以,如果它有点慢,但更安全,我希望至少能够给他们这个选择。我的想法是真的让他们讨厌,希望不值得

从我读到的内容来看,表名或用户名的长度可能会让他们更难,比如说使用短语而不是6-8个字母

此外,我认为最少的特权也会有所帮助,但似乎每件事都有解决的办法,如果你是新手,不知道自己到底在做什么,你就会变得脆弱

我从某个地方复制了一些代码,我打算根据自己的需要进行调整,但我还没有尝试将我正在寻找的东西整合起来,仍然处于阅读和学习阶段

<?php


require_once "dBug!.php";

$dsn = "mysql:host=";
$user_name = "";
$pass_word = "";

$connect = new PDO($dsn, $user_name, $pass_word);

$sql = "SELECT * FROM books WHERE id <= 10";   

$result = $connect->prepare($sql);

$status = $result->execute();


if (($status) && ($result->rowCount() > 0))
{
$results = array();


while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
    $results[] = $row;
}


new dBug($results);

}

$connect = null;


?>


阻止SQL注入攻击的最佳方法是使用存储过程。为此,需要编写存储过程,以便用户输入不是作为SQL代码提交的,而是服务器上已经存在的SQL语句中变量的值。

请将大量文本拆分为合理的段落。这很难理解。我对PHP或PDO不太了解,但是SQL注入对于这里的示例来说不是问题。SQL注入通常发生在将不知道的内容(变量)解析为SQL时。在您的示例中,您总是知道正在运行的查询
SELECT*FROM books WHERE id您可能想查看我的网络研讨会(免费,但需要注册):。也是我同事的另一次网络研讨会:.@Bill Karwin感谢您的编辑,但标记为重复。我会查看它,谢谢您我在这里读了很多您的答案。@John Conde,jprofitt,meagar,Mike W,Shivan Raptor我在这里没有看到任何问题,我在一个答案中提出了什么问题。延时,最小权限,超长密码,pdo,白名单。大多数问题的答案到处都是。你们做重复标记有什么好处,你们表现得好像有很多关于这个主题的信息。