Username weergegeven

Status
Niet open voor verdere reacties.
gebruik:
PHP:
<?php
echo "Welcome, ". $_POST[naam in db van username].".;
?>
 
Laatst bewerkt:
gebruik:
PHP:
<?php
echo "Welcome, ". $_POST[naam in db van username].".;
?>
 
Tja het is niet eenvoudig het plaatsen van een echo op een bestand met extentie html
zo je verstuurt door naar het bestand

checklogin.php deze stuurt een referender naar welcome.html nu
iedereen kan welcome.html zien er is dus niets beveiligt
verder had ik graag het bestand checklogin.php gezien zonder uw database wachtwoorden deze dien je voor hier op het forum te plaatsen leeg te maken
 
Misschien is het een idee om even het stukje form te plaatsen
HTML:
<form> ... </form>
Verder denk ik met onderstaande code je voldoende te hebben geholpen.

PHP:
<?php
	## Wees er zeker van dat de pagina waar je het wilt laten weergeven een .PHP bestand is. ##
	
	// Verander voorbeeld naar jouw behoren. Bijvoorbeeld username / gebruikersnaam oid	
	$gebruikersnaam = $_POST['voorbeeld']; 
	
	
	print "Aangemeld als:".$gebruikersnaam.".";
?>

Of zoals eerder aangegeven:

PHP:
<?php
	## Wees er zeker van dat de pagina waar je het wilt laten weergeven een .PHP bestand is. ##
	
	// Verander voorbeeld naar jouw behoren. Bijvoorbeeld username / gebruikersnaam oid	
	print "Aangemeld als:".$_POST['voorbeeld'].".";
?>
 
Laatst bewerkt:
@ kenikavanbis

PHP:
<?php

ob_start();
$host="***"; // Host name
$username="***"; // Mysql username
$password="***"; // Mysql password
$db_name="***"; // Database name
$tbl_name="***"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("CAN NOT CONNECT. TRY LATER AGAIN.");
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){

// Register $myusername, $mypassword and redirect to file "welcome.html"
session_register("myusername");
session_register("mypassword");
header("location:welcome.html");
}
else {
echo 'Fout wachtwoord of gebruikersnaam.';
}

ob_end_flush();
?>

Mijn code van cheklogin

En uh, hoe beveilig ik dat dan. Waarschijnlijks iets simpels.
Tja, ben nog maar beginner in PHP.

Groetjes Snorretje;)
 
Hoi,

Ik weet niet hoe je login form eruit ziet. Maar in die login form kun je namelijk een funname zetten.
Wat doet die percies?
Een hacker gaat, alle velden invullen, maar de funname, die zal de gebruiker niet kunnen zien. Enkel de hacker kan zoiets zien.
Hij gaat daar dus ook iets invullen. En als daar iets ingevuld is in die funname. Gaat hij je automatisch terug naar de login.php sturen (ik neem aan, dat de pagina zo noemt om in te loggen)


Dit zet je dan in de login.php, juist boven de submit knop
PHP:
<div style="position: absolute; left: -200px; top: -200px;">
     <input type="text" name="funname" id="funname" size="40" value="" />
</div>

En zo moet je pagina checklogin.php eruit zien
PHP:
<?php
 
ob_start();
$host="***"; // Host name
$username="***"; // Mysql username
$password="***"; // Mysql password
$db_name="***"; // Database name
$tbl_name="***"; // Table name
 
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("CAN NOT CONNECT. TRY LATER AGAIN.");
mysql_select_db("$db_name")or die("cannot select DB");
 
