Seite 2 von 3

Verfasst: 16.09.2005 19:34
von Martin Truckenbrodt
Hallo,
kann man mit Konstanten

Code: Alles auswählen

if (...)
Abfragen machen?

Gruß Martin

Verfasst: 16.09.2005 20:27
von DasFragezeichen
Warum denn nicht ? ;)

Code: Alles auswählen

if ($var == "Blabla")
   {
      ...
Kannst eben auch umwandeln ... Denn if () ist ja nicht nur Variablen entwickelt wurden :roll:

Verfasst: 16.09.2005 20:44
von mad-manne
Martin Truckenbrodt hat geschrieben:Hallo,
kann man mit Konstanten i

Code: Alles auswählen

f (...)
Abfragen machen?

Gruß Martin
Klar kann man das ... wobei nur Abfragen nach folgendem Schema Sinn machen:

Code: Alles auswählen

if ($zu_pruefende_variable == VERGLEICHS_KONSTANTE) 
{
 ...
}
... während die umgekehrte Variante

Code: Alles auswählen

if ( VERGLEICHS_KONSTANTE == $zu_pruefende_variable) 
{
 ...
}
... zwar syntaktisch noch korrekt wäre, aber vom logischen Gesichtspunkt her unsinnig, da der Wert einer Konstanten ja bekannt ist!

Gruss,
Manne.

Verfasst: 16.09.2005 21:17
von Martin Truckenbrodt
Hallo,
phpBB verwendet folgende Technik:

Code: Alles auswählen

if ( isset($HTTP_GET_VARS[PHPMN_EDIT]) || isset($HTTP_POST_VARS[PHPMN_EDIT]) )
	{$edit = ( isset($HTTP_GET_VARS[PHPMN_EDIT]) ) ? intval($HTTP_GET_VARS[PHPMN_EDIT]) : intval($HTTP_POST_VARS[PHPMN_EDIT]);}
	else
		{$edit = '';}

Nun habe ich das Problem, dass ich keine Zahlenwerte, sondern strings weitergebe. Kann ich das

Code: Alles auswählen

intval()
rausnehmen ohne damit fahrlässigerweise ein Sicherheitsloch zu schaffen?

Was beduetet das ? und der : mittendrinnen in der zweiten Zeile?

Gruß Martin

Verfasst: 16.09.2005 21:39
von easygo
Martin Truckenbrodt hat geschrieben:Nun habe ich das Problem, dass ich keine Zahlenwerte, sondern strings weitergebe.
Also dann macht intval() wenig Sinn... phpBB verwendet auch nicht
generell "diese Technik", sondern fast ausschließlich für IDs
Martin Truckenbrodt hat geschrieben:Was beduetet das ? und der : mittendrinnen in der zweiten Zeile?
Ist nur eine andere Schreibweise für -->

Code: Alles auswählen

if ( isset($HTTP_GET_VARS[PHPMN_EDIT]) )
{
	$edit = intval($HTTP_GET_VARS[PHPMN_EDIT]);
}
else
{
	intval($HTTP_POST_VARS[PHPMN_EDIT]);
}
Martin, ich will dich ja net bremsen, aber besser du schaust dir vorher
mal ein paar gestandene Mods an, bevor du richtig loslegst. easy

Verfasst: 16.09.2005 21:48
von Martin Truckenbrodt
Hallo easygo,
ich schaue direkt beim phpBB ab. Das sollte doch reichen, oder? :)

Ne, mal Ernst: Das Skript funktioniert schon länger soweit perfekt. Nur wurde es auf www.phpbb.com als MOD nicht zugelassen, weil ich mit $_GET anstatt mit Konstanten gearbeitet habe. Dies Auszumerzen ist erstmal der fast letzte Entwicklungsschritt für mich.
Learning by Doing!

Zurück zur Frage:

Code: Alles auswählen

intval()
scheint hier die SQL Injection Bremse zu sein oder sehe ich das falsch?

Gruß Martin

Verfasst: 16.09.2005 21:57
von easygo
Zu intval() siehe auch mein letztes Posting (editiert)

In phpBB wird ja nicht generell die von dir beschriebene Technik verwendet,
sondern fast ausschließlich beim Umgang mit diversen IDs.

Hier mal ein Beispiel dafür -->

Code: Alles auswählen

if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) )
{
	$id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : intval($HTTP_GET_VARS['id']);
}
else
{
	$id = 0;
}

Verfasst: 16.09.2005 22:05
von Martin Truckenbrodt
Hallo,
ist das jetzt nun die SQL Injection Bremse oder nicht? :evil:

Da ich nichts anderes gefunden habe, scheint es so zu sein. :-?

Ich habe mein Skript durchgeschaut und festgestellt, dass alle Konstaten/Variablen mit übergebenen Text nur dann für eine SQL Query in Frage kommen, wenn sie vorher auf einen bestimmten Inhalt hin überprüft wurden.
So sollte doch eine SQL Injection unmöglich sein, oder?

Gruß Martin

Verfasst: 16.09.2005 22:39
von Martin Truckenbrodt
Hallo,
So, Skript läuft erst mal wieder.

Demo: http://www.martin-truckenbrodt.com/cgi/phpBB2/phpmn.php

Gib $_GET keine Chance! :o

Gruß Martin

Verfasst: 16.09.2005 22:40
von easygo
Martin Truckenbrodt hat geschrieben:Hallo,
ist das jetzt nun die SQL Injection Bremse oder nicht? :evil:

Da ich nichts anderes gefunden habe, scheint es so zu sein. :-?

Ich habe mein Skript durchgeschaut und festgestellt, dass alle Konstaten/Variablen mit übergebenen Text nur dann für eine SQL Query in Frage kommen, wenn sie vorher auf einen bestimmten Inhalt hin überprüft wurden.
So sollte doch eine SQL Injection unmöglich sein, oder?
Cool down... wenn du davon so überzeugt bist, dann ist doch alles im Grünen. :grin:

Aber wenn du mich fragst: Ich kann mir darüber kein Urteil erlauben,
denn dazu müsste ich das Skript ja wohl erstmal kennen.

BBCode Code -> dann sehn wir weiter. easy