のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,934人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ+ JavaScript の質問用スレッド vol.78 +

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 = :

    クロージャでメモリリークってIEだけですか

    852 = :

    >>840
    <input type="buttpn" value="チェック" id="check_<?php echo $id ?>">
    ってしておいて、
    jQuery(function($){
    $('#check_1').click(function(){/* 1の時の処理 */});
    $('#check_2').click(function(){/* 2の時の処理 */});
    });

    853 = :

    >>803>>837みたいなクロージャ使えって話と
    それに反応してメモリリークの話がループしてるな
    IEのクロージャによるメモリリークは完璧ではないけど大体直ってるんだよ。
    http://d.hatena.ne.jp/zorio/20070626/1182875782
    http://d.hatena.ne.jp/zorio/20070918/1190135017
    ちなみに、>>825はアウトっぽいね

    855 :

    JSONPで機密情報を扱う際のセキュリティについて質問させてください。

    Cookieによるログイン認証済みであれば機密情報をJSONPで返すAPIを作っています。
    機密情報は特定のドメインでだけ利用できるようにしたいので以下のように実装してみたのですが、
    これで第三者に悪用される危険性はなくなったと言えるでしょうか?

    JSONPの中身
    (function(){
      if (location.hostname.match(/\.allow\.example\.com$/)) {
        callback(JSONデータ);
      }
    })();

    ダメだとしたら、どういう場合に問題が起きるのか教えてください。
    ただし、データ利用側にXSS脆弱性などはないものとします。
    よろしくお願い致します。

    856 = :

    メモリリークって本来はブラウザ側がうまく扱うものなんですか?うまくやってないブラウザがおかしいんですか?
    それともうまくやってるブラウザは親切でやってくれてるだけでスクリプト書いてる個々人が気をつけてうまく書かないといけないものなんですか?

    857 = :

    リーク箇所による

    861 = :

    >>859
    >特定のドメイン
    と書いてあってscriptにも判別コードが書いてあったから一応いっておいた。
    (認証を受けた人がやろうと思えば特定のドメイン以外で利用可能ということ。)

    864 = :

    求めてるのとは違うかもしれないけど、DOMそのものに値を保持させる方法もあるよ。

    865 = :

    DOMにしなければいけない理由はなんでしょうか。
    ザクレロじゃだめなんでしょうか?

    867 = :

    >>863
    function generateCallback(param) { return function() { alert(param); } }

    for (var i = 0; i < 3; i++) {
    $("div#" + i).click(generateCallback(i));
    }

    ループ毎にスコープを作ればいい
    スコープを作るには関数呼び出しをすればいい

    870 = 868 :

    >>861
    >(認証を受けた人がやろうと思えば特定のドメイン以外で利用可能ということ。)
    それは確かにそうなのですが、今回の機密情報というのはそのユーザーに関わる情報なので、
    当の本人が自分の意思で第三者のサイトにデータを漏洩させたとしても、
    何ら問題はないと考えております。

    今回問題だと考えておりますのは、機密情報にアクセスする権利のない第三者が、
    正規のユーザーを陥れることによって機密情報を盗み出すことができるかどうか
    ということです。
    もし、それ以外にもセキュリティホールになりうる事象があれば
    ぜひお教えいただきたく思います。

    871 = :

    JSONP とは (はてなより)
    >ただし、Same-Originポリシーが存在しないため、機密情報をAPIに含める際には十分な注意が必要である。

    ぐぐれば答えすぐ出てるのになんでググらないんだ?
    http://gihyo.jp/dev/serial/01/web20sec/0003?page=2

    874 = :

    それで大丈夫!
    心配しなくて良いよ!

    どんどん漏えいさせてくださいね!!

    875 = :

    >リファラチェックは同サイトにもある通り完全性がなく論外です。
    え、そうなの?
    XSS対策でここを見て弾くような実装はあるし、
    それはリファラが(ユーザが自分で偽装しようと思わなければ)
    信頼できる値だからだと思ってたけど。

    876 = :

    jsonp発行する前にサーバーサイドでチェックすりゃいいじゃん

    877 = 868 :

    >>874
    もし冷やかしでなく本当に漏洩の危険があるのであれば
    どういった場合に漏洩するのか教えてください。
    よろしくお願いします。

    878 = 868 :

    >>875
    一部のセキュリティソフトはリファラを出力しないようにしてしまうため、
    そういったユーザーはリファラでアクセス元を確認することができないのです。

    リファラは第三者が偽装できない情報のため(昔Flashで偽装できる脆弱性があったそうですが)、
    取得さえできれば確実な確認手段として利用することができます。
    しかしながら、前述のようにリファラを送信しないユーザーもおり、
    そういう意味で補助的にしか利用できないわけです。

    879 = 868 :

    >>876
    サーバーサイドでということは私のサイト側でということになるかと思いますが、
    何をチェックすればよいかお教え頂けるでしょうか?

    880 = :

    >>855
    String.prototype.match=function(){return true;};
    初歩レベルな

    881 = :

    ちなみに、Chrome/Safari/Opera限定で
    location.__defineGetter__('host',function(){return 'hage'});// location.host -> hage
    とか、Firefoxならwatchでやりたい放題とか色々あるよ。

    883 = 868 :

    >>881 >>880
    すみません、881さんの書き込みを読む前に882を送信してしまいました。

    ブラウザによってはlocation.hostnameなどの値まで書き換えられてしまうのですか!
    これは全く思いもよりませんでした。
    システム値を変更できるなんて、もはやセキュリティホールではないかとすら
    思えてしまいます・・・。

    もはや望みはほとんどありませんが、その方法を持ってしても破れないチェックを
    SCRIPT側のみで実装することは考え得りませんでしょうか?

    どうぞよろしくお願い致します。

    885 = :

    >>883
    そもそもユーザがそのページを保存して自サーバに置いて
    hosts書き換えてアクセスしたらアドレスバーの値なんて何の役にも立たないから
    >>876の言う通りサーバ側で何かしら判断するべきじゃない?
    リクエスト毎に動的なハッシュをhtmlに埋め込んでおいてそれが一致した時だけ値を返すとか。

    >>884
    入力の時に参照したvalueに今度は値をつっこめばいい

    886 = :

    >>885
    それはお前がお前のデータにアクセスできるって話でしかなく、お前が俺のデータにアクセスできるって話ではない
    一言でいうと、885の書いてることを理解できてないよ
    >>883
    孫iframeでのクロスドメイン通信とか。IEでクリック音が出るって問題とかあるけど。

    887 = :

    >>886
    あれ?どっか読み間違えた?
    自分が許す特定のハッシュ持ってるリクエストにだけレスポンス返すのだと何でダメなんだっけ?

    889 = :

    >>887
    ああ、ごめん。ハッシュについては間違ってないよ。
    ただ、それについては>>873で言及されてるでしょ。

    890 = :

    >>889
    あぁ、なるほど。読みのがしてたわ。jsonp使ってるページは自分のサーバではなかったのか。

    つか、>>872で言ってる通りセッション管理をCookieでやってるならJSONPのリクエストの時もそれ見たらいいって話じゃないのか
    認証が自分のドメインならJSONPの時もCookie飛ばしてくるし。

    891 = :

    いや、だからさ…
    機密情報を扱うサイトAとBがあって、AからBにJSONPなどで情報を渡したいわけよ。
    でも、実際にJSONP使うと全然関係ないサイトXから同じようにJSONPでその機密情報にアクセスできるわけでしょ。
    クラッカーは自分のサイトXにトラップを仕掛けておいて、サイトAの利用者が訪れるのを待っていれば、
    アクセスがあったときにトラップが発動して何も知らない訪問者の情報を盗めるでしょ。
    アクセスしてるのは訪問者自身だからCookieは正規のものだけど、情報を掠め取るのはサイトXになるからCookieは役に立たないよ。

    893 = :

    >>885
    下記で試しましたが、「xC」とフォームに表示されます。
    <form>
    <input type="text" value=xC>
    </form>

    あと、「入力の時に参照したvalue」の意味が分かりません。
    (数値はJavaScriptで定義しています)

    894 = :

    <input type="text" value="def" id="t">
    <script>
    document.getElementById("t").value="change"
    </script>

    895 = :

    おまえがアホって事はよくわかったよ

    896 = :

    >>893-894
    レベル低すぎ。ここは手取り足取り教えるとこじゃないから。
    参考サイトで駄目なら入門書籍を読むべきだと思うね。がんばって。

    897 = :

    >>894
    できました。
    有難うございます。

    899 = :

    document.imlink.src = "";
    これでnameがimlinkのsrcを書き換えることは出来たのですが、
    aタグのhrefを書き換えるにはどうしたらよいでしょうか?
    document.alink.href = "http://example.jp";
    これだとうまくいってないようです。

    900 = :

    ブラウザによっては駄目だよね。ブラウザ書いてないけどさ。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について