在PHP中防止SQL注入

时间:2017-08-05 23:15:53

标签: php

检查用户是否在表单字段中输入恶意代码的最佳方法是什么?我已经查看了其他问题,但这些只是检查输入的内容以及是否是他们想要的内容(手机号码在手机字段中)。我正在寻找SQL注入的保护。

2 个答案:

答案 0 :(得分:3)

Prepared statements用于防止SQL注入,当我们讨论SQL注入时它们就足够了。但是,还有其他一些你应该阻止的攻击。 XSSCSRF和其他人。

SQL注入:

准备好的陈述基本上是这样的:

  1. 准备:创建SQL语句模板并将其发送到数据库。某些值未指定,称为参数(标记为"?")。示例:INSERT INTO MyGuests VALUES(?,?,?)
  2. 数据库在SQL语句模板上解析,编译和执行查询优化,并存储结果而不执行它
  3. 执行:稍后,应用程序将值绑定到参数,数据库执行该语句。应用程序可以根据需要使用不同的值执行语句
  4. 样品:

    // Prepare the statement.
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
    
    // Bind parameters.
    $stmt->bind_param("sss", $firstname, $lastname, $email);
    
    // Set parameters.
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    
    // Execute the statement.
    $stmt->execute();
    
    // Close the statement.
    $stmt->close();
    
    // Close the connection.
    $conn->close();
    

    来源:w3schools.com

答案 1 :(得分:0)

如果您打算存储或输出用户输入字符串,请使用htmlspecialcharshtmlentities将html特殊字符转义为html实体。这有助于避免html注入。

Spectarion的答案是SQL注入的一个很好的解决方案。