如何在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()`。到底哪个是真正需要的?还是需要全部一起用? 请指教,谢谢!