2012-03-16 67 views
2

我完全困惑,我讀了幾篇文章,但仍然不確定。由於本網站僅在我們的內部網上,因此我不想執行準備好的語句路由。我已閱讀以下帖子,但仍然不確定。什麼時候使用mysql真正的轉義字符串

  1. When to use mysql_real_escape_string?
  2. When to use mysql_real_escape_string()

我的問題:我應該用mysql真實逃逸字符串

  1. 當只有我從一個窗體或用戶輸入
  2. 在我的所有疑問?例如:SELECT * FROM ......

例如在this post它指出:You need to call this function when building SQL queries with string literals. You should not call it anywhere else.

+0

這應該是對帖子的評論。 – 2012-03-16 12:22:27

+0

可能的重複[何時使用mysql_real_escape_string?](http://stackoverflow.com/questions/5278043/when-to-use-mysql-real-escape-string) – 2012-03-16 12:22:37

+2

使用預準備語句實際上並不困難或更多時間 - 比使用「舊」方法耗費時間,通常情況恰恰相反。 – JJJ 2012-03-16 12:22:51

回答

2

什麼準備語句做(除其他事項外)是調用類似的方法mysql_real_escape_string()
If你不使用PDO,什麼是好的,你必須明白你在做什麼,你會得到相同的安全級別。
唯一的和簡單的規則就是all raw data needs mysql_real_escape_string()(或其他語言的類似)
的例子是:
- 數據從用戶輸入
- 您已存儲RAW上DB(女巫是最好的方式),並且您的數據使用在新的SQL statment
- 從不明/其他來源的數據
的detalis是:
- 一定要不適兩次(正確地保存數據)

+0

@你的常識爲什麼這個答案錯了​​? – 2012-03-16 13:25:16

+1

如果我向您展示簡單的代碼,儘管遵循您的答案說明,將允許注射,您會刪除它嗎? – 2012-03-16 13:31:55

+3

一個非常誤導的答案。 mysql_real_escape如何提供比pdo更多的安全性? pdo的概念是sql和data分開發送。人們應該嘗試鼓勵使用pdo的新手......像這樣的一種方法是所有php教程,書籍都包含易受攻擊代碼的原因。 – itachi 2012-03-16 13:35:58

1

,當你不知道肯定發生了什麼包含在字符串中做到這一點是非常重要的。 這意味着用戶輸入。

您可能還想考慮移動到PDO準備好的語句。

2

嗯,我實際使用它:

任何變量,我要投入到MySQL查詢並可能已被用戶修改,或者如果它是用戶直接輸入(通過表單),或參數,我一直在身邊掠過通過GET requests

你明白我的意思... :-)

+1

...並弄錯了 – 2012-03-16 12:25:13

+0

你能詳細說明一下嗎? – 2012-03-16 12:26:10

+0

試着想一下這個功能實際上做了什麼,以及爲什麼 – 2012-03-16 12:29:48

0

你應該對你插任何變量使用在一個SQL查詢中。

所有不是字面字符串的都應該進行消毒。不管你是從表單,數據庫還是其他任何東西獲取它,如果它不是恆定的,那麼你應該清理它。

-2

你問題中引用的句子是真的。
所有其他答案都是錯誤的。

每當您要將帶引號的字符串添加到SQL查詢中時,都必須始終將其轉義。
這是你必須使用mysql_real_escape_string()的唯一情況。

PS。我不能相信這個問題在所有答案中依然存在。

Stackoverflow是一個非常奇怪的地方。

+0

好吧,如果我理解corect:1)從用戶表單輸入=是。 2)選擇*從usrs WHERE用戶名='$ user'=不需要,因爲我已經逃過了用戶輸入。 3).. while($ row = mysql_fetch_assoc($ result)){$ userid = $ row ['id']; $ DepartmentID的= $行[ '部門']; } =沒有必要,因爲它是來自表格的信息? 4)$ str =「耐克的....」=是 – Wilest 2012-03-16 13:17:54

+0

在我的答案中沒有詞語「輸入」或「用戶」。所以,你明白錯了。 – 2012-03-16 13:20:23

+0

好吧,只有$ str =「Nike's ....」=是嗎? – Wilest 2012-03-16 13:23:07

相關問題