2011-06-05 68 views
0

我正在爲Intranet編碼。從理論上講,我不必過於擔心SQL注入(我可以看到你已經在恐懼中拋出你的手;-)這不是一個真正安全的應用程序,它沒有任何「祕密的東西」。我仍然對消毒字符串感到困惑

我更關心存儲和檢索包含引號的字符串。

它必須使用ODBC功能(從高位開始)。

1)addslashes()執行命令時是否就足夠了?stripslashes()當檢索它們時是否足夠? 2)我知道哪些輸入可能包含引號&哪些不是(例如,某些表單輸入字段要求輸入數字a被驗證,所以,如果它們要寫入d/b,它們是已知的以免引號)

但是,我確實有OdbcExec()odbc_fetch_row()的核心功能,然後提取命名列的值。

是否有任何理由爲什麼我應該點頭添加/剝離斜槓?

如果你可以使它更安全一些,同時仍然使用OSBC功能,那麼一定要這樣做。我在開發早期階段主要關心的是在輸入包含引號的字符串時防止崩潰。 1或2箇中心功能對我來說似乎最好,但也許你更好。

感謝您澄清

+0

al?? ------- – 2011-06-05 01:48:12

+1

始終擔心任何最終連接到網絡的系統中的安全代碼。假設網絡遭到破壞,那麼可以從那裏造成什麼樣的損害。如果您的應用程序易於注入到Intranet中,則所有perp需要執行的操作來控制該數據庫獲得可信訪問權限。哪個不是*那*很難了:( – Brian 2011-06-05 01:57:49

回答

3

使用參數化查詢/語句。在ODBC準備和執行功能,爲您提供此功能,像這樣:

<?php 
    $a = $_GET['a']; 
    $stmt = odbc_prepare($db_conn, "SELECT b FROM c WHERE a=?"); 
    $res = odbc_execute($stmt, array($a)); 
?> 

有一些限制與問候到開始和結束/ w的單引號的參數,在這裏看到:

http://php.net/manual/en/function.odbc-execute.php

驗證在將數據放入數據庫之前儘可能以最佳方式輸入數據,並使用參數化查詢,然後開始工作。