我正在爲一所大學開展項目。在每門課程中,教師都可以輸入他們希望學生看到的鏈接。老師也可以允許學生自己發佈鏈接。用戶在PHP中提交的鏈接的安全規則
但是,您可以從字面上輸入任何內容到文本字段中,這意味着您可以發佈惡意鏈接,當然我不希望這樣。
什麼是一些很好的「規則」,以防止發佈任何內容?例如:我在想也許在字符串的第一部分搜索「http://」,以確保它不是JavaScript或其他東西。
在此先感謝。
我正在爲一所大學開展項目。在每門課程中,教師都可以輸入他們希望學生看到的鏈接。老師也可以允許學生自己發佈鏈接。用戶在PHP中提交的鏈接的安全規則
但是,您可以從字面上輸入任何內容到文本字段中,這意味着您可以發佈惡意鏈接,當然我不希望這樣。
什麼是一些很好的「規則」,以防止發佈任何內容?例如:我在想也許在字符串的第一部分搜索「http://」,以確保它不是JavaScript或其他東西。
在此先感謝。
您可以使用正則表達式測試輸入值。
這裏是一個將匹配任何有效的URL地址,並沒有別的:
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
這裏是你如何在PHP中使用它:
function validateURL($url)
{
return preg_match("/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", $url);
}
此功能似乎不喜歡問號。例如: 'http:// www.hv.se/index.php'沒問題,但不是'http://www.hv.se/index.php?'或'http://www.hv。 SE/index.php的?等等= blah'。 – Saser 2011-06-17 09:00:01
是,檢查的URL前綴肯定會幫助。同時檢查有效的URL字符。 http://phpcentral.com/208-url-validation-in-php.html
希望幫助 -
它可以與PHP和正則表達式容易做到。
我不知道就可以了,因爲如果有人真的想傷害,他或她可以創建一個普通的網頁重定向到惡意的一個......以保護,最好的辦法是:
htmlentities
來防止人們在字段中輸入javascript,並確保字符編碼良好。您仍然可以編寫javascript:URL! – 2011-06-19 02:57:04
我會用strip_tags和htmlentities,然後將使用的preg_replace的<a>
中的任何鏈接。
當然,您應該確保鏈接在顯示時會被轉義(使用htmlentities()
並以utf-8作爲字符集)。
確保在開始處有一個http://當然是避免在用戶單擊鏈接時執行javascript的好主意。
之後,避免人們發佈惡意鏈接的做法並不多。
谷歌重定向到一個頁面第一,與鏈接,並警告用戶,他將被重定向到一個潛在的惡意網站。
試圖過濾輸入將被證明是徒勞無益的,因爲它是微不足道的繞過,你需要問責制。由於上下文是大學課程,因此您有一個相對較小的團體,具有可驗證的身份 - 這使問責變得非常簡單。
只要確保用戶的名字與他們發佈的鏈接相關聯,並提醒人們保護他們的登錄憑證的重要性。
如果有人發佈不適當的材料,那麼他們的帳戶可以被暫停或只讀,或採取其他措施。
我在想也許在字符串的第一部分搜索「http://」,以確保它不是JavaScript或其他東西。
如果是https://
怎麼辦?如果網址包含&
字符,該怎麼辦?
通過htmlentities運行輸入。這將保護您免受破壞HTML的代碼(既有意也無意)。
這是什麼問題? :)
我的意思是:
$link = htmlentities($_POST['link']);
$link = str_replace('http://','',$link);
$link = 'http://'.$link;
echo $link;
其他傷心......你是在人的賬戶轉了一圈,剛推入DB什麼人做一個datetime和你總是會知道是誰,是什麼,當;)
歡迎來到可怕的,可怕的正則表達式世界。你可以在這裏查看它:http://www.regular-expressions.info/php.html – John 2011-06-16 14:10:29
如果有人發佈'http://nastypornsite.com'會怎麼樣?完美的「良好」的鏈接,但不是你想在教育論壇發佈的東西。你想要走多遠的驗證兔子洞? – 2011-06-16 14:14:17
我正在考慮混合使用正則表達式,並針對發佈不適當鏈接的用戶採取措施。在我16歲的時候,這是我第一份暑期工,我只在四天前從這裏開始,我還沒有進入這個系統,我會在這裏與工作人員聽到我們可以採取什麼措施。 – Saser 2011-06-17 08:24:52