1

我今天早上遭到攻击,并在我的网站中注入了一些 JS。我正试图找到这个洞并修补它。我的印象是下面的 PDO 是安全的,有人可以确认或否认这一点吗?

        //Adding the lead to the local database
        $leads = array($firstName, $lastName, $company, $state, $country, $phone, $email, $industry, $uniqueId, $comments );

        $qry = $dbh->prepare(
            'INSERT INTO leads (FirstName, LastName, Company, State, Country, Phone, Email, Industry, Solution, Comments) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');

        if(!($qry->execute($leads))) {
            print_r($dbh->errorInfo());
        }
4

3 回答 3

1

PDO 不能保护您免受 JavaScript 注入。它可以保护您免受 SQL 注入。它将危险的 JS 毫无问题地放入您的数据库中,因为 PDO 不关心什么是危险的 JS,什么不是危险的 JS。那不是它的工作。您需要寻找其他方法来防止恶意 JS 显示给用户。

于 2012-07-12T18:14:34.180 回答
1

这对于 SQLI 来说显然是安全的,但对于 XSS 或受污染的输入来说却不是。这只是意味着攻击者可能无法污染您的 SQL 查询。但是输出部分可能会被污染。检查您的输出转义/清理方法!

于 2012-07-12T18:15:02.760 回答
1

从某种意义上说,这是安全的,因为有人无法注入 SQL 查询——但这不会阻止他们将 HTML 放入您的任何字段中。您可能希望考虑使用类似strip_tags的东西来防止 HTML 被存储,或者在将其显示给用户之前进行一些额外的清理。

于 2012-07-12T18:15:16.097 回答