簡體   English   中英

在PHP中使用Visual FoxPro OLE DB提供程序時避免注入攻擊

[英]Avoiding Injection Attacks when using Visual FoxPro OLE DB Provider in PHP

我正在使用Visual Fox Pro OLE DB提供程序(vfpoledb.dll)訪問php中的VFP數據庫。 我想以與您使用PDO或其他數據庫抽象層時相同(或相似)的方式為查詢准備語句。

有誰知道您是否可以並且是准備聲明的最佳方法,以避免注入攻擊?

$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="' . $path . '";');

// Bad!
$up = $conn->Execute("UPDATE tablename SET fieldname='Testing' WHERE fieldname = '" . $value . "'")

// Good?
...

或/並且如果有人知道哪里有通過COM dll可以訪問的方法的引用,那將是很棒的。

對於將來走這條路的任何人來說,這只是一個更新。

我最終使用PHP的ADOdb數據庫抽象庫解決了這個問題http://adodb.sourceforge.net/

一個例子:

            // Path to your dbc file
            $path = '/path/to/the/file.dbc';

            // Create A FoxPro connection
            $db = ADONewConnection('vfp');

            // Create DSN 
            $dsn = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=" . path . ";Exclusive=No;";

            // Contact or die trying
            $db->Connect($dsn) or die('Error connect with Visual FoxPro Driver');

            // Set fetch mode (this just makes the return values easier to parse)
            $db->SetFetchMode(ADODB_FETCH_BOTH);

            // Your Query - use ? as the var
            $query = "SELECT fieldname_a, fieldname_b FROM tablename WHERE fieldname_c = ? AND fieldname_d = ?";

            // Your Query Params
            $queryParms = array('valueYouAreSearchingFor_c', 'valueYouAreSearchingFor_d');

            // Execute the query
            $rs = $db->Execute($query, $queryParms);

            // An example looping the results (>= php5)
            foreach ($rs as $row) {

                // Print out examples
                print_r($row);
                echo $row["fieldname_a"];
                echo $row["fieldname_b"];
            }

            // Don't forget to clean up after yourself
            $rs->Close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM