php - 如何使用 PHP URL 参数防止 PHP SQL 注入
问题描述
我的 index.php 中有以下代码:
<?php
if(isset($_POST["value"])) {
$conn = new mysqli("localhost", "user", "pw", "database");
$sql = "INSERT INTO table (`value`) VALUES ('".mysql_real_escape_string($_POST["value"])."')";
if ($conn->query($sql) === TRUE) {
echo "Value inserted.";
}
$conn->close();
}
?>
<body>
<form action="index.php" method="post">
<input placeholder="example" class="inputfield" type="text" name="value" />
<button class="button" type="submit"> Submit </button>
</form>
</body>
我怎样才能防止有人通过发送这样的发布请求将他喜欢的任何内容插入数据库:
localhost/index.php?value=whatever
帮助表示赞赏。
编辑:问题已解决:如果服务器正在使用“发布”请求,则用户无法输入 url 参数。
解决方案
您在代码中接受 POST 请求,但想要阻止 GET。他无法使用带有此代码的 get 插入它。你应该查一下关于 SQL 注入和表单提交的知识
推荐阅读
- javascript - 需要点击元素两次
- c# - 在 VSCode 中更改活动的 C# .NET 项目配置和平台
- c++ - 我的程序有一个保存配置文件的 GUI,如何双击此配置文件以直接使用配置数据加载 GUI?
- dom - yii2 Multiple model and select2 non-unique id问题
- python - 如何在霍夫线不交叉/覆盖的图像中找到间隙?
- python - Ansible shell 模块在目标服务器上是否需要 python?
- flutter - Flutter - 私下发布
- php - Codeginiter 分页为每页添加额外的结果
- javascript - 当引用与计算中相同的键时,Vue 计算会抛出“渲染中的错误:“内部错误:递归过多””
- ansible - 在远程主机上启动数据库服务