トイレ脆弱性

ありえないトイレ

トイレットペーパー以外は詰まりの原因となります。異物を流さないでください。

おそらくトイレットペーパー以外の異物を流す輩がいるという問題がことの発端です。
おそらく、この”異物”に含まれるのは、ティッシュペーパーとかが多いのでしょうが、
その他にもバラエティあふれるものが流されることがあったはずです。

流してOKなものとそうでないものを整理すると、

  • ○ トイレットペーパー
  • × ティッシュペーパー
  • × ガムの殻
  • × レシート
  • × タバコの吸殻

ブラックリスト法だと問題に対処しきれません。
ブラックリスト法とはつまり、流してはだめなものを定義し、それがやってきたときエラーとします。
流してはいけないものはこの世に無数にあり、それらを定義しつくすことは不可能だからです。

そこで、この問題の担当者はホワイトリスト法を採用しました。
ホワイトリスト法とはつまり、流すことを許可されたものを定義し、それ以外のものがやってきたときエラーにするというものです。

foreach($objects as $key => $obj) {
    if(!preg_match('/^(トイレットペーパー)$/i', $obj)) {
    	$rownum = intval($key) + 1;
    	$msg = "{$rownum}行目:<br/>";
    	$msg .= "トイレットペーパー以外のものがながされようとしています。<br/>";
    	$msg .= "処理を停止します。";
        die($msg);
    }
}
echo '水洗開始';

トイレットペーパー以外のものをひとまとめに”異物”と定義することで、その他無数の流してはいけないものをリストアップするコストを削減することに成功しました。
しかし、ここで致命的なバグが生まれています。

トイレットペーパー以外の全てのものを流すことを禁止したため、肝心のうんこを流さないで帰るという攻撃が成立します。

このセキュリティホールはただちに報告され、修正されるものですね。
みなさんうんこが流されないままになっているトイレに気をつけてください。

修正版:

トイレットペーパーまたはうんこ以外は詰まりの原因となります。異物を流さないでください。

foreach($objects as $key => $obj) {
    if(!preg_match('/^(トイレットペーパー|うんこ)$/i', $obj)) {
    	$rownum = intval($key) + 1;
    	$msg = "{$rownum}行目:
"; $msg .= "トイレットペーパー以外のものがながされようとしています。
"; $msg .= "処理を停止します。"; die($msg); } } echo '水洗開始';

カテゴリ:未分類 | コメント:2 Comments

コメント / トラックバック2件

  1. tom より:

    わたしもずっとそれ、考えてましたwww

  2. 腕時計 店舗 東京 時計 通販 メンズ http://www.watchsrestaurant.com/

コメントをどうぞ