gpt4 book ai didi

php - 停止 sql 注入(inject)的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 23:13:42 27 4
gpt4 key购买 nike

<分区>

我的问题是如何让那些试图进行 sql 注入(inject)的人感到最烦人,我可能没有真正正确地表达我正在尝试做的事情,并在我写的 blow 中寻找。

提前感谢大家的帮助。我正在尝试学习 MySQL。我打算建立一个数据库来练习,但我在这里阅读和寻找示例,并且不断看到人们说他们要去哪里进行 SQL 注入(inject)。

我已经读了一段时间了,读得越多,我就越困惑。我决定使用 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;


?>

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com