我正在尝试创建一个用户必须通过密码和用户名字段登录的网站。如果用户名和密码正确,网站必须显示登录成功的消息。重要的是,密码字段容易受到 nosql 注入的攻击,例如“[$ne]=1”。目标是,如果我放置一个存在的用户并执行 nosql 注入,我应该收到消息“日志成功”。
问题是我必须连接到 mongoDB 数据库,但它告诉我连接不正确。我收到以下错误:
( ! ) 致命错误:未捕获错误:在第 10 行的 C:\wamp64\www\prac1\mongoxd.php 中找不到类“MongoDB\Client”
( ! ) 错误:在第 10 行的 C:\wamp64\www\prac1\mongoxd.php 中找不到类“MongoDB\Client”
我的代码有什么问题?如果您想知道,我已经在 PHP 中安装了 mongodb 扩展。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST["username"];
$password = $_POST["password"];
$mongoClient = new \MongoDB\Client("mongodb://localhost:27017");
$collection = $mongoClient->Users->users_info;
$cursor = $collection->find(['Name' => $_GET['Name'], 'Password' => $_GET['Password']]);
if ($cursor->count() > 0) {
echo "Log successful";
} else {
echo "Error";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login (Inseguro)</title>
</head>
<body>
<h2>Login</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="username">User name:</label>
<input type="text" name="username" required><br>
<label for="password">Password:</label>
<input type="text" name="password" required><br>
<input type="submit" value="Login">
</form>
</body>
</html>
你是如何安装MongoDB\Client的?
请注意,如果您是通过 Composer 安装的,如下所示:
composer require mongodb/mongodb
您应该包含这样的自动加载:
require_once 'vendor/autoload.php';
除此之外,“new”一词之前不需要额外的反斜杠,你可以像这样更改它:
$mongoClient = new MongoDB\Client("mongodb://localhost:27017");
另外,请确保您的 php.ini 文件启用了该扩展
希望有帮助!