• ベストアンサー

Javascriptとデータベースの連携

Javascriptを使ってMysqlなどのデータベースとやり取りをしたいのですが、 Javascriptはソースコードがだれでも見られるためどのように通信内容を隠蔽すべきか悩んでいます。 実際のデータの操作はGETやPOSTでPHPを経由し、JSON等で内容を返すような形を予定しており、 削除・書き込みを行わない読み込み専用のものをつくるつもりです。 レコードのIDをもとに情報を抽出したいのですが、JavascriptソースのIDを書き換えられて別の情報を取得される状況は避けたいと思っています。 取得されうる内容に個人情報等を含むものはなく、高度なセキュリティが要求されるような内容ではありませんが、イタズラを防止しようと考えています。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 >単にどのURLにどんなPOSTやGETの内容を送りつけているかを知られたくなかったのです。 これについてはJavaScriptの利用の有無は関係ないと思います。 JavaScriptを利用して送信するかしないかですので、わかる人が見ればJavaScriptを利用していなくたって送信内容はわかります。 また、Web開発ツール(Firebugみたいなもの)を利用していれば、サーバとの通信内容(ヘッダ情報やpost内容)が全てわかります。 ようするにJavaScriptがどうのこうのではなく、サーバ上でしっかりと対策する必要があります。 (JavaScriptのソースが書き換えられなくたってIDを変えることは可能です)

django13
質問者

お礼

ありがとうございます。 クライアントサイドで工夫してもあまり意味が無いのですね。 GETやPOST内容を知られている前提でサーバーサイドのプログラムを改良できないか調べてみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.3

>イタズラを防止しようと考えています イタズラがあっても大丈夫なようにする 個人情報を含まないのなら特に力を掛ける必要もないかと まあそんなにできることもないけど

django13
質問者

お礼

たしかに内容が流出して被害が出るものではありませんが、JSで作られたゲームをクリアしたら結果を見られるといった類のものなので、知識があればクリアしなくても結果にたどり着けるようでは不公平だなと思って現在対策を検討中です。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

暗号化や、セキュリティーについて誤解があるようです。 ここに投稿する前に、WebPage製作前に、まず、パソコンでのセキュリティー&暗号化を勉強した上で、Webテクノロジーの暗号化を勉強してください。特にPKIというキーワードで検索して勉強しましょう。そうすると、 >Javascriptはソースコードがだれでも見られるためどのように通信内容を隠蔽 なんて書いたのが、恥ずかしいと思うはずですよ

django13
質問者

補足

