2017-07-30 8 views
0

メッセージシステムを構築して動作を確認しています。すでに があります。私はログインしてボードに投稿することができますが、今は編集できるようにしたいと思います。バックエンドが準備完了です。POSTリクエストを受け取ります。

基本的には、現在ログインしているユーザーが、編集ボタンを表示または非表示にするJavascriptの投稿の投稿者であるかどうかを確認する必要があります。あなたが著者ではない場合にリクエストをブロックするようにユーザーがPHPからログインしているかどうかを知る方法を知っていますが、JSを使用して<template>から投稿がdinamically生成されるので、ボタンを非表示にすることはできません。

ログインスニペット:

$_SESSION["userid"] = $userid; 

編集チェックPHPスニペット(ちょっと擬似コード):

if ($_POST["action"] == "modifypost" && isset($_POST["postid"]) && isset($_POST["content"])) 
{ 
    $post = get_post($_POST["postid"]); 
    if ($post.userid != $_SESSION["userid"]) 
    { 
    die("you are not allowed"); 
    } 
    //MySQL queries 
} 

ポスト動的生成(省略):私はもともと考えていた

function add_post(post) { 
    var t = document.querySelector('#historypost'); 
    t.content.querySelector(".content").innerHTML = post.content; 

    var clone = document.importNode(t.content, true); 
    document.body.appendChild(clone); 
} 

HTMLからのユーザーIDを使用して変数を<script>およびに設定するユーザーはコンソールからその変数を手動で設定し、ボタンを表示することができます。

+0

ユーザーが自分のボタンを表示するとどうなるのですか?あなたはサーバー側のリクエストをどうにかしてチェックする必要があります。リクエスト全体が偽造されている場合や、それを作成するためにjsを使用した場合は重要ですか? IMOでは、ユーザーが他のユーザーjs(XSS)を変更し、ユーザー要求が意図されていることを検証するだけで済みます(CSRF)。彼らがコンソールを使ってあなたの目にだけあなたのウェブサイトを変えた場合。それらをさせてください。 – jh1711

+0

もしあなたが 'Post'でそれをチェックするので彼らが変更を保存できないならば、編集ボタンを表示するためにjavascriptを編集しようとしても問題ありません。 –

答えて

2

私はもともとはい、これは1つの正しいアプローチである<script><?php ?>

でHTMLからのユーザーIDを使用して変数を設定することを考えていました。基本的に、PHPを使用してJavaScriptが現在のユーザーに実際に属していることを通知します。

しかし、ユーザは、手動ボタン

真のコンソールからその変数を設定して表示することができるであろう。 は、ブラウザに送信した後にユーザーからの情報を保護する手段ではありません。これは、ユーザーがブラウザで何が実行されるかを制御しているためです。ボタンの可視性をセキュリティ機能と考えるのではなく、利便性を向上させるためのものと考えてください。

アプリケーションのセキュリティは、実際にサーバー上で実行されます。あるユーザーが別のユーザーの投稿を編集することを許可されておらず、ブラウザーからのものを信頼しないようにしてください。入力を確認します。

1

理想的には、ポストレンダリングロジックをサーバー側に配置することをお勧めします。

しかし、あなたのソリューションがjavascriptに焦点を当てているので、オプションは、ユーザーが投稿者であるかどうかをPHPに表示します。

例:

あなたのPHPファイル内の、HTMLにあなたがこれを行うことができます一部をレンダリング:

これを行う
<script>var isAuthor = '<?php echo ($post.userid == $_SESSION["userid"])'; ?></script> 

あなたが値「1」を持つことになりますisAuthorと呼ばれるJavaScriptのスクリプト変数を、持っていますユーザーは作者です。

-

しかし、私が言ったように、この問題を解決するための良い方法のようには見えません。これは、PHPがクライアントにあなたのロジックを公開せずに、より良い扱いをすることができるものです。

関連する問題