2008-12-09 92 views
5

我需要檢查我所有的asp代碼以防止SQL注入。會話是否可以僞造?

我應該檢查會話對象嗎?

會話如何被劫持?

謝謝!

+0

爲什麼要低調這個問題?除了語法錯誤之外,我認爲這是一個合理的問題。 – Salamander2007 2008-12-09 09:17:30

回答

3

會話可被劫持。如果我沒有記錯,經典ASP僅支持基於cookie的會話標識符。如果有人能夠竊取該cookie(電線攻絲),那麼他們可以獲得與合法用戶相同的會話。

你應該檢查會話對象嗎?那要看。如果您可以確保會話中存儲的所有對象都是「安全的」(輸入已經過清理),那麼您可以跳過會話對象。如果您的應用程序中的某個地方從不安全的源獲取數據並將其放入Session對象中,那麼您也必須檢查它。

3

要避免SQL注入,請使用參數化查詢,而不是通過串聯字符串來構建SQL查詢。會話劫持是一個完全不同的話題。通過更改每個請求的會話cookie可以使問題變得更加困難,並通過使用HTTPS完全避免。一個相關的(也是更大的)問題是跨站點請求僞造(查看它)。

1

那麼,你只需要確保用戶輸入。所以你必須問自己的問題是:「這些數據是來自用戶輸入的嗎?」如果是這樣,你必須使用sql參數。

在更大的規模上,考慮到你有個別方法來執行數據訪問,你應該爲每個你提供給你的sql的文本參數使用sql參數。在這種情況下,sql參數並不是必須的,因爲如果你收到一個作爲方法參數的數字,它就沒有辦法進行sql注入。

但是,如果有疑問使用sql參數。

1

會話變量存儲在服務器的內存中。只有一個cookie ID存儲在客戶端上。沒有必要擔心會話中的變量,除非它們來自客戶端。很多時候,雖然可以更容易地檢查傳遞給數據庫的所有變量。

相關問題