if(isset($_GET['mode'])){
	if($_GET['mode']=='post'){
		//dit is een post
		//nakijken of de dummy is ingevuld, is dat het geval, dan is dat een hack!
		if(trim($_POST['funname'])!=''){
			disconnectfromdb();
			//het is een hack! we sturen hem terug naar de login.php
			echo '<meta http-equiv="refresh" content="0;url=login.php" />';
		}else{
			//ok, geen hack, we kunnen verder!
// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
 
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
 
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
 
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
 
// If result matched $myusername and $mypassword, table row must be 1 row
 
if($count==1){
 
// Register $myusername, $mypassword and redirect to file "welcome.html"
session_register("myusername");
session_register("mypassword");
header("location:welcome.html");
}
else {
echo 'Fout wachtwoord of gebruikersnaam.';
}
 
ob_end_flush();
?>
 
RE@ kenikavanbis

wat vind je van de aanpassing
nu had ik graag ook je welcome.php gezien
PHP:
<?php
 
//ob_start();
$host="***"; // Host name
$username="***"; // Mysql username
$password="***"; // Mysql password
$db_name="***"; // Database name
$tbl_name="***"; // Table name
 
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("CAN NOT CONNECT. TRY LATER AGAIN.");
mysql_select_db("$db_name")or die("cannot select DB");
 
// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
 
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$mypassword = illegalcharconverter($mypassword);
$myusername = illegalcharconverter($myusername);
if(is_name($myusername)){die("YOUR SERIUS ABOUT YOUR NAME,I THINK IT SO!");}//save and remove this person is hacker behalve als email = username

if(is_sqlinject($mypassword)){die("DO NOT INJECT ME, O SORRY I DIEEEEEEEE !");}
if(is_sqlinject($myusername)){die("DO NOT INJECT ME, O SORRY I DIEEEEEEEE !");}
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
 
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
 
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
 
// If result matched $myusername and $mypassword, table row must be 1 row
 
if($count==1){
    // Register $myusername, $mypassword and redirect to file "welcome.html"
    session_register("myusername");
    session_register("mypassword");
                header("location:welcome.php");//******************************************
}else {
    echo 'Fout wachtwoord of gebruikersnaam.';
}
$password=null;//*******************************************
//ob_end_flush();
function illegalcharconverter($str){
    $chars=array("&"    ,"<"   , ">"   ,"!"    ,'"'    ,","    ,"$"    ,"'"    ,"*"    ,"+"   );
    $ascii=array("&","&lt;", "&gt;","!",""",",","$","'","*","+");
    return str_replace($chars,$ascii , $str); 
}
function is_sqlinject($var){//DROP TABLE	
 	return pos($var,"DROP TABLE")||pos($var,"DROP ")||(pos($var," WHERE ") && pos($var," OR "))||pos($var,"SELECT * FROM");
}
function is_name($var){
	return (is_avowel($var,5));//not posible name =>5 =>"schr"
}
function is_avowel($var,$max){
	$max =($max<1)?5:$max;
	for ($i = 0; $i < $max; $i++) {
	 	switch($arr[$i]):
		case "a":
		case "e":
		case "i":
		case "o":
		case "u":
				return true;
				break;
	    endswitch;	
	}
	return false;
}
?>
 
Alle goede bedoelingen ten spijt; het heeft *geen enkele* zin om iets te doen met strip_slashes, htmlspecialchars en andere zelfbedachte functies.

Je kunt SQL injectie *NIET* voorkomen met welke zelfbedachte functie dan ook, punt.

Dat klinkt hard maar het is zo. Er is zijn maar twee methoden die werken en zijn:
- alle data in je query *altijd* quoten en *altijd* door de escape functie van de database zelf halen.
- prepared queries gtebruiken.

Daarnaast: controleer niet of iets onveilig is, controlleer of het veilig is. Er is meestal maar een handjevol situaties waarin iets veilig is, terwijl er duizenden manieren zijn waarop iets onveilig is. Denken dat jij zomaar even al die situaties herkent is naief.
 
Alle goede bedoelingen ten spijt; het heeft *geen enkele* zin om iets te doen met strip_slashes, htmlspecialchars en andere zelfbedachte functies.

Je kunt SQL injectie *NIET* voorkomen met welke zelfbedachte functie dan ook, punt.

Dat klinkt hard maar het is zo. Er is zijn maar twee methoden die werken en zijn:
- alle data in je query *altijd* quoten en *altijd* door de escape functie van de database zelf halen.
- prepared queries gtebruiken.

Daarnaast: controleer niet of iets onveilig is, controlleer of het veilig is. Er is meestal maar een handjevol situaties waarin iets veilig is, terwijl er duizenden manieren zijn waarop iets onveilig is. Denken dat jij zomaar even al die situaties herkent is naief.


Das mijn mening niet

illegalcharconverter functie wordt niet juist weergegeven en kan je bekijken onder onderstaande link
http://code.google.com/p/autosite/s...ail.com/ autositeV2.8/function/data/valid.inc

Nu heb ik op mijn site lok aas geplaatst nu weet dat het aantal aanvallen op die plaats zeer hoog is nu weten de mensen die dit pogen te doen niet dat alles gelogt wordt met ip timestamp en get post cookies ect. ik heb afgelopen 30 dag meer aanvallen gezien dan afgelopen 2 jaar dus beveiligen lijkt meer dan nodig
bij sqlinjectie breng ik steeds mijn hosting op de hoogte zodat zij ook weet hebben van de toegepast injectie die bij mij geen vat heeft door de meerdere beveiligingen en ook e c o p s is één om te onthouden als er iets misloopt.
 
bij sqlinjectie breng ik steeds mijn hosting op de hoogte zodat zij ook weet hebben van de toegepast injectie die bij mij geen vat heeft door de meerdere beveiligingen en ook e c o p s is één om te onthouden als er iets misloopt.

Je hoster kan niets met die informatie, maar dat even ter zijde.


Je mist het punt denk ik; de twee methoden die ik postte zijn de enige twee manieren waarop je SQL injectie kunt voorkomen.

Dit:
function is_sqlinject($var){//DROP TABLE
return pos($var,"DROP TABLE")||pos($var,"DROP ")||(pos($var," WHERE ") && pos($var," OR "))||pos($var,"SELECT * FROM");
}

haalt in het geheel niets uit en signaleert alleen valse-positives. Jij staat nu niemand meer toe om het woord "DROP" te gebruiken, dus als ik "van geldrop" heet dan heb ik blijkbaar pech.

Daarentegen: als iemand iets probeert als "DELETE FROM information_schema WHERE tablename IN (SELECT name FROM information_schema.tables)" wat dus in pricipe elke tabel van je hele database weggooit,
dan pakt jouw "controle" dat niet op.

Een ander iets wat echt valt onder les #1 in veiligheid is dat je *NOOIT* aan een potentiele hacker laat weten dat jij hem door hebt. Jij denkt dat je een hacker blokkeert, maar intussen vertel jij de hacker precies wat hij fout zit te doen.


Validatie van je feitelijke inhoud van het formulier is een ander punt, maar ook daar geldt dat je niet moet gaan proberen om te herkennen dat iemand iets fout doet,
je kunt veel eenvoudiger en robuuster werken door een routine te maken die alleen toestaat wat je wel wilt toestaan, en dat is een kwestie van een regexp, geen ellenlange routines die gaan nadenken over html tags enzo.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan