元スレ+ JavaScript の質問用スレッド vol.78 +
JavaScript覧 / PC版 /みんなの評価 :
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 = :
ブラウザによっては駄目だよね。ブラウザ書いてないけどさ。
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.74 + (1001) - [97%] - 2009/12/1 6:08 ○
- + JavaScript の質問用スレッド vol.75 + (1001) - [97%] - 2010/1/23 1:07 ○
- + JavaScript の質問用スレッド vol.76 + (1001) - [97%] - 2010/3/10 4:02
- + JavaScript の質問用スレッド vol.77 + (1001) - [97%] - 2010/5/8 19:06
- + JavaScript の質問用スレッド vol.79 + (1001) - [97%] - 2010/9/11 6:50
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.98 + (1001) - [97%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.138 + (1004) - [95%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.128 + (1001) - [95%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.108 + (1001) - [95%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.118 + (1002) - [95%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.94 + (1001) - [95%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.93 + (1001) - [95%] - 2012/1/1 4:46
- + JavaScript の質問用スレッド vol.96 + (1001) - [95%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.95 + (1001) - [95%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.97 + (1001) - [95%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.99 + (1001) - [95%] - 2012/5/7 4:32
トップメニューへ / →のくす牧場書庫について