防止 HTML 插入到 MySQL Table

Prevent HTML insert into MySQL Table

我通过 PHP 在我的网站上编写了一个小评论功能。我注意到存在巨大的安全风险。用户可以写一些 HTML/PHP/MySQL 并将其插入 table。有没有简单的方法来防止这种情况?

这是我的 PHP 插入脚本:

<?php
    if ( $_SERVER["REQUEST_METHOD"] == 'POST' ) {
    $kommentar_neu = $_POST["kommentar"];

    if (!empty($kommentar_neu)) { 
        $order = "INSERT INTO $db_kommentare
        (kommentar, teilnehmer, kommentardatum, projektnummer)
        VALUES
        ('$kommentar_neu', '$teilnehmer_name', '$zeiteingabe', 
         '$projektnummer_hw_order')";
    }
    }
?>

您描述的问题称为"SQL Injection"。处理它的方法有很多,因此对于这种格式,答案会太长,但谷歌搜索 "SQL Injection" 应该可以帮助您入门。

在任何情况下,永远不会(好吧,除了一个值得注意的例外...)通过字符串攻击创建 SQL 语句。创建带参数的预准备语句并将它们传入。

一个好的起点可能是:

http://php.net/manual/en/security.database.sql-injection.php

这涵盖了将 SQL 注入 SQL,但涉及的一些原则是适用的。

您可以使用多种方法来防止此类事情发生。 $your_variable;

$filter_variable = htmlspecialchars($your_variable);
$filter_variable = mysqli_real_escape_string($conn,$your_variable);

使用准备语句创建您的 sql 查询。

希望对您有所帮助。

编码愉快。