URL: https://www.overclockers.at/coding-stuff/c_probs_mit_zeigern_50238/page_2 - zur Vollversion wechseln!
naja.
cin >> i1 >> i2;
ist auch nicht wirklich komplizierter.
gut, geht halt nur in c++. nur wenn einem das egal ist, ob scanf unsafe ist, dann ist es kein wunder, dass so viele sicherheitsluecken existieren.
Na welche Sicherheitslücken hast du denn bei einer Usereingabe mit scanf? Würd mich echt interessieren....
Das ist das simpelste Basic an Sicherheitsluecke ueberhaupt.
Du machst so was:
char buf[512];
scanf("%s", buf);
--> peng
es wird der stack ueberschrieben, und alles ist roger 
das gleiche geht auch, wenn der puffer per malloc() alloziert wurde. nur ist es dann ein bisschen muehsamer. nichtsdestotrotz existieren tausende exploits auch von dieser sorte.
wie's geht, ist hier nachzulesen:
http://www.phrack.com/show.php?p=49&a=14
Und wo genau ist da die Sicherheitslücke für eine Usereingabe?
Ich mein für meine Datenbank Applikation die alle Masterpasswörter der Nationalbank ausließt würd ich auch nicht scanf verwenden
, aber ich würd sagen um eine Eingabe aus stdin auszulesen, und dass schön formatiert reicht es 
Jemand weiss, dass du mit dem Programm arbeitest, schickt dir ein File, das du damit oeffnen sollst --> Peng.
Entweder versteh ich hier was falsch, oder du... gehts nicht eigentlich darum eine Eingabe von der TASTATUR einzulesen? Für file öffnen verwendet man sowieso entweder ifstream Klassen oder die f* funktionen....
Man kann ja auch ein File reinpipen mit <.
wie meinst das jetzt? Wenn ich ein Programm hab:
Code:... printf("Geben sie einen text ein: "); scanf("%s",text); ....
Naja, musst es ja nur so aufrufen:
programm < boesesfile.txt
Aso als Kommandozeilen Parameter. Okay das stimmt, Kommandozeilen Parameter einfach mit scanf auslesen ohne gute checks vorher ist wirklich schlecht 
Also sind ma uns einig des scanf für einfach 0815 Programme reicht, für sichere Anwendungen allerdings nicht mehr 
ist schon klar, wenn's so ein 0815 zeug ist, dann ist es egal. aber oft wird dann solcher pfusch irgendwo eingesetzt, wofuer er urspruenglicherweise nicht gedacht war, und dann kracht's. das sollte man halt doch immer im hinterkopf behalten.
Klar, aber solange man es selber besser macht, kann man wenigstens sagen: ich habs ja gsagt, oder beim mir wär das nicht passiert 
oda man verwendet an pfusch weiter, weil man sich arbeit ersparen will und hats auch drin und des einlesen is genauso simpel, bis auf das, dass du an buffer brauchst
mit GETS(*buffer) liest ein
und mit SSCANF(buffer,"%d",$i) machst es im prinzip wie bei scanf 
Wie man mit gets() ein funktionierendes Programm schreiben kann, ist mir ein Rätsel. Egal was man macht, die Eingabezeile kann länger sein als der Buffer, und schon krachts.
Wenns nach mir ginge, gehört diese Funktion aus der Runtime-Library gelöscht, genauso wie printf und sprintf.
aja, und was würdest du statt printf verwenden? Wo sind denn dort wieder deine schweren Sicherheitslücken?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026