文字列結合系::こんなん作りました


//基礎
for (foo in {bar:0}){
}         // foo = "bar"
alert(foo);    // alerts "bar"
alert(typeof foo) // alerts "string"

//応用
for each (obj in {e:{}}){
for each (obj[<>{<>al</>}{<>ert(1)</>}</>] in {z:0}){
for (x in obj){
}
}
}

alert(x) // alerts "alert(1)"
alert (typeof x) // alerts "string"

文字列"alert(1)"が隠密になっていますね。文字列結合系のゆえんです。文字列結合にあたって意識的に使っていないのは以下の記号かな。マイナス記号があまりにも便利だとわかったのはつい最近ですけれど。>thanks, Mr.hasegawayosuke
' (クオート)
" (ダブルクォート)
\ (バックスラッシュ)
% (パーセント)
+ (プラス)
- (マイナス)
* (アステリスク)
= (等号)
, (カンマ)
. (ドット)
これ以上使える記号を削るのは正直厳しいけれど、上と同じ条件で、以下の$userdataにフィルタリングがかかっているとして…

<script>
$userdata
</script>
document.cookieを第三者のサイトに送りつけることが恐らく可能なのではないのかなぁと、今奮闘中なのであります。あ、言い忘れましたけれど、セキュリティフィルタにひっかかりそうな文字列は全部禁止の方向で。たとえば、「eval」や「location」「atob」とかは使えない、なんちゃて。禁止すればいいのは、new と、組み込みクラスの名前と組み込み関数の名前と、組み込みメソッドの名前と、組み込みプロパティの名前とtypeof だけかな? 悩み中。詰め問題を作るのも難儀なのであります。あ、そうか、thisとかtopとかselfとかグローバルオブジェクトそのものを指すのも禁止かあ。どうすりゃいいんだべ?
本当はなんとかして「each」を使わない、<>を使わない、できればクロスブラウザで、なんて考えているから面倒なんですよー
それに、普段は意識もしていなかったビット演算子まで考えるとなんだかうすら寒くなってきますしね。(舌