[英]Writing to a VFP Database using the Visual FoxPro OLE DB Provider in PHP
[英]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.