首页 > 解决方案 > 如何使用 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 参数。

标签: phphtmlsqldatabasesecurity

解决方案


您在代码中接受 POST 请求,但想要阻止 GET。他无法使用带有此代码的 get 插入它。你应该查一下关于 SQL 注入和表单提交的知识


推荐阅读