0

目前我正在尝试创建一个应用程序来传递数据以删除数据库中的一行。该行将通过 html 文件传递​​给 js 的 ID 来识别。

目前我有一个 Html 文件、Javascript 和 PHP 文件,它们一起工作以获取传入的数据。

我想要做的是保护它,因此没有人未经授权可以将数据发送到 javascript 文档以删除该行。

HTML --> JS --> PHP

JS:

    function deleteListing(id) {
    var answer = confirm("Are you sure you want to delete this listing?")
    if (answer) {
        $.post("assets/scripts/deleteListing.php", {
            id: id
        },

        function (result) {
            var response = jQuery.parseJSON(result);
            if (response.available === true) {
                location.reload();
            } else if (response.available === false) {
           //     alert("FAILURE DELETING USER");
            } else if (response.root === true) {
            //    alert("Cannot Delete Root User..");
            }
        });
    } else {
        return;
    }
}

PHP:

 <?
    require("../../../assets/config/config.php");
    $id_retrieve = $_POST['id'];
    $data = new stdClass();
    $sth= $dbh-> prepare("SELECT * FROM listings WHERE id='".$id_retrieve."'");
    $sth -> execute();
    $row = $sth -> fetch();
    $data->available = true;
    $dbh->exec("DELETE FROM listings WHERE id = '".$id_retrieve."'");
    echo json_encode($data);     
?>

在有人说该语句不是使用准备好的语句创建之前,我已经意识到这一点并将尽快修复它。除此之外,无论如何我可以保护 Javascript 文件免受未经授权的访问吗?还是我可以以某种方式限制它?

谢谢!

4

1 回答 1

1

有几个解决方案。

正如@Tobias 上面所说:使用会话来处理身份验证。那会保护你一些。

但是,仅此一项并不能阻止跨会话攻击。

看看这个页面: http: //phpsec.org/projects/guide/2.html

它建议在表单上放置一个令牌值并将其保存在会话中。这样,当表单提交时,您可以将传入的令牌与会话中的令牌进行比较,并验证表单确实来自您的站点。

<?php

session_start();

if (isset($_POST['message']))
{
if (isset($_SESSION['token']) && $_POST['token'] == $_SESSION['token'])
    {
        $message = htmlentities($_POST['message']);

        $fp = fopen('./messages.txt', 'a');
        fwrite($fp, "$message<br />");
        fclose($fp);
    }
}

$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;

?>

<form method="POST">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="text" name="message"><br />
<input type="submit">
</form>

<?php

readfile('./messages.txt');

?>
于 2013-08-14T10:07:20.000 回答