2011-02-28 87 views
3

碼 -幫助PHP中的輸出

$price = mysqli_real_escape_string($connect,trim($results['price'])); 

價格從數據庫中檢索,然後利用呼應 -

echo $price; 

的問題 - 這是來自XSS或SQL注入足夠安全?它只包含數字。

感謝

+0

是$ results ['price']用戶輸入? – CJD

+0

@CJD no。它是mysqli_fetch_array – sarthak

+0

只有在用戶操作寫入數據庫時​​纔會發生SQL注入。 –

回答

4

的檢查應該可能數據輸入過程中完成的,但你可能是安全的,並檢查在輸出。我只是使用is_numeric或類似的東西來確保輸出的確是一個數字。

0

標準做法是使用htmlspecialchars()htmlentities()將輸出轉義到瀏覽器以防XSS。但正如另一個答案中提到的那樣,真正的問題是,正確的數據是否首先存儲在數據庫中。在存入數據庫之前,應該對它進行適當的驗證和轉義。

0

爲了安全起見,您需要如果從用戶輸入輸入$results['price']

如果您需要在將其發送到SQL之前將其強制驗證/清理爲預期值,

0

如果您的數據只能從db讀取,您可以使用mysqli_real_escape_string()忽略。這對於轉義應該寫入數據庫的用戶輸入非常有用。

0

mysqli_real_escape_string()用於轉義要插入到數據庫中的數據,以防止SQL注入。它與XSS無關。

你必須使用htmlentities()來做你想做的事情。我建議你閱讀eykanal的答案,並使用is_numeric來驗證。