By the way: So wie ich das gesehn hab beim drüberfliegen:
Vulns:
-XSS
-SQLI
Vulns:
-XSS
-SQLI
naaaaaaaaaaaaaaaja .... trotzdem ists sicherer und sinnvoller den salt extra zu speichern und für jeden hash wieder individuell zu machen...Quote:
Naja, es erschwert trotzdem das Cracken eines md5-Hashes. ;O
$salt = random_str();
$salt2 = random_str(32);
$salt3 = random_str(128);
$salt4 = random_str(256);
$password = htmlspecialchars(md5(md5($_POST['pw'].$salt.md5($salt2.md5($_POST['pw'].$salt3.md5($salt4.$_POST['pw']))))));
write_to_db("user", "pw", $password);
write_to_db("user", "salt", $salt);
write_to_db("user", "salt2", $salt2);
write_to_db("user", "salt3", $salt3);
write_to_db("user", "salt4", $salt4);
<?php
// Check if he wants to register:
if (!empty($_POST[email]))
{
// Check if passwords match.
if ($_POST[password] != $_POST[password2])
exit("Error - Passwörter stimmen nicht überrein. Bitte versuche es noch einmal.");
// Assign some variables.
$ip = $_SERVER[REMOTE_ADDR];
$salt = "PASSWORDUNIQUESTRING";
$password = md5($_POST['password'].$SALT);
require_once("connect.php");
// Register him.
$query = mysql_query("INSERT INTO user
(email, displayName, name, password, bday, salt)
VALUES ('$_POST[email]','$_POST[displayName]','$_POST[name]','$password','$bday','PASSWORDUNIQUESTRING')")
or die ("Error - Registrieren fehlgeschlagen.");
$query = mysql_query("SELECT * FROM 'user' WHERE email = '$email'");
if (mysql_fetch_row($query)) {
echo "Bitte andere Username";
} else
echo "Welcome $_POST[username]! You've been successfully reigstered!<br /><br />
Please login <a href='index.php'><b>here</b></a>.";
exit();
}
?>
<html>
<head>
<title>Registrieren</title>
</head>
<body>
<form action="register.php" method="post">
<table width="75%" border="1" align="center" cellpadding="3" cellspacing="1">
<tr>
<td width="100%"><h5>Registration</h5></td>
</tr>
<tr>
<td width="100%"><label>Email: <input type="text" name="email" size="25" value="<? echo $_POST[email]; ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Anzeige-Name: <input type="text" name="displayName" size="25" value="<? echo $_POST[displayName]; ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Name: <input type="text" name="name" size="25" value="<? echo $_POST[name]; ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Passwort: <input type="password" name="password" size="16" value="<? $password = md5($_POST['password']); ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Passwort wiederholen: <input type="password" name="password2" size="16" value=""></label></td>
</tr>
<tr>
<td width="100%"><input type="submit" value="Registrieren!"></td>
</tr>
</table>
</form>
</body>
</html>
vollständige Textfelder key expires size
Bearbeiten Löschen 7d17e3a478196a93b8af127c02b4ff9e 1319475867 173
Bearbeiten Löschen db4fdf5d60c33e22288a27d2169eaef5 1319401861 77
Bearbeiten Löschen 1cc4c4e6af16031bd616d29ed11273c5 1317328179 170
Bearbeiten Löschen 83e461dac15743e794d2176dd9e13ff5 1348209752 13
Bearbeiten Löschen d577aa59bef558db0727318f8de260e0 1348209752 13
Bearbeiten Löschen 7e1004285e665bc60c38e8fee728d4cd 1319469389 8
Bearbeiten Löschen 7143677734dfeea5c51aae86f3477cd3 1317295063 149
Bearbeiten Löschen 1079a7f805b610d0eb900ed5de17e4b3 1317331292 128
Bearbeiten Löschen ab411c0f391f353bbfff114ac241cb31 1317331292 3314
Bearbeiten Löschen 08f646df888cd27fc7b89dc5645fdaf1 1317331292 1613
Bearbeiten Löschen 56b6acbddbf3a89b6175721ca7e5eb90 1317331292 1188
Bearbeiten Löschen 684df77efb74d38cdb06af6ced5c0614 1317331292 729
Bearbeiten Löschen b5e312b34c48a5714b335594dfb2e444 1317331292 218
Bearbeiten Löschen 4f7b8b387300ad6588184ac5d1f21ef2 1317331292 139
Bearbeiten Löschen ab8a8e7c6bbc08c4517ffc18b09d4ccb 1317331292 1355
Bearbeiten Löschen 9d327e87fb56fb5f22f90488eab17337 1317331292 1200
Bearbeiten Löschen 18d3a1d05494de6de42b2620081e5163 1317331292 335
Bearbeiten Löschen 7a9623a664e0598ab46d55d8ab82e9fa 1317331292 1697
Bearbeiten Löschen 53af39093cc972c6147c06c0bfae1880 1317331292 1246
Bearbeiten Löschen c82351a0395d19d1a51499e78de9d368 1317331292 654
Bearbeiten Löschen 7f96218cca3d369bcc83e1ff5881a07e 1317331292 3743
Bearbeiten Löschen aff325da4dcdbcf90b6b7d47e8b8782c 1317402313 7
Bearbeiten Löschen 7aadcf96c5eb8e7aff17644821990ee5 1317402309 55
Bearbeiten Löschen d775ed725481ac6691deee5e7bb2f2ad 1317402309 984
Bearbeiten Löschen 79cefee57ad790e145061afae497faec 1317278580 313
Bearbeiten Löschen aad77dbb143cfab111fa9f73e592de54 1317402313 7
Bearbeiten Löschen 90ab9cd79ea27ad5af5d75cb58ea2302 1317331426 130
Bearbeiten Löschen c716010f9c052249df573d74fcaa31ca 1317331426 4055
Bearbeiten Löschen 890c91f06790f2fb22bad773e16aabc5 1317331426 2189
Bearbeiten Löschen 8488ec2c7bace28d2ff7c383c42ba6bd 1317331426 1320
Kp was das für Keys sind...Quote:
Habe in meiner Datenbank unter "filecache" Tabelle "key" gefunden, dort sind viele 32-stellige "hashes" oder wie man das da nennt ^^
Aus der Datenbank (s.o.)PHP Code:<?php
// Check if he wants to register:
if (!empty($_POST[email]))
{
// Check if passwords match.
if ($_POST[password] != $_POST[password2])
exit("Error - Passwörter stimmen nicht überrein. Bitte versuche es noch einmal.");
// Assign some variables.
$ip = $_SERVER[REMOTE_ADDR];
$salt = "PASSWORDUNIQUESTRING";
$password = md5($_POST['password'].$SALT);
require_once("connect.php");
// Register him.
$query = mysql_query("INSERT INTO user
(email, displayName, name, password, bday, salt)
VALUES ('$_POST[email]','$_POST[displayName]','$_POST[name]','$password','$bday','PASSWORDUNIQUESTRING')")
or die ("Error - Registrieren fehlgeschlagen.");
$query = mysql_query("SELECT * FROM 'user' WHERE email = '$email'");
if (mysql_fetch_row($query)) {
echo "Bitte andere Username";
} else
echo "Welcome $_POST[username]! You've been successfully reigstered!<br /><br />
Please login <a href='index.php'><b>here</b></a>.";
exit();
}
?>
<html>
<head>
<title>Registrieren</title>
</head>
<body>
<form action="register.php" method="post">
<table width="75%" border="1" align="center" cellpadding="3" cellspacing="1">
<tr>
<td width="100%"><h5>Registration</h5></td>
</tr>
<tr>
<td width="100%"><label>Email: <input type="text" name="email" size="25" value="<? echo $_POST[email]; ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Anzeige-Name: <input type="text" name="displayName" size="25" value="<? echo $_POST[displayName]; ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Name: <input type="text" name="name" size="25" value="<? echo $_POST[name]; ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Passwort: <input type="password" name="password" size="16" value="<? $password = md5($_POST['password']); ?>"></label></td>
</tr>
<tr>
<td width="100%"><label>Passwort wiederholen: <input type="password" name="password2" size="16" value=""></label></td>
</tr>
<tr>
<td width="100%"><input type="submit" value="Registrieren!"></td>
</tr>
</table>
</form>
</body>
</html>
Edit:PHP Code:vollständige Textfelder key expires size
Bearbeiten Löschen 7d17e3a478196a93b8af127c02b4ff9e 1319475867 173
Bearbeiten Löschen db4fdf5d60c33e22288a27d2169eaef5 1319401861 77
Bearbeiten Löschen 1cc4c4e6af16031bd616d29ed11273c5 1317328179 170
Bearbeiten Löschen 83e461dac15743e794d2176dd9e13ff5 1348209752 13
Bearbeiten Löschen d577aa59bef558db0727318f8de260e0 1348209752 13
Bearbeiten Löschen 7e1004285e665bc60c38e8fee728d4cd 1319469389 8
Bearbeiten Löschen 7143677734dfeea5c51aae86f3477cd3 1317295063 149
Bearbeiten Löschen 1079a7f805b610d0eb900ed5de17e4b3 1317331292 128
Bearbeiten Löschen ab411c0f391f353bbfff114ac241cb31 1317331292 3314
Bearbeiten Löschen 08f646df888cd27fc7b89dc5645fdaf1 1317331292 1613
Bearbeiten Löschen 56b6acbddbf3a89b6175721ca7e5eb90 1317331292 1188
Bearbeiten Löschen 684df77efb74d38cdb06af6ced5c0614 1317331292 729
Bearbeiten Löschen b5e312b34c48a5714b335594dfb2e444 1317331292 218
Bearbeiten Löschen 4f7b8b387300ad6588184ac5d1f21ef2 1317331292 139
Bearbeiten Löschen ab8a8e7c6bbc08c4517ffc18b09d4ccb 1317331292 1355
Bearbeiten Löschen 9d327e87fb56fb5f22f90488eab17337 1317331292 1200
Bearbeiten Löschen 18d3a1d05494de6de42b2620081e5163 1317331292 335
Bearbeiten Löschen 7a9623a664e0598ab46d55d8ab82e9fa 1317331292 1697
Bearbeiten Löschen 53af39093cc972c6147c06c0bfae1880 1317331292 1246
Bearbeiten Löschen c82351a0395d19d1a51499e78de9d368 1317331292 654
Bearbeiten Löschen 7f96218cca3d369bcc83e1ff5881a07e 1317331292 3743
Bearbeiten Löschen aff325da4dcdbcf90b6b7d47e8b8782c 1317402313 7
Bearbeiten Löschen 7aadcf96c5eb8e7aff17644821990ee5 1317402309 55
Bearbeiten Löschen d775ed725481ac6691deee5e7bb2f2ad 1317402309 984
Bearbeiten Löschen 79cefee57ad790e145061afae497faec 1317278580 313
Bearbeiten Löschen aad77dbb143cfab111fa9f73e592de54 1317402313 7
Bearbeiten Löschen 90ab9cd79ea27ad5af5d75cb58ea2302 1317331426 130
Bearbeiten Löschen c716010f9c052249df573d74fcaa31ca 1317331426 4055
Bearbeiten Löschen 890c91f06790f2fb22bad773e16aabc5 1317331426 2189
Bearbeiten Löschen 8488ec2c7bace28d2ff7c383c42ba6bd 1317331426 1320
Funktionier immernoch nicht
Wobei mysql_real_escape auch nicht 100% sicher ist. Am besten ist esQuote:
@〤Che〤
Verstehst du nicht genau was SQLI ist?
Ich kann über das POST-Array welches nicht via mysql_real_escape_string geprüft wird eigenen SQL-Code injecten. Sehr gefährliche Lücke!!!
Zu deiner Behauptung, dass man md5-Hahses nicht knacken kann:Quote:
Wobei mysql_real_escape auch nicht 100% sicher ist. Am besten ist es
eine Whitelist anzulegen und den String über einen Regulären Ausdrück prüfen
zu lassen.
Einen eigenen Salt für jeden Benutzer neu zu generieren ist zwar keine
schlechte Idee aber vollkommen unnötig. Verwendest du einen salt wie
"fsUdnfna8273jd&"mf" Also einfach ein String aus zufälligen Zeichen reicht
das vollkommen aus, da md5 bisher unknackbar ist, und bei einem solchem
Salt Rainbotables vollkommen nutzlos sind.
Wenn man einen eigenen Salt für jedes Passwort generiert, dann sind Rainbow-Tables nutzlos. Wenn man allerdings den selben Salt für jedes Passwort benutzt, dann kann man sich einfach neue Rainbow-Tables mit dem Salt generieren.Quote:
Wobei mysql_real_escape auch nicht 100% sicher ist. Am besten ist es
eine Whitelist anzulegen und den String über einen Regulären Ausdrück prüfen
zu lassen.
Einen eigenen Salt für jeden Benutzer neu zu generieren ist zwar keine
schlechte Idee aber vollkommen unnötig. Verwendest du einen salt wie
"fsUdnfna8273jd&"mf" Also einfach ein String aus zufälligen Zeichen reicht
das vollkommen aus, da md5 bisher unknackbar ist, und bei einem solchem
Salt Rainbotables vollkommen nutzlos sind.
Du kannst nichts Brutforcen wenn der Salt unbekannt ist, und das ist er in 99% derQuote:
Also behaupte nicht, dass man md5-Hashes nicht Cracken kann... Wenn er gesalzen ist, dann machste halt 2 Crackvorgänge...
Es geht hier um 100%ige Sicherheit und nicht um "recht sicher". Und tut mir Leid,Quote:
Btw: mysql_real_escape_string ist eigentlich recht sicher, nicht wie Fratyr meint.
Wiegesagt, klemm dich erst nocheinmal ein paar Jahre hinter eine Programmiersprache,Quote:
Fazit: Sicherheit hat viel mit dem Programmierer und seinen Kenntnissen zu tun.
Wie schon gesagt wie willst du dir eine Rainbotable anlegen wenn der Salt dochQuote:
Wenn man einen eigenen Salt für jedes Passwort generiert, dann sind Rainbow-Tables nutzlos. Wenn man allerdings den selben Salt für jedes Passwort benutzt, dann kann man sich einfach neue Rainbow-Tables mit dem Salt generieren.
Siehe oben, diese Aussage ist komplett falsch.Quote:
Aus dem Grund sollte man auch nicht überall den selben Salt verwenden, ganz egal wie lang er ist.
Der md5 Algorythmus ist bisher ungeknackt.Quote:
Also behaupte nicht, dass man md5-Hashes nicht Cracken kann
Bitte... BITTE schließe NIEMALS vom Alter einer Person auf deren Fähigkeiten!Quote:
Es geht hier um 100%ige Sicherheit und nicht um "recht sicher". Und tut mir Leid,
ich will dich wirklich nicht angreifen aber aus deinem Namen resultiere ich das du
97 geboren bist?
Hab ich nie behauptet, ist auch totaler Quatsch, weil man den Algorythmus nie umkehren werden kann (Hash = Unumkehrbare Verschlüsselung)...Quote:
Der md5 Algorythmus ist bisher ungeknackt.
<?php
/*
Loginscript
Made by xChex
*/
require_once("./func.php");
session_start();
//Per Formular übergebene Daten abfragen
$name = $_POST['name']; //Benutzername
$pw = $_POST['pw']; //Passwort
$name = preg_replace("#\s{2,}#", " ", $name);// Doppelte Leerzeichen im namen löschen
$pw = preg_replace("#\s{2,}#", " ", $pw);// Selbes mit dem Passwort
$_SESSION['name'] = $name; //Benutzername zur weiterverwendung in der Session speichern
$action = $_POST['action']; //Aktion abrufen
if ($action == "ausloggen"){ //Überprüfen ob ausgeloggt werden soll
$_SESSION['log'] = "ausgeloggt"; //In der Session auf Ausloggen stellen
header("Location: ".$config['main']['index']); //Zurücklinken
}
elseif ($action == "einloggen"){ //Wenn eingeloggt werden soll
$db = new DB;
if ($db->anzeigen_where("user", "id", "usn", $name) != 0){
//uid richtig
//passwortüberprüfung -> start!
//salt abfragen
$salt = $db->anzeigen_where("user", "salt", "usn", $name);
if ($salt != ""){
//passwort generieren
$passwort = md5(md5($salt).md5($pw));
//passwort abfragen
//passwörter abgleichen
if ($db->anzeigen_where("user", "pw", "usn", $name) == $passwort){
$_SESSION['log'] = "eingeloggt"; //Den Status "eingeloggt" in die Session speichern
$_SESSION['fail'] = "";
header("Location: ".$config['main']['index']); //Zurücklinken
}
else{
$_SESSION['fail'] = "true";
header("Location: ".$config['main']['index']); //Zurücklinken
}
}
else{
$_SESSION['fail'] = "true";
header("Location: ".$config['main']['index']); //Zurücklinken
}
}
else{
$_SESSION['fail'] = "true";
header("Location: ".$config['main']['index']); //Zurücklinken
}
}
elseif ($action == "register"){
$salt = salt();
$daten = array("usn" => $_POST['name'], "pw" => md5(md5($salt).md5($_POST['pw'])), "salt" => $salt);
$db = new DB;
if ($db->anzeigen_where("user", "id", "usn", $name) == 0){
$db->schreiben_multi("user", $daten);
$_SESSION['log'] = "eingeloggt";
header("Location: ".$config['main']['index']); //Zurücklinken
}
else
{
echo "User existiert schon";
$form = new form;
$form->back_button();
}
}
else{ //In allen anderen Fällen
header("Location: ".$config['main']['index']); //Zurücklinken
}
?>
<?php
$config['db']['db'] = 'datenbank';
$config['db']['prefix'] = 'prefix_';
$config['db']['host'] = 'localhost';
$config['db']['usn'] = 'user';
$config['db']['pw'] = 'passwort';
$config['main']['index'] = 'index.php';
class DB{
function __construct() {
$this->verbinden();
}
private function verbinden(){
global $db, $config;
$db = mysql_connect($config['db']['host'], $config['db']['usn'], $config['db']['pw']);
if (!$db){
echo "Verbindung zur Datenbank gescheitert!<br>";
}
else{
$this->select();
}
}
private function select(){
global $db, $config;
mysql_select_db($config['db']['db'], $db);
}
private function trennen(){
global $db;
if (isset($db)){
mysql_close($db);
}
}
// Operationen
public function schreiben_multi($table, $array){
global $config;
$abfrage = "INSERT INTO `".mysql_real_escape_string(htmlspecialchars($config['db']['prefix'].$table))."` (".mysql_real_escape_string(htmlspecialchars(arrparser::array2fields($array))).") VALUES (".mysql_real_escape_string(htmlspecialchars(arrparser::array2values($array))).")";
$query = mysql_query($abfrage);
if (!$query){
echo "fail<br>";
}
}
public function anzeigen_where($table, $field, $kriterium_field, $kriterium_value){
$abfrage = "SELECT `".mysql_real_escape_string(htmlspecialchars($field))."` FROM `".mysql_real_escape_string(htmlspecialchars($config['db']['prefix'].$table))."` WHERE `".mysql_real_escape_string(htmlspecialchars($kriterium_field))."` = '".mysql_real_escape_string(htmlspecialchars($kriterium_value))."'";
$query = mysql_query($abfrage);
$row = mysql_fetch_row($query);
return $row[0];
}
function __destruct() {
$this->trennen();
echo "getrennt";
}
}
class arrparser{
public static function array2fields($array){
$var = 0;
$fields_array = array_keys($array);
while ($var < count($fields_array)){
if ($var == 0){
$fields = "`".$fields_array[$var]."`";
}
else{
$fields .= ", `".$fields_array[$var]."`";
}
++$var;
}
return $fields;
}
public static function array2values($array){
$values_array = array_values($array);
$var = 0;
while ($var < count($array)){
if ($var == 0){
$values = "'".$values_array[$var]."'";
}
else{
$values .= ", '".$values_array[$var]."'";
}
++$var;
}
return $values;
}
class form{
public function login(){
global $config;
//einloggformular
if ($_SESSION['fail'] == "true"){ //Wenn Einlogg-Versuch fehl geschlagen ist
echo "<h4>Login fehlgeschlagen. Bitte nochmals probieren!</h4>";
}
else{ //Ansonsten
echo "<h4>Bitte loggen Sie sich ein</h4>";
}
echo "<form action=\"einloggen.php\" method=\"POST\">";
echo "<input type=\"hidden\" name=\"action\" value=\"einloggen\" />"; //Einlogg-Aktion auswählen
echo "<table class=\"main_table\" align=\"center\">";
echo "<tr><td width=\"150\">Foren-Username:</td>";
echo "<td colspan=\"2\" width=\"300\"><input type=\"text\" name=\"name\" size=\"40\" maxlength=\"50\"/></td>"; //Benutzername
echo "</tr><tr>";
echo "<td width=\"150\">Foren-Password:</td>";
echo "<td colspan=\"2\" width=\"300\"><input type=\"password\" name=\"pw\" size=\"40\" /></td>"; //Passwort
echo "</tr><tr>";
echo "</table>";
echo "<input type=\"submit\" value=\"Einloggen\" />"; //Einloggen
echo "</form>";
echo "<form action=\"".$config['main']['index']."\" method=\"POST\">";
echo "<input type=\"hidden\" name=\"action\" value=\"registrieren\" />";
echo "<input type=\"submit\" value=\"Registrieren\" />";
echo "</form>";
}
public function register(){
echo "<form action=\"einloggen.php\" method=\"POST\">";
echo "<input type=\"hidden\" name=\"action\" value=\"register\" />"; //Registrations-Aktion auswählen
echo "<table class=\"main_table\" align=\"center\">";
echo "<tr><td width=\"150\">Foren-Username:</td>";
echo "<td colspan=\"2\" width=\"300\"><input type=\"text\" name=\"name\" size=\"40\" maxlength=\"50\"/></td>"; //Benutzername
echo "</tr><tr>";
echo "<td width=\"150\">Foren-Password:</td>";
echo "<td colspan=\"2\" width=\"300\"><input type=\"password\" name=\"pw\" size=\"40\" /></td>"; //Passwort
echo "</tr><tr>";
echo "</table>";
echo "<input type=\"submit\" value=\"Registrieren\" />"; //Registrieren
echo "</form>";
}
public function logswitch(){
session_start();
if ($_SESSION['log'] == "eingeloggt"){
$this->logout();
}
else{
$this->formular();
}
}
public function logout(){
//Auslogg-Button
echo "<form action=\"einloggen.php\" method=\"POST\">";
echo "<input type=\"hidden\" name=\"action\" value=\"ausloggen\" />"; //Auslogg-Aktion auswählen
echo "<td colspan=\"2\" align=\"left\"><input type=\"submit\" name=\"upload\" value=\"Ausloggen\" class=\"button\" /></td>"; //Ausloggen
echo "</form>";
}
public function back_button(){
// Zurück-Button
echo "<form action=\"\" method=\"post\">";
echo "<input type=\"hidden\" name=\"action\" value=\"back\">";
echo "<p><input type=\"submit\" value=\"Zurück\"></p>";
echo "</form>";
}
}
function salt($length="8")
{
$set = array("a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J","k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v","V","w","W","x","X","y","Y","z","Z","1","2","3","4","5","6","7","8","9");
$str = '';
for($i = 1; $i <= $length; ++$i)
{
$str .= $set[mt_rand(0, count($set)-1)];
}
return $str;
}
function clean(){
ob_end_clean();
ob_start();
}
?>
<?php
require_once "./func.php"; //funktionsdatei includieren
session_start();
ob_start();
if (isset($_SESSION['log'])){
if ($_SESSION['log'] == "eingeloggt"){
//tue was getan werden soll, wenn eingeloggt ist
}
else{
$form = new form;
$form->login();
if (isset($_POST['action'])){
if ($_POST['action'] == "registrieren"){
clean();
$form->register();
}
}
}
}
else{
$form = new form;
$form->login();
if (isset($_POST['action'])){
if ($_POST['action'] == "registrieren"){
clean();
$form->register();
}
}
}
?>
Doch doch, das kommt aufs Alter an, da man mit 14 (1997) noch garnicht inQuote:
Bitte... BITTE schließe NIEMALS vom Alter einer Person auf deren Fähigkeiten!
Hab ich nie behauptet, ist auch totaler Quatsch, weil man den Algorythmus nie umkehren werden kann (Hash = Unumkehrbare Verschlüsselung)...
MD5 - Wikipedia, the free encyclopedia <-- siehe hier
...
// Operationen
public function schreiben_multi($table, $array){
global $config;
$abfrage = "INSERT INTO `".mysql_real_escape_string(htmlspecialchars($config['db']['prefix'].$table))."` (".mysql_real_escape_string(htmlspecialchars(arrparser::array2fields($array))).") VALUES (".mysql_real_escape_string(htmlspecialchars(arrparser::array2values($array))).")";
$query = mysql_query($abfrage);
if (!$query){
echo "fail<br>";
}
}
...
Jo also mit dem Mischen von Deutsch und Englisch haste vollkommen recht, da hab ich als ich das geschrieben hab noch nicht so drauf geachtet...Quote:
Doch doch, das kommt aufs Alter an, da man mit 14 (1997) noch garnicht in
der Lage ist genug Programmiererfahrung mitzubringen, esseiden er hat im
Alter von 7 damit angefangen, was ich doch stark bezweifle.
Nich böse gemeint, aber ihr macht es mir wirklich einfach klug zu scheißen :)
der SHA1 Algorythmus wurde geknackt, md4 glaube ich auch.
[Only registered and activated users can see links. Click Here To Register...]
Noch was zu deinem Code, Deutsch und Englisch gemischt ist ein No-Go
beim Programmieren, entscheide dich für eines der beiden!
srsly? Das kann doch nich dein Ernst sein oder? Du scheinst den Sinn derPHP Code:...
// Operationen
public function schreiben_multi($table, $array){
global $config;
$abfrage = "INSERT INTO `".mysql_real_escape_string(htmlspecialchars($config['db']['prefix'].$table))."` (".mysql_real_escape_string(htmlspecialchars(arrparser::array2fields($array))).") VALUES (".mysql_real_escape_string(htmlspecialchars(arrparser::array2values($array))).")";
$query = mysql_query($abfrage);
if (!$query){
echo "fail<br>";
}
}
...
OOP nicht ganz verstanden zu haben, sonst würdest du deine Klassen nicht
voller HTML packen. Wieso sind deine "arrparser" statisch? Weils cool
aussieht?
Ihr (oder du) habt/hast das grundlegende Prinzip, und wie man Klassen
wirklich verwendet noch nicht wirklich verstanden, in dem Fall von deinem
Code wäre es sogar fast noch klüger prozeduralen Code zu verwenden,
da deine Klassen noch nicht wirklich einen Sinn machen, noch einem Zweck
dienen, aber das wird schon mit der Zeit, ich frag mich nur manchmal wieso
mich Leute verbessern oder über PHP/JS "aufklären" wollen, wenn sie doch
offensichtlich die Sprache (noch) nicht beherrschen? Ist nicht böse gemeint,
aber nurmal Fakt, Übung macht nicht nur den Meister, sondern auch
(Praxis)Erfahrung, und die habt ihr offensichtlich alle noch nicht!
<?php
$test = 1;
if ($test == 1){
?>
<form>
<input type="text" value="ich bin eine textbox">
</form>
<?php
}
else
{
?>
<form>
<input type="password" value="mich kann man nicht lesen">
</form>
<?php
}
?>
$arrparser = new arrparser;
$arrparser->array2values($array);
arrparser::array2values($array);