Google ChromeのXSS保護機能について

このようなクエリから直接タグを埋め込むXSSを行うページを作成し

http://example.com/hoge?tag=<script>alert("xss")%3B<%2Fscript>

Chromeから閲覧したら下記のようなエラーが出てページが表示されませんでした。

このページは動作していません

このページで通常と異なるコードを検出したため、個人情報(例: パスワード、電話番号、クレジット カード番号)を保護するために、ページをブロックしました。
サイトのホームページにアクセスしてみてください。

ERR_BLOCKED_BY_XSS_AUDITOR

ソースコードを開くとページのソースを見ることができます。この時XSSで埋め込まれた該当のタグが赤くハイライトされていました。

スクリーンショット 2017-06-29 10.56.16.png

ChromeはXSSのあるページもある程度チェックしてくれているようです。(ちなみに、Base64エンコードした値をクエリに渡し、ページ側がBase64デコードしてからコンテンツを表示する場合は検知されません。)

MySQLでDATE_FORMATを使ってDATETIME型の値を簡単に処理する

DATE_FORMATを使えばDATETIME型をDATE型みたいな文字列に変換できる

mysql> SELECT DATE_FORMAT('2017-06-06 10:00:00', '%Y-%m-%d');
+------------------------------------------------+
| DATE_FORMAT('2017-06-06 10:00:00', '%Y-%m-%d') |
+------------------------------------------------+
| 2017-06-06                                     |
+------------------------------------------------+
1 row in set (0.00 sec)

年だけを取り出したり年月で取り出したりすれば月間推移を出したり年間推移を出すことができるのでよく使う。文字列置換でもいろいろできるが、こちらを使ったほうが良い。

MySQLで文字列の文字数をカウントする

CHAR_LENGTHを使えば文字数を数えることができる

mysql> SELECT CHAR_LENGTH('ほげです');
+-----------------------------+
| CHAR_LENGTH('ほげです')     |
+-----------------------------+
|                           4 |
+-----------------------------+
1 row in set (0.00 sec)
  • 任意の文字数以上のレコードに処理を行う
  • 期間毎に投稿されたツイートの文字数合計値を取る
  • 任意の文字数以下のレコードを削除する

などができる