POPSブログ

CTPファイルを隠す方法

12

  Category:  basercms2012/02/02 pops 

CTPファイルを見られないように隠す方法の記事がありました。参考にして違う方法で処理しました。


CTPファイルを隠す方法


CTPファイルはHTMLを記述したPHPファイルなのですが、webroot以下の階層にあると外部から表示できてしまいます。themed配下のファイルが閲覧可能になるため、phpコードなど記述している場合には困ることもあります。
これに対処する方法です。以下の参考記事よりの引用です。


【参考】ECWorks Blog: BaserCMSテーマファイルを安全に配置する方法

#インストールしているPHP環境によって書き方が違うかもしれない(下記はPHP5用)


AddHandler php5-script .ctp
AddType text/html .ctp

上記のような対処方法があるそうです。


上記記事を参考にして、私の場合はこのようにしています。上のAddHandler...などの .htaccessファイルは作りません。
単独で実行したら見られて困る「ctpファイル」の先頭に「無意味なbaser関数コール」を書きます。php的にも間違いな書き方ですが、通常はエラーを起こしませんが単独だとエラーを起こして停止します。中身コードを見ることもまた表示も出来ません。
単独PHP実行で読み込まれていない、CackePHP関数をコールしますので当然エラーになるわけです。


記述の例

何らかのctpファイル先頭に無意味な関数実行を入れる。ここでは getRoot() を入れた。(何も書き出さない関数なら何でも良いし、何もしない関数を作って呼び出しても良い)


<?php
/**
 * デフォルトレイアウト
 */
?>
<?php $baser->getRoot() ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
以下略す

本来は
<?php $baser->xmlHeader() ?>
IE6で互換モードになるため削除した、JSの関連で標準モードで動かしたいため
変わりにwebrootを取得する何の意味もない呼び出し
<?php $baser->getRoot() ?>
がある

正常な処理途中では作動するが、単独でよびだされればエラーになる
何もHTMLとしては吐き出さないからDOCTYPEの前には何も書かない
何か書き出されればIE6は互換モードになってしまう


<?php
/**
 * サイドバー2
 */
?>
<?php $baser->getRoot() ?>
<div class="widget align-center">
<img src="/main/images/baner002.gif" width="260" height="80" alt="" /">
</div>

<!-- begin teiban -->
<div class="widget widget_image">
<h2>POPS特集記事一覧</h2>
<p class="bold"> 通常ページ特集記事</p>
以下略す

PHPを書いてるのでどうしても見られたくない所のみ処理しました。(全部公開されているCMSですから意味あることでは無い、判るひとは皆わかる)


エラー処理なしのPHP実行ですから、良い処理ではありません。実際単独で呼び出されるのは悪意を持ってでなければ有り得ませんが、、



[ この記事のURL ]


タグ:basercms , memo

 

ブログ記事一覧

年別アーカイブ一覧



[1]