Jqueryを利用したAjaxのクロスサイトフォージェリ対策について

このQ&Aのポイント
  • Jqueryを利用したAjaxのクロスサイトフォージェリ(CSRF)対策について調べています。
  • PHPの場合は、リファラーチェックやトークン作成などの対策がありますが、Jqueryではどのように書けば良いのか分かりません。
  • 具体的なJqueryのクロスサイトフォージェリ対策方法を教えてください。
回答を見る
  • ベストアンサー

Ajaxの質問です。

Jquery php mysqlを利用したAjaxの質問です。 http://webcake.no003.info/webdesign/jquery-ajax-php-json-sample.html 上記サイトを参考にしています。 データをpostで渡していると思うのですが、 上記サイトですと、 クロスサイトフォージェリ対策はどの様に書いたらよいでしょうか? Jqueryのクロスサイトフォージェリ対策のよい情報がなかなか見つかりません。 PHPのみですと、postで渡すリファラー、トークン照合などあると思うのですが、 Jqueryでリファラーチェック、トークン作成、などはどう書くのでしょうか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • byDesign
  • ベストアンサー率75% (45/60)
回答No.1

http://egapool.hatenablog.com/entry/2013/12/11/230457 これでいいのでは? >PHPのみですと、postで渡すリファラー、トークン照合などあると思うのですが、 Jqueryを使おうが何も変わらないと思うのですが? 何が違うのでしょうか。

shousen412
質問者

お礼

ありがとうございます、すばらしい情報ありがとうございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

クロスサイトリクエストフォージェリの事だと思いますが、これはサーバーサイドの話なので、クライアントサイドで動くJQueryとは無関係です。 対策は、サーバーサイドでしてください。

shousen412
質問者

お礼

ご回答ありがとうございます、参考にいたします。

