7

私のウェブサイトには、メンバーが自分のプロファイルでcssを賢く変更できるようにするテキストボックスを含めたいのですが、ある朝起きて、自分のサイトがハッキングされたり、誰かがタイプミスしたりしたことを知りたくありません。そして、すべてを破壊したり、すべきでないものにアクセスしたりしました。

入力したテキストがcssのみであることを確認する簡単な方法はありますか?ここで同様の別の質問を見ました。XSSチートシートと無効にするためのヒント(<と]]>と<![)がありましたが、それで十分かどうかはわかりません。私は間違いなくその情報を使用します。

基本的に、PHPにカスタムcssを呼び出させ、ユーザープロファイルのスクリプトタグの間に挿入したいと思います。できるだけ多くのCSSを許可したいと思います。これはそれについて行くための最良の方法ですか?安全なファイルを生成するためのシステムを構成する方法や、オプションを使用してセクション全体を構成するための忍耐力がありません(特に、メンバーにプロファイルの自由度を高めたいため)。

アドバイスをいただければ幸いです。これを実行するスクリプトを誰かが知っていれば、それも揺るぎないものになり、何をすべきかを理解するのに役立ちます:D。

4

3 に答える 3

6

ユーザーがログインしたら、<link>そのユーザー用に別の要素を追加します。href は、ユーザーの css を生成するスクリプト ( customcss.php?userid=1234&version=2*) などを指すことができます。スクリプトは、ユーザーが以前に入力したすべてのものを返すだけで済みます。別の CSS ファイルとして囲むため、ブラウザは常にそのように扱い、スクリプトを実行することはありません。HTML または Javascript は無効な CSS として扱われます。

ただし、スクリプトはログインしているユーザーのブラウザでのみ実行されるため、スクリプトを含めても害はほとんどないことに注意してください。そのため、サイトの独自のビューをハッキングすることしかできません。Javascript を挿入したい場合は、独自のブラウザー プラグインを作成することでそれを行うことができるため、以前にはなかった可能性が開かれることはありません。

あなたが心配する必要がある主なことは、

  • 使いやすさ。ユーザーが誤って Body 要素を非表示にしてしまった場合はどうなりますか。彼らはどのようにそれをリセットすることができますか?
  • SQL インジェクション。あなたが何をするか、または許可しないかに関係なく、常にあなたの入力がサナタイズされていることを確認してください.
  • PHP インジェクション。ユーザー コンテンツを実行 (評価) しないでください。これまで。
  • ユーザー情報を非表示にします。customcss.php の URL にコードを追加して、他のユーザーがユーザー ID を推測できないようにし、他のユーザーのカスタマイズに関する洞察を得ます。

*) CSS URL にバージョン番号を追加しました。これは、ユーザーが CSS を更新するたびにデータベースで更新する必要があります。そうしないと、ブラウザーは古い CSS をキャッシュし、変更が表示されないため、ユーザーから苦情が寄せられます。

于 2012-12-14T10:42:34.950 に答える
3

これで十分だと思います

$style = $_POST['style'];

$style = strip_tags($style);

    $forbiddenStuff = array(
        '-moz-binding',
        'expression',
        'javascript:',
        'behaviour:',
        'vbscript:',
        'mocha:',
        'livescript:',
    );

    $style = str_ireplace($forbiddenStuff, '', $style);

$style を db に保存し、ユーザー プロファイルでレンダリングします。

このソリューションは、有名なソフトウェアからコピーされたものであり、大きなコミュニティがあることに注意してください。これが完璧であることを願っています.

于 2012-12-14T10:41:41.703 に答える
-3

おはMySpace…</p>

ユーザーが Web フォームから色と画像を指定できるようにし、そこからユーザー固有のスタイル シートを作成するだけです。ユーザーが独自の CSS 全体を指定できるようにすることは、見苦しい、見苦しいページにつながるだけです。参照: MySpace 1.0。

于 2012-12-14T11:27:50.870 に答える