2012-09-12 83 views
0

我試圖阻止可以分發URL的插入iframe(包含假登錄屏幕)到使用JavaScript中的PHP網站的URL的攻擊。有什麼方法可以在PHP加載之前清除頁面的URL?防止iframe通過url注入?

的URL看起來是這樣的:login.php?login_nav_map=%2Fv3%2Farchives%2Findex.php%22/%3E%3Cimg%20src=%22no.jpg%22%20onerror=%22document.write%28String.fromCharCode%2860,99,101,110,116,101,114,62,10,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,119,111,114,108,100,116,118,112,99,46,99,111,109,47,98,108,111,45,99,111,110,116,101,110,116,47,117,112,108,111,97,100,115,47,50,48,49,49,47,48,56,47,97,98,99,45,111,110,108,105,110,101,45,116,118,46,106,112,103,34,47,62,60,98,114,47,62,10,60,104,49,62,65,100,

與焦炭代碼插入一個iframe到我的網頁,我不想在那裏。

回答

2

你的問題真的很混亂,所以我會盡量回答幾個問題,希望它有幫助。

您有一個網頁,您不希望人們在iframe中加載。

使用框架細分腳本,通常像

if (top.location != location) { 
    top.location.href = document.location.href ; 
} 

你有一個網頁,人們可以發佈的東西,你不希望有人在iframe代碼輸入,它在加載框架你的頁面。

消毒輸入。看看htmlentities。這會將<>(及其他)轉換爲其HTML實體,以便在頁面上顯示所有內容,但瀏覽器不會將任何標記解析爲代碼。沒有更多<script>,它會顯示爲只是而不是執行裏面的代碼。

您有一個網站,其中的URL參數意味着代碼中的某些內容,並且您不希望有人將惡意URL作爲參數。類似於http://mysite.com?foo=bar&url=somebadwebsite.com/virus.php

您應該有一個要阻止的URL或域黑名單。查看parse_url以獲取URL的各部分,並且您可以使用in_array來查看host是否列入黑名單陣列。

您有一個網站,其中的URL參數控制着頁面的內容。類似於http://mysite.com?foo=bar&title=Hello,它在頁面上顯示「你好」。你不希望有人在那裏注入JS和你的頁面來執行它。

這樣做通常是一個壞主意。在這種情況下,您應該有一個可能值的白名單。

$value = $_GET['title'] 
switch ($value) { 
    case 'Hello': 
     // do something for hello 
     break; 
    case 'Goodbye': 
     // do something for goodbye 
     break; 
    default: 
     // do something if it's something you don't expect/want as input 
} 
+0

我不知道如何在實際的url上使用htmlentities。我將編輯我的問題來澄清一點 – Damon

+0

我已經添加了一個我嘗試阻止的URL類型的示例。沒有基於參數的內容。一個網站的黑名單似乎無法維護,我正在考慮一種方法來從任何頁面的url中取消htmltags和js – Damon

+0

有沒有一種常見的解決方案來防止這種事情。是否有可能在大多數網站上進行這種欺騙?我很驚訝,我沒有找到關於這種特定類型攻擊的更多資源。 – Damon