2

デフォルトのテンプレートと、home.ctp という名前のビューがあります。

ユーザーがホームページを呼び出すと、ホームビューdefault.ctp 内でレンダリングされます。

私の見解では:

<?php

$this->set('title', 'This is the title');

$this->set('description', 'This is the description');

...
?>

私のdefault.ctpには次のものがあります。

<title><?php echo $title; ?></title>
....

<meta name="description" content="<?php echo $description; ?>">
....

正しく動作しますが、これは CakePHP でタイトルとメタタグを追加する正しい方法ですか?

ありがとうございました!

4

1 に答える 1

4

いいえ

これは、タイトル変数と説明変数を出力する安全な方法ではありません。

Cake には、ドキュメントから抽出したメタタグを出力するためのヘルパー関数があります。

<?php
echo $this->Html->meta(
    'description',
    'enter any meta description here'
);
?>
// Output
<meta name="description" content="enter any meta description here" />

あるいは

上記の関数を使用する必要はありませんが、使用しない場合は、変数をエスケープするように注意する必要があります。これで何が起こるか考えてみましょう:

$description = 'something with a "quote in it';

やみくもに変数をエコーすると、不正な形式の html を作成したり、インジェクション攻撃を許可したりすることになります。そのため、エスケープ$titleして$description適切に実行すれば、問題のコードを使用してもまったく問題ありません。

<title><?php echo htmlspecialchars($title); ?></title>
....
<meta name="description" content="<?php echo htmlspecialchars($description); ?>">
于 2012-12-29T10:50:37.117 に答える