通信内容という言い方がまずかったかもしれません。 SSLなどのように内容そのものを隠蔽したいのではなく、 単にどのURLにどんなPOSTやGETの内容を送りつけているかを知られたくなかったのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPとJavaScriptの連携について

    PHPとJavaScriptの連携をしたいと思いましたが、下記が分からなかったので、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 1. 下記の親ウィンドウで子ウィンドウを開く後、テキストエリアに文字を入力し、値をセットボタンを押すと、「親ウィンドウ」の「値が渡せます」には値が渡せますが、「値が渡せません」には値が渡せません。 違いはnameをtext00からdata[text02]に変更したのみとなります。 2. 下記のソースでは、子ウィンドウのテキストエリアに入力した内容をそのまま渡してますが、子ウィンドウのテキストエリアの情報を基に、PHPでデータベースを検索し、ヒットしたものを親ウィンドウに渡したいと思います。 下記のソースを例にすると、「値をセット」ボタンを押した後、テキストエリアの値を子ウィンドウのSELECT文のidに設定し、取得した$tmpの内容を親ウィンドウに渡したいと思います。 なお、記載のSQL文はシンプルですが、実際には複数のフィールドの値を取り、idの値も複数あります(下記のデータベースを例にすると、idに1と2を渡した際、親ウィンドウのテキストエリアに「あいうえお かきくけこ」と表示させ、idの値を隠し項目でもっていたいと思います)。 3. 上記2で親ウィンドウにデータベースの値を渡した後、子ウィンドウを開くクリック時、子ウィンドウのテキストエリアに渡したidの値を表示したいと思います。 【index.html(親ウィンドウ)】 <script type="text/javascript"> <!-- function window_open() { window.open('sub.php',null,'width=640, height=480, scrollbars=yes') }; //--> </script> </head> <body> <form action="index.php" method="post" name="form00" id="form00"> <a onclick="window_open()" href="javascript:void(0)">子ウィンドウを開く</a> <br /> 値が渡せます <input type="text" name="text00" value="" readonly="readonly" /> <br /> 値が渡せません <input type="text" name="data[text02]" value="" readonly="readonly" /> </form> </body> 【sub.php(子ウィンドウ)】 <script type="text/javascript"> <!-- function Set() { window.opener.document.form00.text00.value=document.form01.text01.value; window.opener.document.form00.data[text02].value=document.form01.text01.value; window.close(); } //--> </script> </head> <body> <form action="index.php" method="post" name="form01" id="form01"> <input type="text" name="text01" /> <input type="button" onclick="Set()" value="値をセット" /> </form> <?php /* $link=mysql_connect('localhost', 'データベースユーザ名', 'データベースパスワード名'); mysql_select_db('データベース名', $link); $query=mysql_query("SELECT nm_master FROM master_db WHERE id=2", $link); $tmp=""; while ($row=mysql_fetch_array($query)) { $tmp .= $row["nm_master"]; } echo $tmp; mysql_close($link); */ ?> </body> 【データベース:master_db】 フィールド名:(`id`, `nm_master`) (1, 'あいうえお'), (2, 'かきくけこ'); 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • javascriptでJSONを取得する方法

    C#、asp.netでJson形式の文字列をjavascriptに渡してgooglemapで使用したいです。 json.netやらDynamicJson やらがインストールされていないと使用できないのでしょうか。 aspx.cs dynamic dataSet = 取得したlist; System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); serializer.Serialize(dataSet); javascript function json() { $.ajax({ url: ××.aspx.cs, type: "get", dataType: 'json', error: function () { alert("情報の読み込みに失敗しました"); }, success: function (data) {        alert("data"); } }); } こちらでは、情報の読み込みに失敗しましたとアラートが出てしまいます。 http://qiita.com/rbtnn/items/b2ec6c7dee792e66ac75 http://aspnet.keicode.com/basic/jquery-ajax-basics.php この2つのサイトを参考にしています。 dataSetの中身に目的のリストが取得できているのは確認済みです。 何がいけないのでしょうか。 どうやったらJSONをjavascriptで読み込めるのでしょうか。 どなたかよろしくお願いします。

  • データベース構造について

    一ページに一つコメント機能をつけたいのですが、調べていると、 1.データベースは中身のデータを全て読み込んでから、データを抽出するので、レコードが多くなればなるほど読み込みが遅くなるのではないのでしょうか? 2.例えば、mysqlでページが100万ページでその一つ一つにコメント機能(コメントの最大1000件ほど)をつける場合、テーブルは別々(ぺーじ毎に)に作った方がよいのでしょうか?それとも、テーブル一つに全て書き込ませた方がよいのでしょうか?

    • ベストアンサー
    • MySQL
  • javascript データベースから抽出

    こんにちは。 javascriptとデータベースを勉強していました。 質問(1) htmlでテーブルを4×4作ったとします。 □□□□ □□□□ 左上から id=1 name=1、Id=2 name=2、~ id=8 name=8 これにjavascriptでデータベース(Access)のテーブル名"table01"の フィールド名"登録日付"昇順にフィールド名"画像"を 左上から並べるようにします。 このとき、javascriptにはどのようなプログラムを 書けばいいですか? idとnameを1つずつ番号を書いて抽出する方法は できそうなのですが、少ないfunctionで一連の 作業することはできますか?どのように書きますか? 質問(2) 質問(1)のテーブル8つを □□□□ □□□□ →次のページ 次のページを押すと次の8つが日付順に並ぶようにします。 htmlを次のページ分作って、idとnameを書いていけばできるとは 思うのですが、登録数が増えて、数十ページにもなると、其の都度、 htmlを書かなければなりません。 おそらく、 html側 <a href="" name="next" id="next">次のページ</a> javascript側 next=document.getElementById("next"); next.onclick=function(){~A~} function ~A~(){ で、functionのプログラムを書けばいいと思うのですが、 どのように書けばいいですか? よろしくお願いします。 以上

  • IEでのエラーについて(javascript)

    http://w-x-w.com/2011/07/09/156 上記のサイトのサンプルコードを参考に、HTML5とJavascript、phpによるMySqlへの接続を行っています。ChromeやFirefoxでは正常に動作をするのですが、IEだと動作がうまくいきません。 エラーを辿ったところ、 -----略------------ function search_json(){ var get_json = eval("("+search_msg_data+")"); if(get_json.results == null){ $("#search_data").html("該当するデータは見つかりませんでした。"); } ---------------------- この中のevalのところでエラーが出ているようです。IEでそのエラーが出ているという情報は、サイトを回っていて分かったのですが、今回の場合の対応策が見つかりませんでした。IEでも通る方法が分かる方がいましたら、ぜひ教えてください。 OS: Windows 7 IEのバージョン: 9

  • MySQL→PHP→JSONをしたいのですが…

    現在、MySQLから取得したID一覧をJSON形式で出力したいのですが、うまくいきません。どうしたらよいでしょうか?よろしくお願いします。 なお、PHPでは以下のような処理をおこなっています。 ///////////////////////////////////////////////////////////////////// ・ ・ ・ //SQLを発行して結果セットを取得します $rst = mysql_query($sql); while ($col = mysql_fetch_array($rst)) { $return[] = $col; } function get_id($f) { return $f["dataid"]; } $return = array_map( "get_id", $return ); // JSON形式にして返す if( $return ) print Jsphon::encode( $return ); ・ ・ ・//////////////////////////////////////////////////////////////////// このようなかんじです。 この出力結果は『 ["18","19","20"] 』このようになるのでJSONでうまく処理できていないようです。 JSON形式なら『 {"dataid":"18","dataid":"19","dataid":"20"} 』 になるはずなのですが…何故でしょうか?教ええてください。お願いします。

    • ベストアンサー
    • PHP
  • Javascriptでデータベースにアクセスする方

    Javascriptでデータベースにアクセスする方法を教えてください。 こんばんは。Javascript初心者です。 現在、JavascriptでWeb上のデータベースからデータ(文字列)を取得したいと試行錯誤しています。 今のところ、AirTable(http://plus.appgiga.jp/masatolan/2015/05/07/55920/)を使ってみようと思っているのですが、貼り付けるだけという以下のソースを貼り付けてみても、どうにもうまく処理が進みません。 var Airtable = require('airtable'); Airtable.configure({ endpointUrl: 'https://api.airtable.com', apiKey: '(キーらしきものが書かれています)' }); var base = Airtable.base('(上とは違いキーらしきもの)'); 環境は、Monacaというクラウドサービスで、Cordova.js(と、node.js)は実装されています。 どうすれば文字列を無事取得できるようになるでしょうか? もしくは、より簡単な方法があれば、どうぞご教授くださいますよう、よろしくお願い致します。

  • 対象サイトのhtmlを取得・解析したい

    お世話になります。 早速ですがご質問させて頂きます。 対象サイトのhtmlを取得し解析・一部情報を抽出する機能を作っています。 以下の方法で取得を行ったのですが、抽出したい情報が入っていなく(隠蔽されている??)困っています。 firebugで対象サイトのhtmlを確認すると抽出したい情報はきちんと表示されていますが、 ブラウザでソースを表示すると隠蔽?されています。 ◆表示比較 ・firebug <p class="●●">(抽出したい情報)</p> ・ブラウザでソース表示する <td id="●●">-</td> ▼プログラム $html = file_get_contents ("http://対象サイト"); $domDocument = new DOMDocument (); $domDocument->loadHTML($html); $xmlString = $domDocument->saveXML (); $xmlObject = simplexml_load_string($xmlString); そもそも抽出したい情報の箇所は動的に生成されているものでfile_get~で読みにいっているものは動的に出力される前のものを読み込んでいるのが原因でこのような結果になっているのでしょうか? 上記の方法以外でもうまいやり方があればぜひご教授頂きたいです! 宜しくお願い致します! 環境: MacOSX 10.6.8 PHP 5.1.2 Firebug 1.11.4 Firefox 22.0

    • ベストアンサー
    • PHP
  • JavascriptとServletの連携方法

    現在学習目的で作成しているプログラムがうまくいきません。 生年月日を入力し、計算ボタンを押すと年齢が表示されるというものです。 ですがボタンを押してもなにも起きません。 いろいろなサイトを手本に手当たり次第に改造修正実行しているのですが、年齢が返ってきません。以下にソースコードを提示いたします。ご質問、ご回答お願い致します。 ※学習目的であり、実務とはなんら関係ありません。遠回りに無駄な機能を実装しようとしていることは分かっておりますが、この一連の流れがどのように動くのかを知りたいです。なので「javascriptだけで実装できるじゃん」等思われるかもしれませんが、どうかこの形を維持しての実装方法を提示していただければと考えております。 --NenreiJSP.jsp-- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <input type="text" id="year"><br> <input type="button" id="button" value="計算" onclick="get()"><br> <input type="text" id="age"> <script type="text/javascript" src="Nenrei.js"></script> </body> </html> --NenreiServlet.java-- package Test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fasterxml.jackson.databind.ObjectMapper; @WebServlet("/NenreiServlet") public class NenreiServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String Year = request.getParameter("year"); String year = Year.substring(0,4); String month = Year.substring(4,6); String day = Year.substring(6); Nenrei nenrei = new Nenrei(); String age = nenrei.AGE(year, month, day); JSON Json = new JSON(); Json.age = age; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(Json); response.setContentType("application/json"); response.setHeader("Cache-Control", "nocache"); response.setCharacterEncoding("utf-8"); // JSONを戻す PrintWriter out = response.getWriter(); out.print(json); } } --Nenrei.java-- package Test; import java.util.Calendar; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class Nenrei { public String AGE(String year, String month, String day) throws JsonProcessingException { int Year = Integer.parseInt(year); int Month = Integer.parseInt(month); int Day = Integer.parseInt(day); //現在の年月日 Calendar calendar = Calendar.getInstance(); int yearToday = calendar.get(Calendar.YEAR); int monthToday = calendar.get(Calendar.MONTH); int dayToday = calendar.get(Calendar.DAY_OF_MONTH); //年齢を計算 int age; age = yearToday - Year; if (monthToday < Month) { --age; } else if (monthToday == Month) { if (dayToday < Day) { --age; } } ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(age); return json; } } --Nenrei.js-- function get(){ document.getElementById("year"); xhr = new XMLHttpRequest(); xhr.onload = setResponseText; xhr.open("GET", "/ApiTest/NenreiServlet?year=" + year,true); xhr.send(); } function setResponseText(){ document.getElementById("age").innerHTML = xhr.responseText; }

    • ベストアンサー
    • Java
  • MySQLデータベースに入力するときの質問です。

    PHP, HTML, MySQLと一部javascriptで添削システムを作っています。 以下のようなページを作りました。 http://flab.aid.design.kyushu-u.ac.jp/~harano/prac/show.php HTMLタグをつけたままデータベースに保存 しています。 ですが、このままだと入力する人が勝手にHTMLタグやjavascriptのソースなどを書けてしまいます。 javascriptはあまり詳しくありませんが、データを消すようなソースを入力されてしまっては機能しません。 何かいい改善案があればどんな情報でもいいので教えてください。

    • ベストアンサー
    • PHP