向URL添加奇怪的符号会停止PHP行

时间:2016-08-24 20:14:18

标签: php url sql-injection

所以基本上它就像一个PHP游戏,你有车库,当你买车时他们会去那个车库,那里有一个列表,还有一个带有网址的按钮http://localhost/garage?active=58(58作为汽车ID。)这个按钮可以切换汽车并使其激活,您可以与其他人一起使用该汽车。但是,当你向网址添加一个奇怪的符号(例如:active = 58 @)时,它会停用所有汽车,因为php代码停留在:

此处,它无法识别车辆ID并停在此处:

$setinactive = mysql_query("UPDATE user_cars SET active='No' WHERE userid='$userid' and carid='$activenow'"); 

当没有符号时,普通进入此行并设置选择的id car:

$setactive   = mysql_query("UPDATE user_cars SET active='Yes' WHERE userid='$userid' and carid='$carid'");
}

我知道它编码不好,但有没有简单的解决方法?

1 个答案:

答案 0 :(得分:0)

使用(int)值修复:

  <?php
    $username = $_SESSION['username'];
    if (isset($_GET['active'])) {
         $carid  = security((int)$_GET['active']);
        $userid = get_userid($username);
        if (user_has_car($carid) == "Yes" AND get_user_activecar($urow['id']) != $row['id']) {
            $activenow   = get_user_activecar($urow['id']);
            $setinactive = mysql_query("UPDATE user_cars SET active='No' WHERE userid='$userid' and carid='$activenow'");
            $setactive   = mysql_query("UPDATE user_cars SET active='Yes' WHERE userid='$userid' and carid='$carid'");
        }
        echo '<meta http-equiv="refresh" content="0;url=garage">';
    }
    ?>