【问题标题】:Avoiding Injection Attacks when using Visual FoxPro OLE DB Provider in PHP在 PHP 中使用 Visual FoxPro OLE DB 提供程序时避免注入攻击
【发布时间】:2013-12-17 21:51:10
【问题描述】:

我正在使用 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 oledb code-injection visual-foxpro


【解决方案1】:

只是为将来走这条路的任何人提供的更新。

我最终使用 ADOdb Database Abstraction Library for PHP 解决了这个问题 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2016-11-03
    • 2011-01-13
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多