習慣 恥=下記 −シュウカン・ハジカキ− RSSフィード


<お知らせ>
恥=下記は更新を終了いたしました。以降の更新は、GUILZ.ORG に移転して行っております。今後ともよろしくお願いいたします。


2011年 04月 09日 更新終了のお知らせ

いい年にもなって、いい加減恥を下記まくるのもアレだろうということで、習慣 恥=下記 は更新を停止することといたしました。

既に長期放置が当たり前でしたので、今さらという感もありますが、長らくのご愛顧に感謝いたします。

今後は下記サイトに活動の場を移し、相変わらずの適当な内容を書き綴ることとさせていただきます。


GUiLZ.ORG ( http://www.guilz.org/ )


……はい、要するに看板の掛け替えと移転というだけの話でした。今後とも気が向かれましたら、上記サイトのご閲覧をいただければ幸いです。

習慣 恥=下記 につきましては、未だに一部の記事について検索エンジンからご訪問いただいているようですので、このまま残しておく予定です。(新規記事は GUILZ.ORG のみとなります)

それでは。

トラックバック - http://d.hatena.ne.jp/cruel/20110409

2011年 03月 03日 エロゲー改造データ検索、5年ぶりくらいにメンテしてみた

[] エロゲー改造データ検索を5年ぶりくらいにメンテしてみた

移転・消滅したサイト様の変更・削除を行って、検索結果を追えるように修正しました。

左の検索メニュー、または

http://www.google.com/cse/home?cx=013114017958634010020:mf1o379dq1e&hl=ja

からどうぞ。

そろそろエロゲーレビュー検索も作るかな・・・。

っつてもまあエロゲーから遠ざかって久しいので、だいぶ情熱も薄くなってしまってるけど・・・。

トラックバック - http://d.hatena.ne.jp/cruel/20110303

2011年 02月 27日 BaserCMS、だいぶ分かってきたかも

[] BaserCMS colorbox が動かなかった問題に対処してみた

今回も BaserCMS ネタ。ほぼ全ての修正作業も終わったので、テストしてみようといろいろ更新したりしていたら、colorbox がうまく動かないことが判明。悩んだ結果、動作するようになったのでメモ

問題など

環境によるのかもしれないけど、BaserCMS 1.6.9.1 にて、Baser標準タグを入れているにもかかわらず、画像ポップアップが行われなかった。

解決策

colorbox のサンプルを見れば一目瞭然だったが、以下のようなコードをレイアウトファイルに追加することで解決。

<script type="text/javascript">
	jQuery(document).ready( function() {
		$("a[rel='colorbox']").colorbox();
	});
</script>

単純にBaser標準タグjquery.colorbox-min.js だけを呼んでも、そりゃ動くわけないよね。他のライブラリも同じようなものなんだし。つい、BaserCMS の FAQ を見て、それだけで大丈夫だと勘違いしちゃったんだ・・・。

ということで、問題に対処と言うよりは、単なる自分無知ぶりを晒しただけだったとさ。まあいいか、このブログ名前は「恥=下記」なんだし。

トラックバック - http://d.hatena.ne.jp/cruel/20110227

2011年 02月 25日 PivotX 改ざんされた件のまとめ。マズかったら消すかも

[] PivotX ハッキングによる改ざん点まとめ

現在も事態は進行中のため詳細には触れられないが、取り急ぎサイトの全データを取得できたため、簡単に解析した結果について書いておく。同様の被害に遭われた方の復旧の参考になれば。(ただし、全ての改ざんされたサイトで同様の手口だったかどうかは定かでありません。下記ハッキングチームであれば似たような手法を採るものと思われますが、あくまで参考にとどめ、必ず詳細な解析を行ってください)

改ざんしたハッキングチーム

画像ならびにタイトル等に、Hacked By BoZKuRT という名称が見られ、かつ画像にはトルコ国旗があることから、トルコのハッキングチームによる可能性が高い。また、ログ解析結果を聞いたところによると、改ざんされたと思われる日時にトルコから複数のアクセスがあったとのこと。

改ざん

以下全て、PivotX の管理画面より

サイト管理−設定

サイト

サイトホームページ

サイト名が Hacked By BoZKuRT に変更されていた。サイトホームページは、次に記載する改変されたページがテンプレートとして指定され、表示されるようになっていた。(トップページとして表示されるようになっていた)

エントリとページ 画面の、先頭カテゴリインデックスページ

該当ページのテンプレート

pivotx/templates/index.html

(不正アップロードされたファイル)

を呼ぶように改変されていた。

ページ内容自体に変更はなかったが、タイトルが Hacked By BoZKuRT に変更されていた。

pivotx/templates/index.html は以下の通り

<HTML><HEAD><TITLE>||| Hacked By BoZKuRT|||</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-9">
<META content="MSHTML 6.00.6001.18294" name=GENERATOR></HEAD>
<BODY bgColor=#000000 onload=teclear();>
<embed src="http://www.fileden.com/files/2011/1/28/3068886/023_Hucum_Marsi.mp3" height="0"
type="audio/x-ms-wma"> </embed> 
<center>

<img border="0" src="http://img.webme.com/pic/b/byarsslan/hackked.jpg" >

</center>
</body>
</html>

!注意!

上記リンク先のファイルに、何らかのマルウェアがないとも限りません! アクセスする際には細心の注意を払ってください!!


以上の改変により、トップページアクセスすると、上記 index.html の内容が表示されるようになっていた。

また、このほかに不正ファイル等が混入していないか確認してみたが、現時点では確認できていない。

今回突かれた脆弱性

海外では 2011/02/18、日本では 2011/02/21 に公表された、パスワードに関する脆弱性の可能性が高い。

http://jvn.jp/cert/JVNVU175068/

理由として、スーパーユーザーと推測されるIDパスワードが変更され、ログインできなくなっていた。かつ、推測されにくいスーパーユーザーIDは問題なくログインできたことから、この脆弱性が最有力と思われる。

! この他にもXSSなどいくつかの脆弱性存在しますので、PivotXユーザーの方は、至急 2.2.5 へのアップデート検討してください !

このような攻撃への対応

今回の攻撃は脆弱性の公表前に攻撃が行われる、いわゆるゼロデイ攻撃であり、セキュリティ情報に網を張っていても防ぐことは簡単ではないと考えられる。

しかしながら、それでも常に迅速なCMSバージョンアップを行っていれば防ぐことができた可能性もあり(とはいえ、脆弱性対応がされた PivotX 2.2.4 公開後、攻撃を受けるまでの猶予は1週間もなく、かつ 2.2.4 公開のリリース公式サイトで流されさえしなかったのだが)、迅速なパッチ当てが重要という、セキュリティの常道を守る大切さを身にしみて学習できた。

よく使われるIDの使用も考え直した方がいい。確かに役割が分かりやすいが、ブルートフォースアタック対策にもなるため、スーパーユーザーに類するアカウント名は推測されづらいものに変えようと思う。

そして、CMSの開発チームや開発元に対する精査も今後はより重要となっていくだろう。今回のように重要脆弱性対応であるにも関わらず、リリース情報すら流していない PivotX 開発チームは、個人的には信頼できない(開発チームは、今回の件を大事にしたくなかったという声もある)。そのようにリスキーと考えられるCMSは、いかに魅力的であろうとも利用する前によくよくの検討が必要だろう。

またWAFの導入など、今回のような脆弱性には対応できないとしても、事前にできる限り大きく網をかけておく事も大切だ。今回はサーバー側の事情でそれが許されなかったが、今後のサーバー契約の際にはWAFを重要設備として検討したい。

最後

下記サイトによると、未だトルコより日本を狙った攻撃が観測されているとのこと。

http://blog.abacustech.co.jp/blogx/entry/70

トルコは親日国だと思っていたが、私自身考えが変わった。トルコに限らず、親日・反日などと国単位で考えても意味がない(まあ当然の話だが)。自分以外の全ては敵なのだというくらいでなければ、自分自身のサイトは守れない。

とりあえず自分が運営しているサイトは、中国・韓国・台湾に加えて、トルコのIPアドレス帯もiptablesで全拒否にしておきます。

そして、今年のクリスマスは七面鳥を食べまくるよ! ターキー死ぬほど食うよ!!

トラックバック - http://d.hatena.ne.jp/cruel/20110225

2011年 02月 21日 ハクられた話は、落ち着いた頃にでも・・・

[] BaserCMS についての小ネタ

激しく間が空いたけれども、今回はBaserCMSネタを。Twitterでも書いたけれど、PivotXで作ってたサイトがハクられてしまったので、もうPivotXは使いたくない、というクライアントや私の個人的心情を踏まえ、BaserCMSに乗り換えるための作業を行っていた。

デザインや機能自体は、PivotXで実現していたものとほぼ同じものが2日(実質1日半くらい) でできたのだけど、若干デフォルトテンプレートコードを使うだけではうまくいかなかった点を備忘録としてメモしておく。

カテゴリーごとにバナー画像自動で貼りたい

単純に、各カテゴリーごとに表示させるバナー画像を変えるためのテクニック。たかだかそれだけのためにレイアウトファイルを複数作るのも無駄だし、現在のBaserCMSでページごとに特定のレイアウトを適用する為には、ソース表示をして

<?php $this->layout = 'layout_name' ?>

のようにコードを埋め込む必要があるため、詳しい人ならまだしも、あまり詳しくない人がこの作業を新規ページ作成の度に行うのも難しいだろうということで、以下のようなコードをlayouts/default.ctpに書いた。

ページカテゴリ名をcategory、ページカテゴリタイトルカテゴリーとした場合

<div>
	<?php
		$bannerimg = $baser->getContentsName().'.jpg';
		$category = $page->getCategory();
		$catname = $category['title'].'バナー';
		echo $html->image("$bannerimg", array('alt'=> "$catname", 'width'=> "700", 'height'=> "150"));
	?>
</div>

書き出されるコードはこんな感じ。

<div>
	<img src="/BaserCMS_DIR/app/webroot/themed/THEME_DIR/img/Category.jpg" alt="カテゴリーバナー" width="700" height="150" />
</div>

注意点としては、ページカテゴリ名が英文字の場合、先頭文字が大文字になるため、imgにアップする画像名も先頭文字を大文字にしなければいけない事くらいかな。画像以外にも、カテゴリをトリガーとして、何か変化を付けたい場合には応用できるかも。

カテゴリごとのローカルナビゲーションにアクティブ表示をしたい

自分がいるページを示すために、ローカルナビゲーションにid等を割り振ってCSSで表示を変えるというのはよく行われているけど、デフォルトローカルナビゲーション用コードでは、アクティブ表示ができないようだったので、coreから以下のファイルを持ってきて書き換えてみた。

・ elements/submenus/local_navi.ctp を、自分テーマのelementsにコピーして編集

<?php
$pageCategory = $page->getCategory();
?>
<?php if($pageCategory): ?>
<div id="local-navi">
	<?php $baser->element('page_list',array('categoryId'=>$pageCategory['id'])) ?>
</div>
<?php endif ?>

単純に<h2>が要らなかったので消しただけ。コメント部分は省略。

・elements/page_list.ctp を、自分テーマのelementsにコピーして編集

<?php
$pages = $baser->getPageList($categoryId);
?>
<ul>
<?php

$curcheck = $baser->getContentsTitle();

if(!empty($pages)){
	foreach($pages as $key => $page){
		$no = sprintf('%02d',$key+1);
		if($curcheck == $page['title']){
			$class = ' class="current"';
		}else{
			$class = ' class="page'.$no.'"';
		}
		if($this->base == '/index.php' && $page['url'] == '/'){
			echo '<li'.$class.'>'.str_replace('/index.php','',$baser->getLink($page['title'],$page['url'])).'</li>';
		}else{
			echo '<li'.$class.'>'.$baser->getLink($page['title'],$page['url']).'</li>';
		}
	}
}
?>
</ul>

このコードで、ページのタイトルが一致したら、該当の<li>にclass="current"が付き、それ以外にはpageXX(XXは連番) がクラスとして割り当てられる。idでもいいんだけど、元々がクラスだったので合わせてみた。(本当は番号のクラスも要らないけど、何かに使うかもということで、その部分のコードは元のまま残してある。要らなければelse以下を削れば桶)

レイアウトファイルからの呼び出しは、以下のようにする。

<?php $baser->element('local_navi') ?>

書き出されるコードは、こんな感じ

<div id="local-navi">
	<ul> 
		<li class="current"><a href="/BaserCMS_DIR/index.php/CategoryName/page01">ページ01</a></li>
		<li class="page02"><a href="/BaserCMS_DIR/index.php/CategoryName/page02">ページ02</a></li>
	</ul>
</div> 

これでカテゴリさえきちんと作っていれば、アクティブ表示も可能となる。

以上の事以外は、特に難しいことをしなくてもパンくずリストも出せるし、かなりテーマカスタマイズはやりやすかった。ただ、惜しむらくはIEで重いことかな・・・。何故か今回作った、カテゴリごとに画像を読ませるところで、画像表示が遅い。テーマの作りやすさや柔軟さ、各種機能と使い勝手は素晴らしいので、今後の改善に期待しています。

2011/02/28 追記(IE6への対応)

CSSの書き方にもよるのだろうけど、IE6ではクラスではなくIDアクティブとなる要素を指定しないとうまく動作しなかった。よって、elements/page_list.ctp を以下のように再度編集した。

・elements/page_list.ctp

<?php
$pages = $baser->getPageList($categoryId);
?>
<ul>
<?php

$curcheck = $baser->getContentsTitle();

if(!empty($pages)){
	foreach($pages as $key => $page){
		$no = sprintf('%02d',$key+1);
		if($curcheck == $page['title']){
			$class = ' id="current"';
		}else{
			$class = '';
		}
		if($this->base == '/index.php' && $page['url'] == '/'){
			echo '<li'.$class.'>'.str_replace('/index.php','',$baser->getLink($page['title'],$page['url'])).'</li>';
		}else{
			echo '<li'.$class.'>'.$baser->getLink($page['title'],$page['url']).'</li>';
		}
	}
}
?>
</ul>

先のコードではアクティブ要素以外に出力されていた連番要素も排除した。このコードでは以下のように出力される。


<div id="local-navi">
	<ul> 
		<li id="current"><a href="/BaserCMS_DIR/index.php/CategoryName/page01">ページ01</a></li>
		<li><a href="/BaserCMS_DIR/index.php/CategoryName/page02">ページ02</a></li>
	</ul>
</div> 

IE6以外のブラウザ(IE7IE8ChromeFirefoxOperaSafari) では、IDでなくクラスで正常動作した。

今時IE6への対応なんて必須じゃなくなりつつあるけど、それでも対応せざるを得ない場合があるので追記。ほんと、もう、やりたくないんだけどね・・・。

トラックバック - http://d.hatena.ne.jp/cruel/20110221
書いてるひと:くりゅえる