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

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
301 : Name_Not - 2014/11/11(火) 01:20:47.18 ID:???.net (+68,+29,-40)
>>300
もしかしてシングルクォートの話してる?

http://d.hatena.ne.jp/ockeghem/20070510/1178813849

> 私が、シングルクォート「'」もエスケープ対象に加えているのは、
> 属性値をシングルクォートで囲むケースが少なからず見受けられるからで、
> かならずダブルクォート「"」で囲むように徹底されていれば、このガイドラインは必要ありません。

まあ、あったほうがいいよね。
302 : Name_Not - 2014/11/11(火) 01:24:01.42 ID:???.net (+42,-30,-132)
Underscpreはこうらしいね。 これだけやっておけば大丈夫みたい。

http://stackoverflow.com/questions/6020714/escape-html-using-jquery
There's also _.escape in Underscore, that does it like this:

// List of HTML entities for escaping.
var htmlEscapes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'/': '/'
};

// Regex containing the keys listed immediately above.
var htmlEscaper = /[&<>"'\/]/g;

// Escape a string for HTML interpolation.
_.escape = function(string) {
return ('' + string).replace(htmlEscaper, function(match) {
return htmlEscapes[match];
});
};
303 : Name_Not - 2014/11/11(火) 01:29:47.87 ID:???.net (+9,-30,-24)
訂正版はこれでいいのかな。

function escapeHTML(str) {
return str.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">").replace(/'/g, "''").replace(/\//g, "'/");
}
304 : Name_Not - 2014/11/11(火) 01:31:55.47 ID:???.net (+174,+30,-46)
>>300
あえてこちらには書き込まなかったのになぜこっちにコピペするんだよ

>>302
明らかに足りない
「ライブラリで使っているから大丈夫」という信者判断はいい加減に卒業しろ
しかも、「大丈夫みたい」とは何も理解してないだろ
305 : Name_Not - 2014/11/11(火) 01:32:57.68 ID:???.net (+72,+29,-15)
>>304
「足りない」っていうぐらいなら
何が足りないのかいいなよ。
難癖つけてるようにしか見えないからさ
306 : Name_Not - 2014/11/11(火) 01:34:19.23 ID:???.net (+76,+29,-15)
>>304
> あえてこちらには書き込まなかったのになぜこっちにコピペするんだよ

こっちの続きだから

> 明らかに足りない

じゃあ、足りない文字は何?
そいれ付け加えるだけなんだからさ
307 : Name_Not - 2014/11/11(火) 01:35:41.73 ID:???.net (+81,+29,-26)
>>304
あなたよりも、徳丸さんの方を信じますよw

徳丸さんは / はエスケープしてないね。
たしかに要らないように思える。
308 : Name_Not - 2014/11/11(火) 01:37:57.87 ID:???.net (+94,+30,-48)
仕様を読めば分かる事を一々聞くな
仕様も読めない奴が一人前な口を叩くな

この後の展開は読めてる
「知らないんだろ?じゃあ、問題ないってことだな」
煽ってもおまえに教える気は全くないがね
309 : Name_Not - 2014/11/11(火) 01:38:10.16 ID:???.net (+57,+29,-5)
本当、文句だけ言って自分の意見は書かないクズはなんなんだろうな
310 : Name_Not - 2014/11/11(火) 01:39:59.82 ID:???.net (+57,+29,-15)
それじゃだめ

なんで?

いいやだめだめ

だからなんで?

だめったらだめ

駄目だこいつ話にならねぇw
311 : Name_Not - 2014/11/11(火) 01:41:50.95 ID:???.net (+3,-29,-137)
仕様によると最低限のエスケープはこれだけらしい。

http://d.hatena.ne.jp/ockeghem/20070510/1178813849
> W3CのHTML4.01の仕様を見ると、~略~すなわち、最低限のエスケープだと以下のようになります。
>
> エスケープ対象項目 エスケープ対象文字
> 要素内容(一般のテキスト) 「<」、「&」
> 属性値 「"」、「>」、「&」

これ+ブラウザのバグ対策か。
312 : Name_Not - 2014/11/11(火) 01:44:48.21 ID:???.net (+75,+30,-52)
>>308
> この後の展開は読めてる
> 「知らないんだろ?じゃあ、問題ないってことだな」

普通にその通りの展開だよw

でも先が読めてても、対策出来てないんじゃ
片手落ちだけどね。


お前がパンチを出してくるのは読めていた!(勝ったつもり)
そしてパンチで殴られる。(笑)
先が読めてても、殴られる例。
313 : Name_Not - 2014/11/11(火) 01:46:38.58 ID:???.net (+58,+30,-25)
先が読めてるくせに、その先を行けないっていうのは、
言い返せないからってことだと思うw

そういう反論するのはわかっていたが、
その反論の反論はできないってことだから。
314 : Name_Not - 2014/11/11(火) 01:51:25.80 ID:???.net (+75,+30,-44)
なんか向こうでこういうこと言ってる奴がいるわw

> >>132が向こうのスレにコピペされてるんだが、誰がやったんだ?
> 迷惑だから止めてくれ

こっちの話を移動させようとしてるの見え見えだってのに
見苦しいやつだなw
315 : Name_Not - 2014/11/11(火) 08:02:27.92 ID:???.net (+47,+19,-28)
innerHTML否定厨が完全論破されててワロタw
316 : Name_Not - 2014/11/11(火) 08:30:42.48 ID:???.net (+19,-15,-16)
replaceの回数だけ文字列を全部読んでいてワロタw
317 : Name_Not - 2014/11/11(火) 09:01:58.11 ID:???.net (+7,-27,-37)
>>316
ベンチマークするとそっちのほうが
速かったりするのはなんでなんだろうか?

キャッシュの関係なのかな?

ループが単純=CPUの1次キャッシュに入りきる
ループが複雑=CPUの1次キャッシュに入りきらない
318 : Name_Not - 2014/11/11(火) 09:44:07.85 ID:???.net (+56,-30,-219)
>>288,289

固定の文字列って何?ハードコーディングって用語も知らないの?
文字列は文字列であり変数に入れようが入れまいが代わりはない
ハードコーディングされた文字列だから安全って思い込みはやめるべきだ
"<div onclick='alert(1);'>click</div>"こういうのは文字列じゃないとか抜かすなよ

>Q. innerHTMLは絶対に使ったらダメなの?
>A. XSSが起きるような使い方をしなければ使って問題はありません。

つまり自分でDOMで構築するよりもリスクが高い事を認めているってことだよね

お前が主張する前にもう言っただろ
innerHTMLはパフォーマンスが悪くDOMを壊す
319 : Name_Not - 2014/11/11(火) 09:56:13.25 ID:???.net (+80,-30,-150)
>>303
エスケープ

var DIV = document.createElement('div');

function escapeHTML(str) {
DIV.textContent = str;
return DIV.innerHTML;
}

というやり方もあるんじゃないか?

ただし、この関数の場合
escapeHTML(str1) + escapeHTML(str2) の結果が
escapeHTML(str1 + str2)
に等しくならない場合があるブラウザがあると困るかもしれない

ちなみに逆変換はこれでいけるかな?

function unescapeHTML(htmlStr) {
DIV.innerHTML = htmlStr;
return DIV.textContent
}
320 : Name_Not - 2014/11/11(火) 09:57:11.06 ID:???.net (+57,+29,-74)
innerHTMLはパフォーマンスが悪くDOMを壊す(キリッ

世界中で使われてるのに?
jQueryにも使うなって言ってこいよ
変な宗教か何かやってるのかな?
321 : Name_Not - 2014/11/11(火) 10:19:49.90 ID:???.net (+34,+11,-18)
デタお決まりのjQueryガーwwwwwwwwwwww
322 : Name_Not - 2014/11/11(火) 10:29:48.42 ID:???.net (+56,+28,-24)
文字列操作で構築、変数部分はエスケープって一昔前に戻った感じだね
323 : Name_Not - 2014/11/11(火) 10:41:28.13 ID:???.net (+57,+29,-61)
DOMを壊すって曖昧な表現だな
innerHTMLを使ってもDOMがぶっ壊れたりしないから良く分からんよ
324 : Name_Not - 2014/11/11(火) 10:58:54.87 ID:???.net (+47,+19,-15)
無知がinnerHTML使うなって言ってて笑える
325 : Name_Not - 2014/11/11(火) 11:40:48.95 ID:???.net (+24,+29,-33)
ごちゃごちゃとエスケープ処理を作るよりも
こういう>>319ハックのほうが個人的には好きだな
326 : Name_Not - 2014/11/11(火) 13:38:02.07 ID:???.net (+18,-17,-30)
>>319
>>325
escapeの為にinnerHTMLを使うことは本当の馬鹿だからやめとけ
innerHTML否定厨よりも頭悪いぞ
327 : Name_Not - 2014/11/11(火) 13:46:47.72 ID:???.net (+5,-22,-46)
>>325
賢い方法だが、テキストノードのエスケープ処理しかない点に注意
属性値のエスケープ処理を追加する必要がある
328 : Name_Not - 2014/11/11(火) 14:19:25.43 ID:???.net (+55,+29,-38)
>賢い方法だが

ブラウザの挙動すら理解できてない馬鹿が一匹沸いたな
329 : Name_Not - 2014/11/11(火) 16:32:43.53 ID:???.net (-4,-27,-12)
DOMOすんません
330 : Name_Not - 2014/11/11(火) 18:58:18.81 ID:???.net (+87,+27,-15)
まあ今日はポッキーでも喰って落ち着け
つ━━━一
331 : Name_Not - 2014/11/11(火) 19:15:54.23 ID:???.net (+94,+30,-31)
一人で回答頑張ってる奴がいるみたいだから、このスレの回答は全てそいつ一人に任せればいいんじゃない?
そいつの認める奴だけが回答する権利を持つと言わんばかりの有り様だし
332 : Name_Not - 2014/11/11(火) 20:38:17.72 ID:???.net (+69,+29,-85)
>>318
> つまり自分でDOMで構築するよりもリスクが高い事を認めているってことだよね

DOMで構築するほうがリスクが高いよ。
DOMで構築するとコードが長くなる。
コードが長くなるということはバグを入れる可能性が高くなる。
つまりバグを入れるリスクが高い。
333 : Name_Not - 2014/11/11(火) 20:51:19.05 ID:???.net (+75,+30,-30)
>>331
それ、いいね。

じゃあ、君の意見に賛成する俺と
君は回答しないことにしよう。

多分君の危険に賛成しない人はいるだろう。
そういう人は回答してもいいけど、
少なくとも俺と君、この二人はもう絶対回答しないよ
334 : Name_Not - 2014/11/11(火) 21:10:30.10 ID:???.net (+66,+22,-99)
>>319
DOM使ってエスケープするのは、可能といえば可能で
意外と遅くないらしいんだけど、やり過ぎだと思うよ。

仕様も実装も簡単なのに、ブラックボックスにするのがね。
あとサーバーサイドで使う時も考えると、
純粋なJavaScript(ECMAScript)の範囲にしておきたいし。

もちろん、DOMベースでやるよりも、文字列ベースのほうが
少ないメモリで実行できるので速くなる。
335 : Name_Not - 2014/11/11(火) 21:12:32.90 ID:???.net (+20,-30,-146)
>>318
> "<div onclick='alert(1);'>click</div>"こういうのは文字列じゃないとか抜かすなよ

あほじゃね? どこのアホがonclickなんて文字を書くんだよ。

そんなマヌケがいたとしたら、createElement使っても
onclick書くだろw

どんだけおっちょこちょいなんだw
336 : Name_Not - 2014/11/11(火) 21:16:01.95 ID:???.net (+39,-29,-74)
論点がずれてる。

JavaScriptを文字列の中に書くのはXSSじゃない。
それは単にaddEventListnerした要素にすぎない。

問題なのは文字列の中にJavaScriptを埋め込むことではなく
文字列の中にXSSを埋め込むこと。

文字列の中にXSSを埋め込むのは相当難しい。
337 : 335 - 2014/11/11(火) 21:18:01.52 ID:???.net (+68,+29,-42)
>>336
そのとおりですね。

俺が言いたかったのは、文字列の中にXSSを埋め込むようなおっちょこちょいは、
createElement使ってもXSSを埋め込むおっちょこちょいだろだろってことです。
338 : Name_Not - 2014/11/11(火) 21:49:16.66 ID:???.net (+62,+29,-43)
俺がいいたいのは>>289のようなアホなコードを書く奴は何を書いてもXSSを起こすだろだろってことです
339 : Name_Not - 2014/11/11(火) 21:55:43.65 ID:???.net (+50,+22,-15)
じゃあアホの部分を修正すればいいだけじゃんかw
340 : Name_Not - 2014/11/11(火) 22:30:13.66 ID:???.net (+52,+29,+0)
ここはジャイアンのスレですね
341 : Name_Not - 2014/11/11(火) 22:47:42.34 ID:???.net (+52,+29,-4)
ジャイアンに失礼だろ
342 : Name_Not - 2014/11/11(火) 23:48:14.58 ID:???.net (+52,+29,-1)
結局また始まってんじゃん
343 : Name_Not - 2014/11/12(水) 00:15:37.45 ID:???.net (+62,+29,-80)
仕方ないよ。
innerHTMLなんて、サーバーサイドのechoや
document.writeと同じで、エスケープすればいいだけの話なのに、
エスケープしなかったらXSSになるかもしれないから使うなって
意味不明なことを言ってるようなやつだからね。
頭が悪い奴はいくら言っても理解できない。
344 : Name_Not - 2014/11/12(水) 01:28:13.89 ID:???.net (+27,+4,-18)
ゼビウスの開発コードネーム?
345 : Name_Not - 2014/11/12(水) 01:34:13.10 ID:+zRlwvNM.net (+19,+29,-3)
いま面白いことを言った!
346 : Name_Not - 2014/11/12(水) 03:16:46.81 ID:???.net (+39,-29,-106)
ORMでデータを保存する時、
hoge.save()
のようなメソッドを発行すると思います
それによりajaxのリクエストが投げられるでしょう
しかし複数のデータを保存した場合、たとえばオブジェクトが100個あると、
100回もリクエストが発行されるのでしょうか?
347 : Name_Not - 2014/11/12(水) 03:30:45.96 ID:???.net (+68,+29,-87)
>>346
フレームワークによると思うが
複数のリクエストをまとめる仕組みがあるだろう。

そういうたぐいのフレームワークについて
俺は詳しくないが、そのような仕組みを考えたことはある。
俺程度が思いつくものなのだから、普通にあると思う。
348 : Name_Not - 2014/11/12(水) 12:35:05.41 ID:???.net (+56,+28,+0)
そうですか
調べてみます
ありがとうございました
349 : Name_Not - 2014/11/12(水) 17:11:47.77 ID:???.net (+64,+29,+0)
>>330
チョコの方持つなよ
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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