这个PHP代码(包括MySQL查询)是否安全?

时间:2016-06-01 15:48:19

标签: php mysql

我必须从URL(GET)接收变量并使用它。它只是一个数字(从0到400)并且使用该值进行查询。

为了确保没有人做错事(SQL注入或其他什么,我不是安全专家),我使用:mysqli_real_escape_string()并使用IF:if($ id> 0和$ id< 400)

你觉得这够吗?整个代码如下。谢谢!

var sandbox;
var spy;

// beforeEach
sandbox = sinon.sandbox.create();
// similar to Jasmine spy without callThrough
spy = sandbox.stub(myHttpService, 'getServiceData');
...

// it
spy.withArgs('A').returns({value:"U"});
spy.withArgs('B').returns({value:"X"});
...

// afterEach
sandbox.restore(); // the thing that Jasmine does automatically for its spies

1 个答案:

答案 0 :(得分:0)

mysqli_real_escape_string很好但准备好的语句更好,因为你有时想在你的数据库中插入特殊字符:

/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    $stmt->close();
}

这当然是sql注入保存