2009-08-22 1 views
5

私はリクエストされたページを持っています。私はCSS経由でユーザーをカスタマイズできます。ユーザーが外部のcss(myspaceなど)を追加してセキュリティを管理する方法

私はこれをやってうれしいですが、安全にする方法を見つけようとしています。 ページに適用されるスタイルシートはあまりありませんが、当初は、そのページがCSS拡張機能であることを確認しただけで安全であると思っていました。

しかし、私が行った研究によると、CSSはCSSで簡単にできることがわかります。 しかし、私はユーザーが外部cssを安全にインクルードできるようにする方法についてのリソースを見つけることができませんでした。

誰にでもこれに関する提案やリソースがありますか?

MySpaceはこれを他のいくつかのサイトと一緒に管理していますが、これを確実にする方法はわかりません。

私は外部のcssが行くページに「安全な」ユーザーデータを持っていません。しかし、私は検索のためのいくつかの変数を取得します。

---------------- slikyの応答後の追加データ----------------------

私はすべてのユーザーが外部のCSSを追加できるようにするつもりはありません。しかし、css変数は特別な修飾されたユーザーによって設定することができ、その変数が使用可能になると、本質的に誰もが好きなように設定することができます。その変数を使用するための唯一の方法は、URL自体を広げることです。そのため、おそらく私はセキュリティに心配しているかもしれませんが、私はそれを疑っています。

ページが外部スタイルシートで索引付けされないように設定できますが、エンドユーザーのセキュリティを維持する方法についてはまだ懸念しています。

私はので、私は別のCSSを有効にすることができ、ユーザーが自分のページ用に作成されたリンクを持っている場合にのみ、私はセットアップuseracctを、それが http://mysite.com/page?useracct=12343&extcss=http://location/of/css.css

だろう、私のサイトにリンクを持っているでしょう。私のサイトでは、cssページでそのユーザーアカウントにリンクします。

だから、誰かがちょうどしかし、彼らは危険なCSSを作成し、その人が転送場合、誰かがそのページになるだろう唯一の方法は次のようになり、リンク http://mysite.com/page?useracct=12343&extcss=http://new/dangerous/css.css を作成することができます一緒に来ると http://mysite.com/page?extcss=http://new/dangerous/css.css

を言うことができませんそのリンクに沿って。

私はextcssをハッシュして塩漬けすれば、より安全になると思います。多分それが行く最善の方法ですか?

答えて

4

CSSライブラリがある言語を使用するか、CSSからASTのような構造を作成して悪質なものをチェックするためのパーサーを作成します。

これは、divサイズ(ページ全体を包むようなもの)、フローティングとzオーダーのようなものは、扱いにくく、提供できる値の範囲を持つ必要があるかもしれません。

素敵なアイデア

CSSに変換することができるXMLベースのテーマスキーマを作成します。ユーザーが画像+ XMLをアップロードしてテーマを生成できるようにする。

XMLは簡単に制御できます。

PHP CSS ParserPython CSS parsing

グッドラック

+0

非常に有益な応答アイデンと、CSSパーサーのリンクに感謝します。私はユーザーがxml +画像をアップロードしたとは思っていませんが、実際に探しているものです。シンプルなスタイルを適用しようとすると、ポジショニングのために、私はいつもスタイルシートを含めています。すべての要素の位置がユーザーの投稿に設定されているので、浮動/ Zインデックスなどの問題を処理します。ほとんどの場合、調整可能なマイナーサイジング、カラー、背景画像です。 「これは聞こえないほど難しいかもしれない」と太鼓をかけた「Good Luck」では、これをやってはならないかもしれないと示唆していますか? – pedalpete

+0

あなたがユーザーにcss(またはそのような内容についてのコンテンツ)をアップロードさせてしまうと、大事なことや他の不明瞭な事があなたを噛むことがあります。それはほぼ数学的になります...あなたがブロックし、それが動作することをテストするために利用可能なすべての構文の順列を試してください。入力を消毒することがどれほど重要であるかにかかっています...もしそれが友人のための小さなサイトであれば、少しリラックスすることができます:)私は言う! –

2

効果的にCSSの追加を可能にするために自分自身の言語を持つことは良いように思えるかもしれませんが、あなたはまだ、必然的に彼らはただ書くせると同じ問題で終わる可能性があります何か(外部ファイルの読み込みなど)、傷ついている世界にいてください。

セキュリティの観点から見れば、より良いモデルは、カスタマイズしたいものを正確に考え、それらのものだけを編集できるようにすることです。

だから、あなたが設定する能力を提供することができる:

  • 画像の様々なものを
  • その他、各種
  • Twitterにフォントを

    • 背景色
    • (最後の時間、私はとにかくそれを使用しました)これを行うための素晴らしい方法がありました。その結果、サイトはカスタマイズ可能ですが、IMHOは標準の外観を維持していますそうだ。

    +0

    私はあなたと絹のようなことに同意しますが、ツイッターのようなデザイン管理システムを作成する作業はむしろ難しいことです。私は設計やレイアウトの改良を私ができるよりもうまくいくと思う少数のユーザーにしか機能を提供しません。私のセキュリティ上の懸念は、これらの特別なユーザーにCSSを追加する機能を提供すると、基本的に誰もが独自のCSSを設定するために変数を使用できることです。彼らは、そのURLを送信する必要がありますが、彼らはそれが増殖するために作成しました。私は外部のCSSが設定されているときにインデックスを設定することはできませんが、自分が何を取得しているかについてはまだ懸念しています。 – pedalpete

    +0

    twitterのやり方はかなり簡単です。特定のものを許可するだけです(私が言ったように)。また、選択のためのクールなインターフェースが必要な場合は、jQueryが必要なものを提供します。 –

    0

    CSSが任意のJSを実行できる方法はたくさんあります。あなたは柔軟なCSSパーサや消毒剤が必要な場合は、CssValidatorを見てみることができますし、それに関連するテストは、それが何をするかのいくつかを示し

    参照してください。 CssValidatorTest

    関連する問題