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 に答える