【发布时间】:2019-10-19 13:10:00
【问题描述】:
我的 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 注入和表单提交。
-
谢谢@equi 查找并理解 POST 和 GET 之间的区别解决了我的问题。
标签: php html sql database security