Query log
Beste forumers,
Ik heb een Query log op mijn site gezet, om snel de oorzaak te vinden als er sprake is van een lek/SQL-injection. Het probleem is dat hij alleen maar de SELECT query's opslaat en niet de UPDATE en INSERT query's.
Alle query's worden zo uitgevoerd:
Ik heb een Query log op mijn site gezet, om snel de oorzaak te vinden als er sprake is van een lek/SQL-injection. Het probleem is dat hij alleen maar de SELECT query's opslaat en niet de UPDATE en INSERT query's.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class database
{
/* */
$this->log_connection;
public function __construct()
{
/* */
}
public function queryLog($query)
{
if($qry = mysql_query("SELECT * FROM log WHERE query = '".mysql_real_escape_string($query)."'",$this->log_connection)):
if(mysql_num_rows($qry) == 0):
mysql_query("INSERT INTO log VALUES ('".mysql_real_escape_string($query)."','".$_SERVER['REMOTE_ADDR']."','".($_SERVER['PHP_SELF'].((isset($_GET['p'])) ? htmlentities($_GET['p']) : 'noP'))."',NOW())",$this->log_connection);
endif;
endif;
}
public function query($query)
{
$this->queryLog($query);
/* */
}
}
?>
class database
{
/* */
$this->log_connection;
public function __construct()
{
/* */
}
public function queryLog($query)
{
if($qry = mysql_query("SELECT * FROM log WHERE query = '".mysql_real_escape_string($query)."'",$this->log_connection)):
if(mysql_num_rows($qry) == 0):
mysql_query("INSERT INTO log VALUES ('".mysql_real_escape_string($query)."','".$_SERVER['REMOTE_ADDR']."','".($_SERVER['PHP_SELF'].((isset($_GET['p'])) ? htmlentities($_GET['p']) : 'noP'))."',NOW())",$this->log_connection);
endif;
endif;
}
public function query($query)
{
$this->queryLog($query);
/* */
}
}
?>
Alle query's worden zo uitgevoerd:
Welk nut heeft de SELECT alvorens het te inserten:
Antwoord: geen
htmlentities hoort niet thuis in een sql-statement, dat is een presentatie functie
Hetgeen je gepost hebt is te simplistisch om er eigenlijk dieper op in te gaan.
Het principe zal moeten zijn:
Als een query faalt dan zal deze gelogd moeten worden en dat is niet te herleiden uit hetgeen je nu aan code gepost hebt.
Antwoord: geen
htmlentities hoort niet thuis in een sql-statement, dat is een presentatie functie
Hetgeen je gepost hebt is te simplistisch om er eigenlijk dieper op in te gaan.
Het principe zal moeten zijn:
Als een query faalt dan zal deze gelogd moeten worden en dat is niet te herleiden uit hetgeen je nu aan code gepost hebt.
Heel stom van me, geen foutafhandeling .. normaal staat het er al bij en wordt het automatisch gelogt..