次のコードはSQLが脆弱であり、セキュリティを確保するための助けが必要です。私はPHPまたはMySQLのウィザードではありません。コードは年末にInfactは脆弱 であることをPHPのページネーションSQLセキュリティ
私の周りを検索し、MySQLの実際のエスケープ文字列などを行うには、いくつかの非常に有用なものを見たが、実装された場合、それはちょうど白ページを引き起こし
if(!isset($_GET['pg'])) { $page = 1; } else { $page = $_GET['pg']; }
$select = (($page * 20) - 20);
$mysql_result = mysql_query("SELECT `id` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE ".implode(" AND ", $mysql_where)." ORDER BY id ASC LIMIT $select, 20") or die(mysql_error());
<?
$servers = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM data_servers"),0);
$pages = ceil($servers/20);
if(!isset($_GET['pg'])) { $page = 1; } else { $page = $_GET['pg']; }
if($page > 1)
{
$prev = ($page - 1);
echo "<a href='?pg=$prev'>[Inapoi]</a> ";
}
for($show = 1; $show <= $pages; $show++)
{
if(($page) == $show)
{
echo $show;
}
else
{
echo " <a href='?pg=$show'>[$show]</a> ";
}
}
if($page < $pages)
{
$next = ($page + 1);
echo " <a href='?pg=$next'>[Next]</a> ";
}
?>
ている証明あなたのURLだけでPG = mysqlの
? を追加し、MySQLの構文エラーに
通常、コードのすべての入力、特に$ _GET ['pg']の値をチェックする必要があります。SQLの場合でも、コードの他の部分に渡す前に入力の型と値をチェックするだけです関連しているかどうか。 – Stan
次のようにadd_slashes、mysql_escape_string、mysql_real_escape_stringを使用するか、preg_matchを実行する必要がありますか? – C0nw0nk
単純な修正はis_numeric($ pg)にチェックを入れてデフォルト値(1)エスケープデータを使用することですクエリを実行します。 –