ささきしき

チラシ

デレステ新イベを走るの回

内容がなんであれ、更新が頻繁にあるのは良いこと、だそうです。

どうも、奏汰です。

今回はこちらの話。 cinderella.idolmaster.jp


営業成績(?)のグラフがTwitterで話題になった音ゲー「シンデレラガールズ スターライトステージ」ですが、本日のおやつどきから新イベントが始まりました。
その名を「Live Groove Vocal burst」。ゲーム内のプレイ曲をランダムで3曲続けてプレイングし、そのスコアでポイントを稼ぎ、といった、まぁよくある奴ですな。

で。

いわゆる上位報酬に、私が好意を寄せている二宮飛鳥ちゃんが選ばれるという大変喜ばしい話が転がってきました。
めでたいです。好きな人が周りから好かれているのはとても良い心地です。

で?

上位報酬というからには、上位に入らなければならない訳です。
最低獲得順位が10万位ですが、今までにあった類似イベントの延べ参加人数は30万人前後[要出典]。私の最高戦績も20数万位ですので、かなりしんどい戦いになることは明白です。

という訳で、ダイエット日記的な、ポイントゲッター日記を開始しようという腹積り。
サーバーにポイント反映されるのが15分おきなので、直近の0:00のデータを貼り続けていこうと思います。
また、デレステイベントボーダーbotに力をお借りして、その時の10万位と、最難ボーダーの2千位の点数を併せて載せ、やる気を継続させようという感じです。
がんばります。

というわけで、二宮飛鳥AC2015の4日枠のネタになります。
決してしばらく同じネタで投稿が埋まるとか考えてない。

ではでは。

【二宮飛鳥AC2015】レギュレーションとか

逐次更新します

二宮飛鳥 Advent Calendar 2015 - Adventar
#二宮飛鳥AC2015 hashtag on Twitter

主旨

みんなで二宮飛鳥を愛でよう

ちょうど「Cinderella Master」の9thメンバーに抜擢され、「Jewelies 3」にも選抜されたというタイムリーな存在であるところの二宮飛鳥ちゃんを、せっかくだから同好の士で愛であい、新たな魅力に気づいたりしようぜ的なものです。

参加者の皆様にお願いしたいこと

  1. 作品を投稿したい日のカレンダー枠に名前を載せる(何をするかも書き添えるとベター)
  2. 作品の奥付、作者コメントなどに以下を明記する
    1. 「二宮飛鳥AC2015」のタグ、ハッシュ登録
    2. 12月xx日付の作品であるか
    3. カレンダーのURL
  3. 忘れずに作品をカレンダーに登録する
  4. えっち、グロテスクなのは不可。PG-15、ゲームで言えばD指定まで!

禁止および避けていただきたい事項

  • 盗用、転載
  • 過去絵など、すでにどこかで公開済みの作品の再掲
    複数作品をまとめた際に数点含まれるような場合は除く)
  • 遅刻(「完走」の条件に、当日中に提出できることが含まれているため)
    • 「途中だけどとりあえず登録してお茶を濁す」は、
      あんまりやって欲しくはないなぁ、くらいの適当さでいいです。

以上、ご承知おきくださいませ。

参考

そもACとは

アドベント - Wikipedia
アドベントカレンダー - Wikipedia

【化石】htmlspecialcharsで文字参照まで無効化したときの対策

問題発生の経緯

  • HTML, PHP, MySQL文字コード設定がEUC-JPであったため(だと思うが)、絵文字や一部記号が数値文字参照("&#〜〜")でDBに登録されていた。
  • 動作テスト中に、DB内にXSSが仕込める事に気づく。
  • こちらを参考に、htmlspecialcharsechoにかませる事でXSSを回避した。
  • 数値文字参照用の&までエスケープされたために今度は絵文字が表示されなくなった

何を持って解決と呼ぶか

今回は営利目的でなく、実行速度の最適化も検討せず、またスパゲッティの生産に対して寛容な状況であったため、「XSSを回避しつつ、顔文字が表示される」という事のみをとりあえず満たせば達成ということにした。

対策

htmlspecialcharsエスケープされる文字<>"&のうち、&以外がエスケープされていれば上記解決に至る、ということで、str_replaceで再置換をかけることにした。
下記実装。

function h($str) {
    return str_replace('&amp;', '&', htmlspecialchars($str, ENT_QUOTES, 'EUCJP'));
}

おわり

まだまだ浅学非才の身ですので、皆様からの心温まるマサカリをお待ちしております。


コメント

@mpyw 2015-07-20 13:57

個人的にh3の実装が一番しっくりきます。

<?php

function h1($str) {
    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
function h2($str) {
    return str_replace('&amp;', '&', htmlspecialchars($str, ENT_QUOTES, 'UTF-8'));
}
function h3($str) {
    return preg_replace('/&amp;(?=#[\d;])/', '&', htmlspecialchars($str, ENT_QUOTES, 'UTF-8'));
}

header('Content-Type: text/html; charset=UTF-8');

$raw = '& is converted into &amp; or &amp in <html></html> context. I like &#127835; & &#127843;.';
$h1  = h1($raw);
$h2  = h2($raw);
$h3  = h3($raw);

echo nl2br(print_r(compact('raw', 'h1', 'h2', 'h3'), true), false);

…これでいいかなぁと思ったんですがこれでもまだ厳密には不十分ですね。なぜなら本当にユーザが&#...;と入力する可能性も考えられるからです。100%正しい動作にするにはMySQLが勝手にHTMLエンティティ形式に置換する文字の範囲を求めなければなりません(そこまでしなくても運用上問題ないとは思いますがw)置換される範囲を求めたところで、置換される文字を表すHTMLエンティティを直接入力されると完全に区別がつかなくなるのでどうしようもないですね…

Haskellやるぞー

奏汰です.
今夏,某海鮮丼屋さんでアルバイトをするために,今からでもHaskellをしっかりお勉強しようと思います.

ということで,まずはインストール覚え書きをば.ぶっちゃけほとんど参考先ママですけども.ええ.
細かいこと分かってないので,かなり冗長的かもしれません.悪しからず.
あ,使用環境はHomebrew on OSX 10.10.3 です.

続きを読む