現在、ブログタイプのWEBアプリを開発中です。
主にPHPのプログラミング側がメインで、CSSはまだこれから勉強している段階です。
アプリ内で、ユーザーが自由にCSSを編集してデザインを変更できるようにしたいのですが、
その際に、セキュリティ上禁止すべき属性、文字列などあれば教えていただきたいと思い、質問させていただきました。
自分で調べたものについては、
@import や expression などが該当することはわかったのですが、まだ勉強不足ですので他にもいろいろあると思います。
どうかご教示いただけたらと思います。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
URL() で外部のドメイン(サーバ)へのアクセスが出来れば、何でもアリになりますが・・・。
なにせサーバの設定次第・・・。CGIの起動も・・・。
>ブログタイプのWEBアプリ
拡張子はサーバの設定次第。
アプリで制御するなら・・・。
1.CSS等の完全更新禁止。不自由だけど安全。
2.CSSのパターン選択方式。不自由だけど安全。
3.CSS作成,更新ツールによる、機能選択方式。ほとんどホームページ作成ツールの様な・・・。
4.危険は覚悟で、自由更新。一応、”URL(”という文字列のみ入力禁止に・・・。とりあえず別ファイルのアクセスだけは回避できる。
5.別サーバへのアクセスを禁止する。絶対アドレスを禁止してみたり、ドメインを確認して特定のドメインのみ許可するとか・・・。
尚、ブラウザ自体にCSSに対するバグがあります。悪意はなくとも特定のブラウザで不適切な表示(動作)になる物もあります。意図的にバグ等を利用してブラウザを振り分けるという技術もあります・・・。
効果に対して、手間と利用者のデメリットが大きいと思いますが・・・。「ブログタイプのWEBアプリ」なら本文の方がもっと・・・。
結局、サーバの設定も絡んでくるので、下手に配慮したつもりになると、効果に対して過剰な制限となったり、抜け道があったり・・・。
むしろ、特定の機能のみ設定可能の選択式として、CSSを更新可能にするのが良いのでは?
一部機能の制限ではなく、逆に一部機能のみ可能と・・・。
回答ありがとうございます。
ブラウザのバグについては、正直難しいところがあると思うので、現時点ではそこまで考えていません。
本文については、ホワイトリストで、指定タグ、指定属性のみ許可する形にしています。<>内に指定外の文字列があれば<>を特殊文字に変換します。
CSS内の外部ファイル読み込みですが、
url()内が http:// で始まり、画像拡張子で終わる(gif,jpg,pngなど)の場合のみ許可、という形だとどうでしょう?
この場合、サーバー設定をどうしているとCGIやJavascriptを実行されてしまうのでしょうか?
セキュリティはどんどん新手の攻撃手法がでてきますので、100%対処し続けることは難しいと思いますが、できることはしたいと考えております。
url()についていろいろテストなどしてみることにしてみます。
ありがとうございました。
No.6
- 回答日時:
>サーバーは、専用サーバー
「http:// で始まり」という事で、外部のサーバという事と認識していたのですが・・・。
となると、そもそもチェックが「http:// で始まり」でなく、「特定のドメインであるか」という事になるはずですが・・・。
いくらソースのあるサーバを管理していても、別のサーバを参照する記述を書かれれば、そこは管理外・・・。
質問内容に「ブログのCSSの編集」と書いたので、そう捉えられて当然ですね。
誤解を与える書き方で大変申し訳なく思います。
こちらの正しい意味としては、CSS全般ということでしたので、ブログCSS編集にとどまらず、タグ内の style="" も含めたCSSに関するものということでした。
おっしゃるように、自分のブログのCSSの編集の中に他のサーバーにおいてある画像を読み込む(直リンク)ようにするのは許されませんね。 この場合は、自分のドメインのみ、とチェックすることで問題なくなりそうですね。
先ほど申し上げたのは、とりあえずサーバーや入力媒体を考えず、純粋にCSSのみでのurl()の取り扱い、という意味で、書きました。
ブログCSS内のurlに関しては、自ドメインのみとして、なんとかなりそうですね。(当然のことながら)
鋭いご指摘、本当にありがとうございました。
No.5
- 回答日時:
>サーバー設定をどうしていると
・・・。単に gif という拡張子はCGIですという設定をすればそうなるだけで・・・。
htm とかの拡張子も、単に元々それはHTMLですという設定がされているからHTMLとして扱われている訳で・・・。
その上、CGIはサーバ側で動作しますから、呼ばれたら後はそのサーバ側次第と・・・。
.htacessなどを用いられる環境であれば、容易にサーバの設定(一部)は変えられます。
という事で、サーバも管理し、gif は画像であるという設定をして、且つその設定の変更を許さないという前提でないと、拡張子を以って内容を判断する事は不可能です・・・・・。
補:index.htm というCGIがあっても、普通の事です。拡張子でそれが何か判断する事は危険です。
回答ありがとうございます。
なるほど、その部分なんですね。
サーバーは、専用サーバーですべて管理下にありますので問題はないと思われます。
そのあたりもしっかりチェックしていこうと思います。
いろいろとアドバイスありがとうございました。
No.3
- 回答日時:
>個人的意見ですが、悪用できるなら(他の人が安全に利用できないなら)、サービスを一部制限するなどは必要だと考えています。
まぁ、確かにデザインに差し支えなければ制限は問題ないでしょうね。
>拡張子がgifなだけで 中はjavascriptのコードが書かれていたら実行されてしまうのでしょうか。
JavaScript のコードが書かれていても、スクリプトの関数を呼び出せなければ実行できないと思いますよ。
多分 script タグを使わなければ無理でしょう。
(但し script タグそのものを禁止するとアクセス解析などが利用できなくなるから、そこらへんは考慮しておいたほうがいいと思います)
ただ先ほども申し上げたことと重複しますが、ブラウザをクラッシュさせるようなスクリプトを仕込む人は、
レンタルサーバーよりもアップローダーや掲示板など責任逃れできる場所を狙うのが大半です。
自分の“不健全な”サイトに仕掛けた場合よりも、他人の“健全で”人の集まりやすい場所を狙う場合のほうが効果的だからです。
被害は絶対に後者のほうが大きくなるだろうと思いますよ?
むしろブログコメントなどのほうを規制したほうが効果的かもしれません。
掲示板と同じ理屈で、人気ブログのコメントにでも危険スクリプトを仕込めば、
計算上はかなりの被害を出すことが出来るようになると思います。
ついでに言えば、一般的な CSS の組み合わせでもブラウザのクラッシュ現象は発生します。
http://www6.atwiki.jp/uriaplus/pages/33.html#ex1
早い話 100% 確実にしたければ、JavaScript はもちろんの事 CSS そのものも禁止することが何より効果的ってことです。
…何かいじめてるみたいに厳しいことを言ってすいません(^^;
引き続きご回答ありがとうございます。
ブログなどは自由度と安全性はトレードオフな関係になると思います。
過去にアメブロを利用したことがありますが、Javascriptは完全に使えませんでした。
CSSは知識がなかったので触ってないですが、ファイル内容をごそっと編集できたと思います。
おっしゃるように、自分のサイト内での悪用と、他者サービス上での悪用は後者のほうが多いのは確かですね。
一応、コメントについては、すべてタグは禁止してます。
安全のためにすべて禁止するというのは、理解していますが、その中で少しでもユーザーに自由にできる範囲を広げたいと模索している状態です。
ブラクラは、その場1度きりの被害ですし、後で通報すれば、強制削除などで対処できますが、セッションハイジャックなどでユーザー情報が漏れるのが一番怖いですね。
No.2
- 回答日時:
どんなものでも使い方次第で危険なものとなり得るんじゃないかなと思います。
例えば background:url(); なんていう方法で JavaScript を読み込ませる事だってできるわけだから、
それを禁止しますって言ったらユーザーはかなりデザイン選択の幅が狭くなります。
(ちなみにコレを応用すれば一部の古いブラウザをクラッシュさせることもできます)
そんな時あなたはどうしますか?悪用可能だから禁止するのでしょうか?(^^;
厳しい言い方で申し訳ないですが、ある程度寛容にならないとユーザーも獲得できません。
まぁ、ブログというものは自分が借りたスペースで行うものですから、あまり危険行為を行うユーザーはいないと思います。
人の掲示板などへ書き込む場合よりもある程度重い責任を負うことになります。
危険行為を行った場合、多分レンタル元の業者側からサービスを強制的に停止されますよ。
ご回答ありがとうございます。
お答えいただいた後に、No1さんに補足したので、また違ったアドバイスをいただけたかもしれませんが、
おっしゃるように主にJavascriptの対策を考えています。
個人的意見ですが、悪用できるなら(他の人が安全に利用できないなら)、サービスを一部制限するなどは必要だと考えています。悪用されウイルスや情報漏洩が起きるシステムは、スパムの中継サーバーと同じようなものだと思います。
background:url(); については、正規表現で調べます。
url(javascript:...)なんてものは当然ダメですし、少しテストしてみますが、URLは http://..../abc.gif というファイルで、拡張子がgifなだけで 中はjavascriptのコードが書かれていたら実行されてしまうのでしょうか。
とりあえず、url()指定できるものは注意する必要があるということですね。ありがとうございました。
No.1
- 回答日時:
>セキュリティ上
言葉の意味が広すぎるので、提示しにくいです。
例えば、背景色と文字色を同じにすると隠しとか出来、その辺の事も含めているのか。
フォント関係の指定で文字化けしやすい注意箇所がありますが、文字化けによりページ自体が変に表示され動作が保障されない事も含めてセキュリティと考えているのか・・・。
考え方によっては、「ユーザーが自由にCSSを編集」がツール等による選択式でない限り、不安要素は少なからずあります。範囲,程度問題ですが。
よって、「セキュリティ上禁止」という単語でなく、内容(理由などの詳細)を再提示される事をお勧めします。
この回答への補足
ご回答ありがとうございます。
おっしゃるとおり、「セキュリティ上」では範囲が広すぎますね。
私的には、デザイン上での問題(レイアウトがくずれたりなど)に関しては、あまり問題視していません。
やはり対策を講じたいのは、Javascriptが実行されてしまうようなものです。クロスサイトスクリプティングやセッションハイジャックにつながるようなものを排除したいと考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS お金をあまりかけずにプログラミングを勉強する方法を教えてください。 こんにちは。 Webデザイン系の 3 2022/08/05 03:22
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- ホームページ作成・プログラミング web制作(HP作成について教えてください) 閲覧ありがとうございます。 今、WEB制作の勉強をして 2 2023/04/13 07:23
- その他(ブログ) シーサーブログのタイトル文字位置とブログ説明文字位置の変更方法 2 2022/09/22 20:55
- アプリ Webやアプリの制限が可能なWindowsアプリケーション 4 2022/11/10 12:13
- HTML・CSS ワードプレスで太字が反映されません PC(MacBook)の画面上には、太字は反映されるのに、スマホ 3 2022/12/18 18:56
- Web・クリエイティブ 独学でwebデザイナーを目指すには 2 2022/09/17 16:27
- HTML・CSS 検索窓とcssハックについて 3 2022/04/22 12:21
- その他(プログラミング・Web制作) ワードプレスのプラグインであるAddQuicktagを使いたいが… 3 2022/04/18 15:03
- Ameba(アメーバブログ) アメブロ テンプレート 1 2022/06/27 00:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<!DOCTYPE html>あってますか?↑
-
htmlの文字が縦書きになる
-
テーブルの行を折りたたみたい...
-
HTMLを正しく表示させるには
-
、URL化させるにはどうしたらい...
-
コードを書いて下さい( ; ; )...
-
HTMLですCSSです この画像のよ...
-
Duolingo のソースコードの名前...
-
CSS、Bootstrapについて contai...
-
メモ帳の段落の揃え方
-
詐欺メールがまた来ました。5月...
-
【CSS】:hasで可能? imgを含む...
-
goo は、放置?
-
CSSについて教えてください。 ...
-
WEBページを強制的に横画面で見...
-
ウェブサイトにアップされてい...
-
HPレイアウトが同じページのヘ...
-
htmlソース文の 各行 改行位置...
-
css初心者 フレックスボックス...
-
ボタンが押されたらWebページの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
テーブルのセルデータを自動改...
-
goo は、放置?
-
htmlソース文の 各行 改行位置...
-
1つの「ホームページビルダー2...
-
HPレイアウトが同じページのヘ...
-
CSS、Bootstrapについて contai...
-
CSSについて教えてください。 ...
-
静止画画像をクリックすると音...
-
、URL化させるにはどうしたらい...
-
テーブルの行を折りたたみたい...
-
css初心者 フレックスボックス...
-
WEBページを強制的に横画面で見...
-
Webページのリンクの貼り方を教...
-
Duolingo のソースコードの名前...
-
メモ帳の段落の揃え方
-
スマホ(android)のタッチパネ...
-
コードを書いて下さい( ; ; )...
-
HTMLで画像をポップアップで表...
-
角丸画像の背景色を透明にした...
おすすめ情報