正如它在標題中所說的那樣,如何判斷mysql_real_escape_string是否正在運行而不會等待被黑客攻擊?如何判斷mysql_real_escape_string是否正常工作
2
A
回答
2
檢查你從它得到的值。
發送一些文字,應該逃避,如Ed O'Neil
(應該回來爲Ed O''Neil
或Ed O\'Neil
)
1
創建一個單元測試,將它應該逃避所有字符,並檢查其輸出。
但是: 爲什麼不簡單地在PDO中使用參數化查詢? 像:
$dbh = new PDO([...]);
$sth = $dbh->prepare("SELECT foo FROM bar WHERE baz=:baz");
$sth->execute(array(":baz" => $mybaz));
這是最安全的方式,並感謝PDO它幾乎和Perl一樣容易。
1
要擴大什麼'河。 Bemrose'提供,這裏有一些示例代碼可以做到這一點。一定要用你自己的替換mysql憑據。
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
$user = "Ed O'Neil";
$password = "SQL_INJECTION ';'alter table xyz';";
// Query
$query_safe= sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
// Query
$query_not_safe= sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
$user,
$password);
echo $query_safe."\n";
echo $query_not_safe;
?>
相關問題
- 1. 如何判斷OpenShift上的cron作業是否正常工作?
- 2. 如何判斷ASP.NET模擬是否正常工作?
- 3. 如何判斷NSURLCache是否正常工作?
- 4. 我如何判斷ajax是否工作?
- 5. mysql_real_escape_string()無法正常工作?
- 6. 如何判斷我的星火工作是否正在進行?
- 7. 如何判斷我的端口掃描器是否正常工作?
- 8. 爲什麼mysql_real_escape_string()不能正常工作?
- 9. 如何判斷OpenMP是否在我的C++程序中工作
- 10. 如何判斷Proguard是否已完成其工作
- 11. 如何判斷Excel工作簿是否受保護
- 12. 如何判斷Spark工作是否成功?
- 13. 我正在使用Android模擬器。我如何判斷HAXM硬件加速是否正常工作?
- 14. mysql_real_escape_string如何工作
- 15. 如何判斷長變量是否爲空,或者if()是否包含Java中的異常判斷?
- 16. 如何判斷soundmanager2是否使用html5?
- 17. 如何判斷加載是否有效?
- 18. 如何判斷W鍵是否按下
- 19. 如何判斷碼頭是否凍結?
- 20. 如何判斷UITextView是否髒?
- 21. 如何判斷AUCTeX是否可用?
- 22. 如何判斷UITextField是否爲firstResponder
- 23. 如何判斷DataRow是否髒
- 24. 如何判斷對象是否爲空?
- 25. 如何判斷MemberInfo是否爲內部
- 26. 如何判斷NSUserDefaults是否已保存?
- 27. 如何判斷GIF是否爲動畫?
- 28. 如何判斷NSManagedObject是否已保存?
- 29. 如何判斷AirPlay是否爲鏡像?
- 30. 如何判斷UIPrintInteractionController是否顯示?
這會好嗎? $ post = $ _GET ['post']; \t \t 如果(is_numeric($交)) \t { \t \t $交= mysql_real_escape_string($交); \t} \t別的 \t { \t \t模具( 「淘氣NAUGHTY」); \t} \t \t mysql_select_db(「*******」,$ ******); \t \t $ content = mysql_query(「SELECT * FROM tbl _ ***** WHERE Id ='」。$ post。「'」); – 2010-02-18 14:28:51
在我看來,如果is_numeric($ post)爲true,$ post不需要轉義,因爲它已經是一個數字了。不過,仔細檢查一下也不會受傷。 – Powerlord 2010-02-18 14:34:13
如果我期望一個數值,我通常只使用「SELECT foo FROM bar WHERE baz =」。 (INT)$ foo的;如果該值不是數字,則返回0,從而導致(通常取決於查詢)空結果集,並且其他數字將被除去所有非數字字符(請參閱手冊中的整型轉換行爲)。對於插入/更新,必須進行驗證,因爲0可能不總是正確。優點是:比轉義短得多,並使其他人閱讀代碼時明白其爲數字。關於速度:不確定那裏,但我認爲它可能比逃跑更快。 – dbemerlin 2010-02-18 15:11:21