2009-09-20 8 views
1

スクリプト1はより安全ですか?これらのPHPスクリプトとMysqlスクリプトのどちらがより安全なセキュリティを備えていますか?

 
"; 
} 
else 
{ 
    queryMysql("CREATE TABLE $name($query)"); 
    echo "Table '$name' created
"; } } function tableExists($name) { $result = queryMysql("SHOW TABLES LIKE '$name'"); return mysql_num_rows($result); } function queryMysql($query) { $result = mysql_query($query) or die(mysql_error()); return $result; } function destroySession() { $_SESSION=array(); if (session_id() != "" || isset($_COOKIE[session_name()])) setcookie(session_name(), '', time()-2592000, '/'); session_destroy(); } function sanitizeString($var) { $var = strip_tags($var); $var = htmlentities($var); $var = stripslashes($var); return mysql_real_escape_string($var); } function showProfile($user) { if (file_exists("$user.jpg")) echo "img src='$user.jpg' border='1' align='left' />"; $result = queryMysql("SELECT * FROM rnprofiles WHERE user='$user'"); if (mysql_num_rows($result)) { $row = mysql_fetch_row($result); echo stripslashes($row[1]) . "
"; } } ?>

またはスクリプト2より安全ですか?

 
MySQL Error: " . mysql_error()); 

    // Print a message to the user, include the footer, and kill the script. 
    include ('./includes/footer.htm'); 
    exit(); 

} // End of mysql_select_db IF. 

} else { // If it couldn't connect to MySQL. 

// Print a message to the user, include the footer, and kill the script. 
trigger_error("Could not connect to MySQL!\n
MySQL Error: " . mysql_error()); include ('./includes/footer.htm'); exit(); } // End of $dbc IF. // Create a function for escaping the data. function escape_data ($data) { // Address Magic Quotes. if (ini_get('magic_quotes_gpc')) { $data = stripslashes($data); } // Check for mysql_real_escape_string() support. if (function_exists('mysql_real_escape_string')) { global $dbc; // Need the connection. $data = mysql_real_escape_string (trim($data), $dbc); } else { $data = mysql_escape_string (trim($data)); } // Return the escaped value. return $data; } // End of function. ?>
+4

スクリプトの違いを要約しておけば、このコードはわかりやすく答えることができます。私は本当に他の人がコードについて言うことを聞くことに興味があるので、違いが何であるかを簡単に判断してください。 – pavium

+4

誰かがそのコードをすべて読んだのだろうかと思います。私はしませんでした! – jrharshath

+0

2つのスクリプトのこれらの任意のコードスニペットから難しい/実際には不可能です。 – VolkerK

答えて

1

どちらもありません。どちらも矛盾しており、フィルタリングされていないデータをデータベースに取得するための操作を提供します。

フィルタリングはオプションではありません。

フィルタリングを行わずにクエリを実行する方法はありません。 php 5.2.xを使用している場合は、SPL Filter関数を使用してデータをサニタイズします。

データ抽象化レイヤを使用すると、これをはるかに簡単に行うことができます。私はzendフレームワークのZend_DbとZend_Db_Tableクラスが好きです。これらのドキュメントには、可能な限り最良の使用方法を示す具体的な例があります。

2つのスクリプトのうち、#1を選択します。この関数化されたコードは、スクリプト#2のものよりも保守がずっと簡単です。

0

より安全な方法は、MYSQLiまたはPDOを使用することです。また、MYSQL_CONNECTなどはPHPの将来のバージョンでは無効になります。

+0

リンクが壊れる可能性があるので、リンクのみの回答を投稿しないでください。 – NathanOliver

関連する問題