versuch13
Erfahrenes Mitglied
So ich beschäftige mich jetzt schon etwas länger mit PHP & MySQL und so langsam kommt es dann auch die ersten Male zum online Einsatz. Daher möchte ich hier jetzt mal das Thema Sicherheit von MySQL Inserts und Selects aufgreifen. Dazu habe ich schon einiges gelesen, habe natürlich auch mal hier in den Sicherheits Thread geschaut (aber da ist mir einiges einfach noch zu hoch), und jetzt wüßte ich gerne einfach mal wie es um die Sicherheit meiner Scripts steht.
Im groben sieht es bei mir immer ca. so aus:
config.php
functions.php
index.php (mit Beispiel für INSERT und SELECT)
So, dazu jetzt erstmal eine Frage. In meiner index.php inkludiere ich immer zu Anfang die config.php, in welcher ja mysql_connect und mysql_select_db mit drin ist. Kann das so irgendwelchen Nachteile haben?
Sonst interessiert mich einfach ob das so in Ordnung ist, noch weiter ausgebaut werden muss, vielleicht total schwachsinnig ist oder sonstiges?
Vielen Dank. Gruß
Im groben sieht es bei mir immer ca. so aus:
config.php
PHP:
define('MYSQL_HOST', '***');
define('MYSQL_USER', '***');
define('MYSQL_PASS', '***');
define('MYSQL_DATABASE', '***');
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
@mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
include "functions.php";
functions.php
PHP:
# Funktion für die Eingabe, im Insert noch mysql_real_escape_string
function array_stripslashes($var)
{
if(is_string($var)) {
$var = stripslashes($var);
} else {
if(is_array($var)) {
foreach($var AS $key => $value) {
array_stripslashes($var[$key]);
}
}
}
}
if(get_magic_quotes_gpc())
{
array_stripslashes($_GET);
array_stripslashes($_POST);
array_stripslashes($_COOKIE);
}
# Funktion für die normale Ausgabe
function fct_text($str)
{
# Allgemeine umformatierungen
$str = trim($str);
$str = htmlentities($str, ENT_QUOTES);
$str = stripslashes($str);
$str = nl2br($str);
# BBCODE
$str = preg_replace('=\[url\](.*)\[/url\]=Uis', '<a href="\1">\1</a>', $str);
$str = preg_replace('#\[url=(.*)\](.*)\[/url\]#Uis', '<a href="\1">\2</a>', $str);
return $str;
}
# Funktion die bei MySQL UPDATES zur vorherigen Ausgabe genutzt wird
function fct_text($str)
{
$str = trim($str);
$str = stripslashes($str);
$str = nl2br($str);
return $str;
}
index.php (mit Beispiel für INSERT und SELECT)
PHP:
<?php
error_reporting(E_ALL);
include "inc/config.php";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Security Tests</title>
</head>
<body>
<form method="post" action="index.php?send">
<textarea name="msg"></textarea>
<input type="submit" name="send">
</form>
<?php
if(isset($_GET['send']))
{
$query = "INSERT INTO table
(text)
VALUES
('". mysql_real_escape_string($_POST['msg'])."')";
mysql_query($query) OR die(mysql_error());
echo "Daten wurden hinzugefügt";
} else {
$sql = "SELECT
text
FROM
table
ORDER BY
id ASC";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
echo fct_text($row['text'])."<br>\n";
}
}
?>
</body>
</html>
So, dazu jetzt erstmal eine Frage. In meiner index.php inkludiere ich immer zu Anfang die config.php, in welcher ja mysql_connect und mysql_select_db mit drin ist. Kann das so irgendwelchen Nachteile haben?
Sonst interessiert mich einfach ob das so in Ordnung ist, noch weiter ausgebaut werden muss, vielleicht total schwachsinnig ist oder sonstiges?
Vielen Dank. Gruß