関連するQ&A

  • Jquery,JSON,Ajax,PHP連携

    プログラミング初心者です。 教えてください。 最近Webのトレンドとして使われている言語で Jquery,JSON,Ajax,PHPなどがありますが、それぞれどの部分の処理をしているものなのか、 また、どのように呼び出して連携させるのか、実際のサンプルなど使った図解でわかりやすいものがあったら教えていただけますでしょうか。 よろしくお願いします。

  • Ajaxで、JSONの添え字を表示する

    以下のようなソースで、jQueryで、ajax_abc.htmlのid:Abcのボタンを押して、json_abc.phpから、JSON形式で、添え字がMySQLのabcテーブルのid列、値が同じMySQLのabcテーブルのalphabet列の値を全行分受け取り、<p>1:A</p><p>2:B</p><p>3:C</p>というような形でhtmlを生成したいのですが、値を表示することはできるのですが、添え字を表示する方法がわかりません。 どういう風にやれば、表示できるか教えてください。 [ajax_abc.html] <script type="text/javascript"> $(function(){ $("#Abc").click(function(){ $.post("json_abc.php", { }, function(json){ $('#Display').html("<p>"+json[1]+"</p>" + "<p>"+json[2]+"</p>" + "<p>"+json[3]+"</p>") }); }); }); </script> [json_abc.php] <?php $pdo = new PDO('mysql:dbname=test; host=localhost; charset=utf8', 'root'); $st = $pdo->query("SELECT * FROM abc"); $abc = array(); while ($row = $st->fetch()) { $abc += array ( $row['id'] => $row['alphabet'] ); } header('Content-Type: application/json; charset=utf-8'); echo json_encode($abc); [MySQLのabcテーブル] INT: VARCHAR 1: A 2: B 3: C

    • ベストアンサー
    • AJAX
  • jquery,ajaxによるphp通信でnull

    初めまして。 現在jqueryを勉強中の学生です。 いろいろなサイトを参考にしつつ、試しににjquery・ajaxを使ったphpとの通信を試みているのですが、文字列のやりとりがうまくいきません。 数字ではうまくいくのですが、文字になるとalertの部分でnullと返されてしまいます。 アドバイス等頂ければと思います。 よろしくお願いいたします。 以下部分的ではありますがコードを示します。 (jqueryはjquery-1.11.1.min.jsを使用) [js] $.ajax({ type: "POST", url: "step1.php", data: send_data, success: function(receive_data) { var parseAr = JSON.parse(receive_data); alert(parseAr[0]['name']); }, error: function(XMLHttpRequest, textStatus, errorThrown) {alert('Error: ' + errorThrown); } }); return false; [php側] <?php if(isset($_POST['name'])) { $result = array(); $result[] = array('name'=>'織田', 'age'=>'33'); $result[] = array('name'=>'織田', 'age'=>'33'); echo json_encode($result); } else { echo json_encode('The parameter of "name" is not found.'); } exit; ?>

  • jquery PHP 値 ajax

    失礼します。現在jqueryで作成した2次元配列をPHP側に渡したいのですが上手くいきません。 jquery側のコンソールで確認した際にはsuccessの処理が行われ配列の中身がjson形式で表示されるのですが、その内容をPHP側で確認しようとするとNULLが返ってきてしまいます。 何卒ご教授よろしくお願いいたします。 html側 $(function(){ // 送るデータ形式はJSONでなければ、PHP側でエラーが出る.のでJSON.stringify()でJSON形式に変換 send_data= JSON.stringify(data); // 送信処理 $.ajax({ url: "ajax.php", // 送信先のPHP type: "POST", // POSTで送る contentType: "Content-Type: application/json; charset=UTF-8", //必須ではなさそうだが、サーバ側との整合のために明示しておいた方がよい。 // dataType: 'json', //受信形式 必須ではなさそうだがサーバ側との整合のために明示しておいた方がよい。 data:send_data //JSON形式の送信データ }).success(function(data, status, xhr) { // 通信成功時の処理 console.log("success"); console.log("data ="+data); console.log("status ="+status); console.log("xhr ="+xhr); }).error(function(xhr, status, error) { // 通信失敗時の処理 console.log("error"); }).complete(function(xhr, status) { // 通信完了時の処理 console.log("fin"); }); }) }) PHP側 二通り試してみました。 <?php //php://inputはPOSTの生データを取得できる $json = file_get_contents("php://input"); //JSON形式データをPHPの配列型に変換 $data = json_decode($json); var_dump($data) ; //POSTできたデータを格納 $hoge = $_POST['data']; var_dump($hoge);

    • ベストアンサー
    • AJAX
  • AJAX通信のエラー処理について

    jQueryを利用したAJAX通信で、「●●.js」が不定期エラーになるのですが、エラーの意味も原因も分かりません。 Uncaught TypeError: Cannot read property 'age' of null ■質問1 $.postではエラーを捕捉出来ないと書いてあったので、$.ajaxに書き換えたいのですが、書き方がよく分かりません。どう書き直せば良いでしょうか? ■コード ▼「●●.js」 $.post('test.php',{action: "getmemberdata"},function(data){  jsondata = $.parseJSON(data);  if(jsondata == null){   return true;  }  処理 });  if(Number(jsondata.age)>10){←この箇所で不定期で上記エラーが発生! ▼「test.php」 // Echo Data For Ajax if($_POST['action']=='getmemberdata'){  処理  echo json_encode(データ); ■質問2 AJAX通信の確認をサーバ側で行うことは出来ないのでしょうか? 「test.php」で、echo json_encode(データ);する前に、  echo データ;  exit; としてみたのですが、処理が途中で止まらず、変数の中身を確認することが出来ません。 AJAX通信の確認は、$.ajaxのエラー処理でしか確認することは出来ないのでしょうか? ■質問3 (Number(jsondata.age)>10)がエラーになるので、何とか回避したいのですが、 回避する方法はあるでしょうか? if(jsondata.age==null){ とか書いてみたのですが、うまくいきませんでした

    • ベストアンサー
    • AJAX
  • Ajax・jQueryでGETとPOSTする方法

    画像をクリックしたときにjQuery,Ajaxを利用してGET/POSTをしたいです。 POSTとGETは良く使うので今回両方の流れを知りたいと思います。 PHPではPOST、GETは使うことができます。javascript,jQueryはちょっと触ったことのある程度です。 フォームに値を入力してjQueryとAjaxでPOSTでデータを送るのは下記ホームページを参考にしてみたら成功しました。 http://webcake.no003.info/webdesign/jquery-ajax-php-post-sample.html 今回は下記のような複数のパラメータを送信したいと思います。 画像Aをクリックした時にkeyword=aaaa,cate=1 画像Bをクリックした時にkeyword=bbbb,cate=2 画像Cをクリックした時にkeyword=cccc,cate=3 今までPHPでGETを使っていた時のHTML部分です↓ <a href="index.php?keyword=aaaa&cate=1"><img src="images/a.jpg"></a> <a href="index.php?keyword=bbbb&cate=2"><img src="images/b.jpg"></a> <a href="index.php?keyword=cccc&cate=3"><img src="images/c.jpg"></a> 「send.phpファイル」 <?php //POSTでデータが送られた場合 echo $_POST['keyword'].'<br>'; echo $_POST['cate'].'<br>'; //GETでデータが送られた場合 echo $_GET['keyword'].'<br>'; echo $_GET['cate'].'<br>'; ?> ==GET================================================================ (HTML部分) <a href="index.php?keyword=aaaa&cate=1"><img src="images/a.jpg"></a> の記載方法だと、クリックしたときにアドレスバーにアドレスが入力されるのでページが切り替わってしまいAjaxにならないので違う形にする必要があると思いますがどのようにkeyword,cateのパラメータを持たせればよいのでしょうか? または、この形のままで良く、リンクした時にページが飛ばないような処理方法があるのでしょうか?(またはAjaxではあまりGETは使わないのでしょうか?) 上記に記載した、POSTの参考例のソースを記載します。 GETの場合にどのように変えたらよいのでしょうか。 $(document).ready(function() { var data = {request : $('#request').val()};//GETで複数値対応に書き換えが必要。 $.ajax({ type: "GET", url: "send.php", data: data, success: function(data, dataType) { $( '#test' ) . html( data ); },error: function(XMLHttpRequest, textStatus, errorThrown) { this; alert('Error : ' + errorThrown); } }); }); ==POST================================================================ (HTML部分) formを使う形になると思いますが、どのような書き方が良いのか教えて下さい。 画像を使うと下記のようになるとは思いますが、A,B,Cそれぞれにkeyword,cateの情報をどのように持たせておいたらよいのかがわかりません。 <form> <button type="submit" name="" value="*****"><img src="sample.gif"></button> </form> (jQuery部分) $(document).ready(function() { var data = {request : $('#request').val()};//POSTで複数値対応に書き換えが必要。 $.ajax({ type: "POST", url: "send.php", data: data, success: function(data, dataType) { $( '#test' ) . html( data ); },error: function(XMLHttpRequest, textStatus, errorThrown) { this; alert('Error : ' + errorThrown); } }); }); 以上、よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • AjaxでMySQLへのデータの追加と表示をしたい

    htmlで、jQueryでMySQLのテーブルmessage_tableのデータid(int auto_increment primary)、time(datetime)、message(varchar(1000))を<tr><td>id</td><td>time</td><td>message</td>というような形で、<table id="show_table"><table>の中で全行表示し、inputのtextから新たにmessageを送信したら、それがリロードなしに同じテーブルに追加されて、表示されるというAjaxを使ったプログラムをhtmlとPHPファイルで作成したいのですが、どのようなソースを書けばよろしいでしょうか。 PHP側はMySQLのデータの取得と、htmlから送られてきたデータの追加を行い、JSON形式でhtmlに投げるという風にしたいと考えています。 データの表示と送信をするhtmlと、データを受け取り、MySQLのテーブルに追加し、htmlに返すPHPのソースは、以下のような形を考えています。 [message.html] <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>message.php</title> </head> <body> <p> <input type="text" id="messgage"> <input type="button" id="add" value="add"> </p> <table id="show_table"></table> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $('#add').click(function(){ $.post('post.php',{ }, function(引数){ //処理 }) }); }); </script> </body> </html> [post.php] <?php try{ $pdo = new PDO('mysql:dbname=test; host=localhost; charset=utf8', 'root'); }catch(PDOException $e){ die($e->getMessage()); } $st = $pdo->query("SELECT * FROM message_table"); // データの取得 header('Content-Type: application/json; charset=utf-8'); echo json_encode($result);

    • ベストアンサー
    • AJAX
  • ajaxのget/post処理速度

    ユーザインタラクティブなWebプログラムをPHP5.2で作ってWindowsXP/Apahe2.0のlocalhostで動かしていますが、サーバ側にあまり負担のかからない処理の場合、Ajax(JQuery,JQuery.formプラグイン)のGET/POSTは通常のGET/POSTに比べてResが帰ってくるのが明らかに遅いのですが、これは一般的なことでしょうか? Ajaxが遅い原因としてどんなことが考えらるでしょうか? Ajaxの処理速度を上げる方法があれば教えて下さい。 よろしくお願いします。

  • jQuery Ajaxでクロスドメイン通信

    jQuery Ajaxでクロスドメイン通信をやりたいのです以下の質問について教えて下さい。 AjaxからPHP(別ドメイン)にデータをPOSTで投げたいです。 PHPファイルがあるディレクトリはBasic認証してあります。 質問1. AjaxのdataTypeオプションは、PHPからjQueryが受け取るレスポンスのデータタイプのことですか? それともjQueryからPHPからにデータを投げる場合にもこのタイプ指定で何か変わるのでしょうか? 質問2. クロスドメイン通信をdataTypeがjsonpじゃないとクロスドメイン通信はできないのでしょうか? 質問3. dataTypeがjsonpのとき、jQueryから投げるURLの末尾に?data=hogehogeのようにパラメータが付きます。 typeオプションをPOSTにしているのにGETのようにパラメータが付くのはなぜでしょうか? これのせいで、数千文字のパラメータをPOSTできずGETの文字数制限でエラーになってしまいます。 どれは一つでもおわかりでしたらお教え下さい。 よろしくお願い致します。

  • 下までスクロールしたらDBの情報をロードする方法

    知っている方いらっしゃましたら ご教授お願いいたします。 ■環境 PHP + mySQL + jQuery + Ajax ■実施したいこと facebookのように、一番下までスクロールしたら DBから情報を持ってきて、表示を行いたい。 ■これまでの流れ 静的なページのロードまでは以下のHPを参考に学習しましたが 動的なところになると、サンプルが無く手詰まっています。 ⇒静的ページサンプル http://bowz.info/4837 http://www.webzaru.net/jquery/1353/ お手数ですが、ご回答のほどお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう