セキュリティ上の問題について不思議です。今、私は私のデータベースから動画を削除するには、次の機能を使用しています:背面でjQuery AJAXの追加/編集/削除アクションはハッキングできますか?
function deleteVideo(video_id){
function mycallbackform(v,m,f){
if(v=="yes"){
$.ajax({
type: "POST",
url: "delete.php?action=video",
data: "video_id=" + video_id,
success: function(html){
if(html == "1"){
//$("#result").html(html);
$("#row_"+video_id).fadeOut("slow");
$("#result").show();
$("#result").html("<div class='notification success png_bg'> <div><?php echo $LANG_video_succesfull_delete; ?> </div></div>");
setTimeout(function(){ $('#result').fadeOut('slow'); }, 5000);
}else{
$("#result").show();
$("#result").html(html);
}
}
});
}
}
$.prompt('Are you sure?',{ buttons: { Ok: 'yes', Cancel: 'no'}, callback: mycallbackform});
}
は、次のコードが実行されて終了します。
/*** DELETE data ***/
/*** prepare the SQL statement ***/
$stmt = $dbh->prepare("DELETE FROM videos WHERE username=:username AND videos_id=:video_id");
$stmt->bindParam(':username', $currUser);
$stmt->bindParam(':video_id', $video_id);
/*** execute the prepared statement ***/
$stmt->execute();
ユーザ名が、この場合、セッションに格納されます。
このコードでユーザーAがユーザーBのデータを削除する方法はありますか?
私は、現在のユーザーがデータベースにビデオを追加したのと同じユーザーであるかどうかを確認するクエリを追加することを検討していました。もしそうでなければ、彼はデータを削除することはできません。しかし、これは必要か、このコードは十分安全ですか?
ありがとうございます。
このコードは安全ではありません。**現在のユーザー**を説明してください。 – ajreal
@ajreal: $ currUser = $ _SESSION ['username']; ユーザー名はセッションに格納されます。 – moonwalker