Avatar ·

如何在PHP中正确清理用户输入以防止XSS和SQL注入?

大家好!我是一名初学PHP开发者,正在编写我的第一个网站——一个简单的留言板。用户会留下姓名和消息,我将它们保存到MySQL中,然后显示在页面上。 目前我的代码大致如下: ```php // 保存到数据库 $name = $_POST['name']; $message = $_POST['message']; $sql = "INSERT INTO comments (name, message) VALUES ('$name', '$message')"; mysqli_query($conn, $sql); // 输出到页面 echo "

$name: $message

"; ``` 我注意到,如果在姓名字段中输入类似 `` 的内容,那么在显示消息时会出现弹窗。而如果输入 `' OR '1'='1`,查询似乎会出错。 我读到过需要对输入进行“清理”(sanitize),但不知道如何正确操作。网上有很多建议——有人说用 `htmlspecialchars()`,有人说用 `strip_tags()`,还有人说用 `mysqli_real_escape_string()`。到底哪个是真正需要的?还是需要全部一起用? 请指教,谢谢!