我在我的PHP代碼中使用了mysql_real_escape_string()
和Htmlspecialchars()
函數,以確保它免於sql注入和XSS。 有沒有可能破解這些功能? 如果是的話,你能描述一下怎麼做才能改進我的代碼。是否有可能破解mysql_real_escape_string()Htmlspecialchars()?
非常感謝。
我在我的PHP代碼中使用了mysql_real_escape_string()
和Htmlspecialchars()
函數,以確保它免於sql注入和XSS。 有沒有可能破解這些功能? 如果是的話,你能描述一下怎麼做才能改進我的代碼。是否有可能破解mysql_real_escape_string()Htmlspecialchars()?
非常感謝。
如果你的PHP已更新嘗試使用庫MySQLi或PDO和prepared statements
但是,爲了回答你的問題,是mysql_real_escape_string()可以注入,但它是非常複雜的這樣做。這裏有一個example
你想要做的第一件事是防止SQL注入使用PDO和準備好的語句。或者至少Mysqli,因爲mysql被棄用,遷移到mysqli是非常非常容易的,並且它被優化
如果你使用mysql_real_escape_strings
你應該是安全的,只要你正確地轉義和無論你真正需要它,記住在大多數情況下錯誤是人爲的一面,而不是因爲功能:P
htmlspecialchars絕對**沒有任何**與SQL注入防止做。這就是爲什麼有m_r_e_s(),並且沒有,沒有任何惡意用戶可以做到解決它的問題。現在,如果您使用的是addslashes,那麼是的,您可以完全繞過您使用addslashes創建的任何溼紙巾安全系統。同樣的,m_r_e_s()與xss預防完全沒有關係。你正在混合兩個完全不同的東西。 –
使用htmlspecialchars只是在回聲的時候html和mysql_real_escape_string只是在輸出sql時..不要一起使用它們 – Esailija
@MarcB:我曾遇到一個系統,它存儲'addslashes(htmlentities(m_r_e_s($ rata)))''到數據庫。貨物崇拜節目是痛苦的。 – DCoder