PHP Datenbankklasse mit Escapefunktion

08/22/2015 13:55 xsrf#1


Datenbankklasse:

Features:
  • automatisierte Query Construction
  • automatisierte Escape Funktion
  • dynamische Verwaltung
  • sehr simple Anwendung

Anwendung:

Allgemein:
PHP Code:
require_once('class.Database.php'); 
PHP Code:
Man übergibt ein Array ähnlich wie bei Timmy welches auf dem Standart Port 1433 läuft und nur über SQLEXPRESS

new Database($config['mssqlCredentials']);

oder für fortgeschrittene Entwickler auch einen ganzen Connectionstring:

new 
Database(odbc_connect('Driver={SQL Server};Server=' . HOSTNAME;Port=PORT', 'USERNAME', 'PASSWORT', ...)); 
PHP Code:
class YourClass extends Database {} 
________________________________________________

Update:
PHP Code:
//Ihr könnt einfach bei einem Formular das $_POST Array übergeben.

self::Update($_POST, 'Account', 'account_tbl);

//Update($mixedInput, $usedDatabase, $table) 
Insert:
PHP Code:

//Ihr könnt einfach bei einem Formular das $_POST Array übergeben.

self::Insert($_POST, 'Account', 'account_tbl);

//Insert($mixedInput, $usedDatabase, $table) 
Select:
PHP Code:
$search = array('account', 'password', 'dcoins');


self::Select($search, 'Account', 'account_tbl')
 
!!! 
Wenn ihr KEINEN Vergleichswert benötigt lasst $mixedWhere einfach weg, ansonsten: !!!

$where = array('id' => 1,'character' => 'AMAZEN');

self::Select($search, 'Account', 'account_tbl', $_POST);
oder
self
::Select($search, 'Account', 'account_tbl');
//Select($mixedInput, $usedDatabase, $table, $mixedWhere = false) 

Credits:

- Datenbankklasse: AMAZEN


08/22/2015 14:41 Sedrika#2
Die Validierungen sind ok, aber ich würde die Werte alle, ausgenommen integer, als Hex an die Datenbank weiterleiten.

In PHP folgend:
Code:
<?php
'0x'.bin2hex( $input );
?>
Dann interpritiert der SQL Server nichts mehr als Befehl und du kannst sogar den Shutdown Befehl abschicken, was zwar sinnfrei wäre aber möglich.

Absolutes Escapen halt in einem Befehl ;)
08/22/2015 14:50 xsrf#3
Muss jetzt leider los. Werde es mir bei Gelegenheit mal ansehen, danke :)

Das:

PHP Code:
private function InputCheck($mixedInput){
        foreach(
$mixedInput as $key => $value){
            
$mixedInput[$key] = self::Secure($value);
        }
        return 
$mixedInput;
    } 
wurde zu dem:

PHP Code:
private function InputCheck($mixedInput){
        foreach(
$mixedInput as $key => $value){
            if(
gettype($value) != 'integer'){
                
$mixedInput[$key] = htmlspecialchars($value);
                
$mixedInput[$key] = htmlentities($value);
                
$mixedInput[$key] = strip_tags($value);
                
$mixedInput[$key] = '0x'.bin2hex($value);
            }else {
                
$mixedInput[$key] = $value;
            }
        }
        return 
$mixedInput;
    } 
Außerdem wurden die Escape Funktionen entfernt da diese nun nicht mehr benötigt werden.