Query log
Yea Rupie
31/05/2010 21:27:02Beste 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:
PHP hulp
09/11/2024 03:28:54Noppes Homeland
31/05/2010 22:03:17Welk 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.
Yea Rupie
31/05/2010 22:19:36Heel stom van me, geen foutafhandeling .. normaal staat het er al bij en wordt het automatisch gelogt..