0

我在我的PHP代碼中使用了mysql_real_escape_string()Htmlspecialchars()函數,以確保它免於sql注入和XSS。 有沒有可能破解這些功能? 如果是的話,你能描述一下怎麼做才能改進我的代碼。是否有可能破解mysql_real_escape_string()Htmlspecialchars()?

非常感謝。

+4

htmlspecialchars絕對**沒有任何**與SQL注入防止做。這就是爲什麼有m_r_e_s(),並且沒有,沒有任何惡意用戶可以做到解決它的問題。現在,如果您使用的是addslashes,那麼是的,您可以完全繞過您使用addslashes創建的任何溼紙巾安全系統。同樣的,m_r_e_s()與xss預防完全沒有關係。你正在混合兩個完全不同的東西。 –

+0

使用htmlspecialchars只是在回聲的時候html和mysql_real_escape_string只是在輸出sql時..不要一起使用它們 – Esailija

+0

@MarcB:我曾遇到一個系統,它存儲'addslashes(htmlentities(m_r_e_s($ rata)))''到數據庫。貨物崇拜節目是痛苦的。 – DCoder

回答

1

如果你的PHP已更新嘗試使用庫MySQLi或PDO和prepared statements

但是,爲了回答你的問題,是mysql_real_escape_string()可以注入,但它是非常複雜的這樣做。這裏有一個example

0

你想要做的第一件事是防止SQL注入使用PDO和準備好的語句。或者至少Mysqli,因爲mysql被棄用,遷移到mysqli是非常非常容易的,並且它被優化

如果你使用mysql_real_escape_strings你應該是安全的,只要你正確地轉義和無論你真正需要它,記住在大多數情況下錯誤是人爲的一面,而不是因爲功能:P

相關問題