we DB und mysqli_real_escape_String

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

we DB und mysqli_real_escape_String

Beitragvon Carrear » Mi 23. Nov 2016, 12:43

Ich habe jetzt mehrere Versuche gemacht um mit der webEdition DB Verbindung Strings zu escapen, aber nicht funktioniert. Vielleicht kann mich hier mal jemand auf die Spur bringen:

Code: Alles auswählen

	$db = new DB_WE();
	
	$data = array(
		'username' => $db->real_escape_string($_POST['seminar_login_username']),
		'password' => $db->real_escape_string($_POST['seminar_login_password']),
		'objectId' => $db->real_escape_string($_POST['seminar-login-id'])
	);

Code: Alles auswählen

	$db = new DB_WE();
	
	$data = array(
		'username' => mysqli_real_escape_string($db, $_POST['seminar_login_username']),
		'password' => mysqli_real_escape_string($db, $_POST['seminar_login_password']),
		'objectId' => mysqli_real_escape_string($db, $_POST['seminar-login-id'])
	);
Diese beiden Versuche gingen schonmal nicht. Am Ende ist das Array immer leer. Die POST Variablen sind befüllt.

VG Martin

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: we DB und mysqli_real_escape_String

Beitragvon blickfang » Mi 23. Nov 2016, 12:49

Hi Martin,
schau Dir mal we_base_request::_() an, gibt es seit der Version 6.3.9
https://www.webedition.org/de/dokumenta ... on-6.3.9.0
Gruß
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: we DB und mysqli_real_escape_String

Beitragvon Carrear » Mi 23. Nov 2016, 12:52

Ehrlich gesagt verstehe ich das nicht. Gibt es da eine ausführliche Dokumentation zu? Da ist ein konkretes Anwendungsbeispiel, bei dem ich nicht erkenne, inwiefern es sich auf meinen Sachverhalt anwenden lässt. Sorry, manchmal brauch ich da eben etwas länger :D

Bezieht sich das Problem auf die Post Variable? Denn ich greife ja gar nicht auf die REQUEST zu. Und auf die Post Variable greife ich ständig zu, auch in der neuen Version - und habe nirgendwo Probleme. Und real_escape_string verwende ich an anderer Stelle auch mit einer array_map

Code: Alles auswählen

$newValue = array_map(array($db, 'real_escape_string'), $value);
Das funktioniert meines Wissens nach auch wunderbar. Deswegen ist es mir wirklich unerklärlich.

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: we DB und mysqli_real_escape_String

Beitragvon blickfang » Mi 23. Nov 2016, 13:14

mit we_base_request kannst Du noch weiter gehen, um Deine variablen abzusichern, siehe bspl ob der String auch einer Constante entspricht, einer gültigen webEdition Tabelle usw.

in der Datei \webEdition\we\include\we_classes\base\we_base_request.class.php kannst Du sehen, was es für Prüfungen gibt.

Code: Alles auswählen

we_base_request::_(we_base_request::INT, 'meinevariable', '')
prüft ob die Variable ein String ist und nimmt entsprechende Konvertierungen vor, so dass Du das Ergbenis daraus ohne große Sorgen in die Datenbank übernehmen kannst. Besonders für Post-Variablen ist das eine sehr hilfreiche und sichere Methode.

Dokumentation... hm... @Andreas?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: we DB und mysqli_real_escape_String

Beitragvon Carrear » Mi 23. Nov 2016, 13:17

Okay, verstanden. Aber warum mein Vorgehen jetzt nicht funktioniert, verstehe ich trotzdem nicht.

PS: Auch auf dem von dir genannten Weg bleibt das Array leer :(

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: we DB und mysqli_real_escape_String

Beitragvon blickfang » Mi 23. Nov 2016, 13:42

hm, warum das array leer sein soll, wenn in den variablen etwas drin steht, ist mir allerdings dann auch schleierhaft...
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: we DB und mysqli_real_escape_String

Beitragvon Carrear » Mi 23. Nov 2016, 14:15

Es hat auf jeden Fall mit dem mysqli_real_escape_string zu tun. Nehme ich das komplett raus:

Code: Alles auswählen

	$db = new DB_WE();
	
	$data = array(
		'username' => $_POST['seminar_login_username'],
		'password' => $_POST['seminar_login_password'],
		'objectId' => $_POST['seminar-login-id']
	);
ist das Array natürlich entsprechend befüllt.
Auf diesem Weg:

Code: Alles auswählen

	$db = new DB_WE();
	
	$data = array(
		'username' => mysqli_real_escape_string($db, $_POST['seminar_login_username']),
		'password' => mysqli_real_escape_string($db, $_POST['seminar_login_password']),
		'objectId' => mysqli_real_escape_string($db, $_POST['seminar-login-id'])
	);
ist es anschließen leer, d.h. die Schlüssel sind natürlich da, haben aber keine Werte. Und auf diesem Weg:

Code: Alles auswählen

	$db = new DB_WE();
	
	$data = array(
		'username' => $db->real_escape_string($_POST['seminar_login_username']),
		'password' => $db->real_escape_string($_POST['seminar_login_password']),
		'objectId' => $db->real_escape_string($_POST['seminar-login-id'])
	);
bleibt die Seite weiß - es scheint also irgendeinen Fehler zu geben.

VG Martin

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: we DB und mysqli_real_escape_String

Beitragvon Carrear » Mi 23. Nov 2016, 15:53

Für mich ist wirklich nicht nachvollziehbar, warum ich das nicht anwenden kann. Davon ab habe ich jetzt in der "/webEdition/we/include/we_db_tools.inc.php" folgende Funktion gefunden:

Code: Alles auswählen

function escape_sql_query($inp) {
...
}
Diese lässt sich anwenden. Ich weiß nicht ob diese Funktion genauso escaped wie die zuvor genannte? Also kann ich das sozusagen equivalent nutzen und ist das auch updatesicher?

VG Martin

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: we DB und mysqli_real_escape_String

Beitragvon mokraemer » Do 24. Nov 2016, 13:33

@Carrerar: bitte benutze

Code: Alles auswählen

$db->escape(...) 
wenn du das übergeben willst.

So ein paar Erläuterungen, denn hier läuft wieder viel Halbwissen durcheinander.
1. WE_DB ist eine WE_DB-Klasse, die hat nichts mit einer konkreten DB zu tun, wurde aber nur für mysql/mysqli Connectoren benutzt, deshalb geht mysqli_real_escape_string nicht, und von dessen Verwendung sollte man in WE absehen
2. we_base_request::_ - wie vorgeschlagen ist nicht direkt für die Verwendung vorgesehen, wird aber wohl so bleiben.
Wie der Name sagt wird hier nur $_REQUEST berücksichtig (setzt u.a. aus $_POST und $_GET zusammen). Eigentlich sollte man das über <we:setVar> machen, da kann man dann in varType="" angeben um was für einen Typ es sich handelt. Da werden dann bereits falsche Eingaben korrigiert. Zusätzlich kann man das escape per prepareSQL auslösen. Der WE Weg wäre also

Code: Alles auswählen

<we:setVar from="post" nameto="data[username]" namefrom="seminar_login_username" varType="string" prepareSQL="true"/>
<we:setVar from="post" nameto="data[password]" namefrom="seminar_login_password'" varType="string" prepareSQL="true"/>
<we:setVar from="post" nameto="data[objectId]" namefrom="seminar_login_id" varType="int" prepareSQL="true"/>
3. @Timo: die Doku zu der Klasse steht in der Klasse, wo sie hin gehört.
webEdition-Kern-Entwickler


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 22 Gäste