이 코드에서 SQL 주입을 방지하는 좋은 방법을 알고 있다면 궁금합니다. 내가 원하는 마지막 것은 누군가 내 데이터베이스를 해킹하는 것입니다. 나는 이것에 상당히 새롭고 전문가 의견을 듣고 싶다. 감사. 당신이 그렇게 항상 @ 지적으로 준비된 문을 사용하여 사용자로부터 데이터를 가져 오는됨에 따라 모든이 코드에서 SQL 주입 메서드를 방지하십시오.
<?php
$input = $_GET['input'];//Note to self $input in the name of the search feild
$terms = explode(" ", $input);
$query = "SELECT * FROM content WHERE ";
foreach ($terms as $each){
$i++;
if ($i == 1)
$query .= "keywords LIKE '%$each%' ";
else
$query .= "OR keywords LIKE '%$each%' ";
}
// connecting to our mysql database
mysql_connect("localhost", "username", "password");
mysql_select_db("database");
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if ($numrows > 0){
$i = 0;
while ($row = mysql_fetch_assoc($query)){
$i++;
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$keywords = $row['keywords'];
$link = $row['link'];
$plink = $row ['plink'];
$views = $row ['views'];
if($i == 3){
echo '<td valign="top" "width="248" height="100%">
<table width="100%" border="0">
<tr>
<td align="center" valign="top"><a href='.$link.'>
<img src='.$plink.'width="200" height="151" vspace="5" />
<br><b><a href='.$link.'>'.$title.'</b></a>
<br><strong><span style="line-height:20px">Total views: '.$views.'</span></strong>
</td>
</tr>
</table>
</td><tr>';
}
else{
echo '<td valign="top" "width="248" height="100%">
<table width="100%" border="0">
<tr>
<td align="center" valign="top"><a href='.$link.'>
<img src='.$plink.'width="200" height="151" vspace="5" />
<br><b><a href='.$link.'>'.$title.'</b></a>
<br><strong><span style="line-height:20px">Total views: '.$views.'</span></strong>
</td>
</tr>
</table>'
;
}
}
}
else
echo "No results found for \"<b>$input</b>\"";
// disconnect
mysql_close();
?>
[** 새로운 코드에서 사용하지 마십시오'mysql_로 *'기능 **] (http://bit.ly/phpmsql). 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). –
여기를 확인 http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1 – krishna
[parametrerized]와 함께 PDO를 사용하십시오 (http://stackoverflow.com/). questions/60174/how-can-i-prevent-sql-injection-in-php? rq = 1) 쿼리를 사용하십시오. – Rikesh