Avatar billede tras Juniormester
07. marts 2007 - 12:08 Der er 42 kommentarer og
1 løsning

Sikkerhed login oprettelse

Hej jeg har en side med en del bruger og er lige blevet hacket. :/

Jeg skal bruge et mere sikkert oprettelses / login system så men ikke kan tvinge sig adgang til min hjemmeside.

Jeg tager imod alle bud.
Avatar billede tras Juniormester
07. marts 2007 - 12:10 #1
Problemet er at nogle har lavet en exploid og kunne uploade nogle html dokuemnter og en virus :/ ikke noget som jeg syntes er sjov. Heldig vis har jeg en lidt spesial måde at sende folk rundt på min side så ingen kom ind på den nye index.html side og fik virus.
Avatar billede showsource Seniormester
07. marts 2007 - 12:16 #2
Koden for din upload må du gerne vise her.
Man skal vel være logget ind for at uploade?
Avatar billede sjh Nybegynder
07. marts 2007 - 12:20 #3
Måske du også skulle se lidt på dit system (Hvis det er windows server) god ide at opdater den. Få en ordenlig firewall på (gerne en hardware) opdater dit antivirus program hver dag.

Hvis disse ting ikke er i top, så kan det jo være et nok så godt login system. (hackeren kommer som realt ind gennem de hulder som er i styre systemet)
Avatar billede tras Juniormester
07. marts 2007 - 12:24 #4
hehe du kan ikke uploade fra min side af, men de har så lavet en exploid på mine text felter vil jeg tror

Poster alle mine forms osv.


<form method="post" action="login.php"><br />
                <input name="username" type="text" value="Brugernavn" style="border:1px black solid;" /><br />
                <input name="password" type="password" value="Password" style="border:1px black solid;" /><br />
                <input name="submit" value="Login" type="submit" style="border:1px black solid;" />
            </form>


<?php
include("func.php");
DB::Conn("open");
session_start();

// check is form is submittet

if (isset($_POST['submit'])) {
   
    // cleans up the username and password to work with the database, and to help prevent fraud logins
   
    $username = trim($_POST['username']);
    $password = md5(trim($_POST['password']));
   
    // if the username and / or password is empty report it to user and return
   
    if(!$username || !$password){
        Java::Alert("Du har glemt at skrive i alle felter!");
        Java::GoToURL("index.php?page=form_login");
        die;
    }
   
    // Searches the database for a user ho match the posted username
   
    $result = mysql_query("SELECT * FROM webhosteu_users WHERE username = '$username' LIMIT 1");
   
    // Loops through the result to match a user and password, then starts a session to keep them logged in
   
    while($r=mysql_fetch_assoc($result)){
   
        if(($r['username'] == $username) && ($r['password'] == $password && ($r['activation'] == "valid"))){
       
            // Sets the session's name
           
            session_name("sid");
           
            // Starts the session
           
            session_start();
           
            // Sets the username in the session to be passed from page to page
           
            $_SESSION['username'] = $username;
           
            // Sets the username in the session to be passed from page to page
           
            $_SESSION['type'] = $user_rating;
           
           
           
        }elseif(!$r['activation'] == "valid"){
       
            // kills the script if the user has not been activated
           
            Java::Alert("Du har ikke bekraftet din E-mail i nu, se om du har modtaget en E-Mail med et link");
            Java::GoToURL("index.php?page=form_login");
            die;
           
        }else{
       
            // kills the script if something didn't match up above
           
            Java::Alert("Dit brugernavn eller password er forkert. Prøv igen");
            Java::GoToURL("index.php?page=form_login");
            die;
           
        }
    }
   
    // Checks to make sure the session's username was set, or kills the script
   
    if(empty($_SESSION['username'])){
   
        Java::Alert("Der er sket en fejl, prøv at logge ind igen eller skriv til admin");
        Java::GoToURL("index.php?page=form_login");
        die;
   
    }

    // Go back to form_login
    Java::GoToURL("index.php?page=form_kundedata");
       
}else{

    // Stop siden og gå tilbage "hackker"
    Java::Alert("Der er sket en fejl, prøv at logge ind igen eller skriv til admin");
    Java::GoToURL("index.php");
       
}
?>
Avatar billede tras Juniormester
07. marts 2007 - 12:24 #5
Login delen
Avatar billede tras Juniormester
07. marts 2007 - 12:25 #6
Oprettelses delen


<form action="insert_user.php" method="post">
    <tr>
        <td>Brugernavn*:</td>
        <td><input type="text" name="username" maxlength="10"></td></tr>
    <tr>
        <td>Password*:</td>
        <td><input type="password" name="password" maxlength="50"></td>
    </tr>
    <tr>
        <td>Gentag Password*:</td>
        <td><input type="password" name="password_validation" maxlength="50"></td>
    </tr>
    <tr>
        <td>E-Mail*:</td>
        <td><input type="text" name="email" maxlength="100"></td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input type="submit" name="submit" value="Opret" style="border:0px black solid;"><br /><br /></td>
    </tr>
    </form>




<?php
include("func.php");
DB::Conn("open");

if (isset($_POST['submit'])) { // if form has been submitted

    // check if posted fields are empty
   
    if (!$_POST['username'] | !$_POST['password'] | !$_POST['password_validation'] | !$_POST['email']) {
        Java::Alert("Du har glemt at skrive i alle felter!");
        Java::GoToURL("index.php?page=form_opret");
        die;
    }
   
    // check if username exists in database.
    $SQL = "SELECT username FROM webhosteu_users WHERE username = '".$_POST['username']."'";
  $result = mysql_query($SQL);
  $name_check = mysql_num_rows($result);
  if ($name_check != 0) {
        Java::Alert("Det Brugernavn '".$_POST['username']."' er i brug, vælg venligst et andet. ");
        Java::GoToURL("index.php?page=form_opret");
      die;
  }
   
    // check if username exists in database.
    $SQL = "SELECT email FROM webhosteu_users WHERE email = '".$_POST['email']."'";
  $result = mysql_query($SQL);
  $email_check = mysql_num_rows($result);
  if ($email_check != 0) {
        Java::Alert("Den intastet E-Mail existere i systemet '".$_POST['email']."' vælg venligst en andet. ");
        Java::GoToURL("index.php?page=form_opret");
      die;
  }

    // check if passwords match

    if ($_POST['password'] != $_POST['password_validation']) {
        Java::Alert("Dine password passer ikke sammen!");
        Java::GoToURL("index.php?page=form_opret");
        die;
    }

    // check e-mail format

    if (!preg_match("/.*@.*..*/", $_POST['email']) | preg_match("/(<|>)/", $_POST['email'])) {
        Java::Alert("Du har ikke skrevet en rigtig E-Mail adrasse");
        Java::GoToURL("index.php?page=form_opret");
        die;
    }

    // no HTML tags in username and password

    $_POST['username'] = strip_tags($_POST['username']);
    $_POST['password'] = strip_tags($_POST['password']);

    // encrypt password

    $_POST['password'] = md5($_POST['password']);
   
    // get date
   
    $regdate = date('d m, Y');
   
    // insert values into database
   
    mysql_query("INSERT INTO webhosteu_users (
    username,
    password,
    regdate,
    email
    ) VALUES (
    '".$_POST['username']."',
    '".$_POST['password']."',
    '$regdate',
    '".$_POST['email']."'
    )") or die (Java::Alert("MySQL Error: ".mysql_error()));
    Java::Alert("Du er nu oprettet");
    Java::GoToURL("index.php");
}?>
Avatar billede tras Juniormester
07. marts 2007 - 12:26 #7
unix system med PHP5 og nyeste phpmyadmin
Avatar billede tras Juniormester
07. marts 2007 - 12:28 #8
Tror de har brugt denne form til at uploade deres lort fra.

<form method="post" action="insert_kontakt.php"><br />
                    <input name="valid" value="kontakt" type="hidden" />
                    <input name="subject" type="text" value="Overskrift" style="border:1px black solid;" /><br />
                    <input name="email" type="text" value="E-Mail" style="border:1px black solid;" /><br />
                    <textarea name="contents" cols="40" rows="15" style="border:1px black solid;">Din Besked</textarea><br />
                    <input name="submit" value="Send" type="submit" style="border:1px black solid;" />
                </form>



<?php
include("func.php");
DB::Conn("open");

if (isset($_POST['submit'])) { // if form has been submitted

    // check if posted fields are empty
   
    if (!$_POST['subject'] | !$_POST['email'] | !$_POST['contents']) {
        Java::Alert("Du har glemt at skrive i alle felter!");
        Java::GoToURL("index.php?page=form_kontakt");
        die;
    }

    // check e-mail format

    if (!preg_match("/.*@.*..*/", $_POST['email']) | preg_match("/(<|>)/", $_POST['email'])) {
        Java::Alert("Du har ikke skrevet en rigtig E-Mail adrasse");
        Java::GoToURL("index.php?page=form_kontakt");
        die;
    }

    // no HTML tags in username and password

    $_POST['subject'] = strip_tags($_POST['subject']);
    $_POST['contents'] = strip_tags($_POST['contents']);
   
    // get date
   
    $regdate = date('d m, Y');
   
    // insert values into database
   
    mysql_query("INSERT INTO webhosteu_kontakt (
    subject,
    email,
    regdate,
    contents
    ) VALUES (
    '".$_POST['subject']."',
    '".$_POST['email']."',
    '$regdate',
    '".$_POST['contents']."'
    )") or die (Java::Alert("MySQL Error: ".mysql_error()));
    Java::Alert("Din besked er modtaget og vil blive besvaret inde for 24 timer");
    Java::GoToURL("index.php");
}?>
Avatar billede showsource Seniormester
07. marts 2007 - 12:28 #9
Lyder som om det er serveren som er hacket, ikke dine scripts
Avatar billede sjh Nybegynder
07. marts 2007 - 12:34 #10
det kan også være din sql-server som hackeren har fundet password på.. så kan (hackeren) jo rette og slette hvad som helst på din hjemmeside, og der med har (hackeren) skaffet sig adgang til hele din hjemmeside.
Avatar billede showsource Seniormester
07. marts 2007 - 12:34 #11
Men derudover kan du jo lade felter med brugernavn og email være UNIQUE i din tabel, så samme navn, email ikke findes mere end en gang. ( sparer lidt sql )

og i din login ville jeg bruge mysql_real_escape_string()
$result = mysql_query("SELECT * FROM webhosteu_users WHERE username = '". mysql_real_escape_string($username) ."' AND password = '". mysql_real_escape_string($password) ."' AND activasion = 'valid'");
Avatar billede sjh Nybegynder
07. marts 2007 - 12:37 #12
hvis det er din sql-server, så kan du lukke for port 3306 i din firewall og bruge localhost fra din php
Avatar billede tras Juniormester
07. marts 2007 - 12:38 #13
Nej tror ikke det er min sql idet at der er blevet uploaded html dokumenter og en fil med virus. ikke lige fram SQL'en
Avatar billede sjh Nybegynder
07. marts 2007 - 12:39 #14
også en ide at bruge md5(psaaword) så er der ikke nogle som kan se det.
Avatar billede tras Juniormester
07. marts 2007 - 12:40 #15
hvad gør  mysql_real_escape_string?
Avatar billede tras Juniormester
07. marts 2007 - 12:40 #16
Bruger md5 password
Avatar billede tras Juniormester
07. marts 2007 - 12:42 #17
Men han har vel bruteforced min ftp *!?. Hoster ikke selv min hjemmeside men web10
Avatar billede sjh Nybegynder
07. marts 2007 - 12:42 #18
Kommentar: tras
07/03-2007 12:38:34

Jo det kan det godt være (hackeren) kan jo lave en login til sig selv... og så ved vi jo nok havd klokken er slået.. derefter kan (hackeren) jo slette login igen og har slettet signe spor..
Avatar billede sjh Nybegynder
07. marts 2007 - 12:43 #19
Kommentar: tras
07/03-2007 12:40:23

hæ fik jeg ikke lige set..
Avatar billede tras Juniormester
07. marts 2007 - 12:45 #20
Men ellers syntes i ikke der er noget galt med mine scripts og forms*?! de er sikre nok ikke?!

ps har endret alle password :/ kedeligt
Avatar billede sjh Nybegynder
07. marts 2007 - 12:48 #21
ok det er hos web10.

så kan du vel skrive en e-mail til dem, eller ændre din adgangskode til fx. eW9ujP2kq4Y eller noget som ikke er til at gætte.
Avatar billede tras Juniormester
07. marts 2007 - 12:51 #22
Har lavet et fucked ud password, men de gider ikke bruge nogle resurser på at finde ud af hvad der er sket! de er håbløse og deres mail system virker aldri :P Savner faktisk one.com ordenlig service
Avatar billede sjh Nybegynder
07. marts 2007 - 12:56 #23
Du kan fx.

// login siden

$_SESSION["logonid"] = md5(uniqid(rand(), true));
<input type="hidden" name="logonid" value="<?=$_SESSION["logonid"];?>">


// siden som tjekker din login
if ($_POST["logonid"] == $_SESSION["logonid"])
{

}

Det vil sige at man ikke kan poste til (siden som tjekker din login) før man har været inde på en anden eller den samme side. det bruges dog mest for at ungå spam
Avatar billede sjh Nybegynder
07. marts 2007 - 12:57 #24
Kommentar: tras
07/03-2007 12:45:59

Nej det ser vel godt nok ud..
Avatar billede sjh Nybegynder
07. marts 2007 - 12:59 #25
Ja men så må du jo bare betale for det hos (one.com) har ikke god afaring med one.com eller (b-one)
Avatar billede sjh Nybegynder
07. marts 2007 - 13:02 #26
Skulle være

// siden som tjekker din login
if ($_POST["logonid"] != $_SESSION["logonid"])
{
  exit;
}
Avatar billede tras Juniormester
07. marts 2007 - 13:04 #27
havde det fint lige indtil jeg fik for mange hits og de lukkede dem :/ blev faeme sur. ved web10 køre det fint nok bare altid problemer med mail servern så den virker ikke 70% af tiden. og så er deres support 100% dårlig
Avatar billede sjh Nybegynder
07. marts 2007 - 13:10 #28
Ja da kan du se hvad (one / b-one) er vær..
Avatar billede tras Juniormester
07. marts 2007 - 13:13 #29
:P kan godt forstå de ikke kunne lide at få 5000 besøgene på 3 timer. :P  tager en del resurser
Avatar billede sjh Nybegynder
07. marts 2007 - 13:16 #30
Ja der det ikke det Du har betalt dem for da??
Avatar billede tras Juniormester
07. marts 2007 - 13:18 #31
der står faktisk at du ikke må havde mere end 500 besøgene i timen. og det er lige at stammen den :P
Avatar billede sjh Nybegynder
07. marts 2007 - 13:20 #32
5000 besøgene på 3 timer??????????? den side vil jeg godt se!
Avatar billede sjh Nybegynder
07. marts 2007 - 13:22 #33
Ja hvorfor laver de (one / b-one) så lige sådan en webservice for.. (mere end 500 besøgene)
Avatar billede sjh Nybegynder
07. marts 2007 - 13:23 #34
Jeg kunne fåstå det hvis det var gratis webservice..
Avatar billede tras Juniormester
07. marts 2007 - 13:28 #35
Jeg havde www.gamersloot.dk for 2 år siden og lavede et tilbud hvor de første 7000 som tilmælte sig nyheds breve i 1 år fik spillet gratis. Det var en kanon handel men de lukkede så siden der efter. :( og vi var nede i 1 uge før vi fik den op at køre.
Avatar billede sjh Nybegynder
07. marts 2007 - 13:29 #36
Hvis du ser under: FRI Trafik.

Trafik
Trafik er et udtryk for, hvor mange ressourcer, besøgende på dit website og din brug af e-mail trækker på serveren.

-> (besøgende på dit website) skulle det så ikke vær iorden med 100.000.000 besøgende ????????

ref: https://www.one.com/da/
Avatar billede tras Juniormester
07. marts 2007 - 13:29 #37
nyhedbrev + reklame
Avatar billede tras Juniormester
07. marts 2007 - 13:31 #38
Nu var det den gang det hed b-one.dk

Vi fik en dejlig besked om at siden var lukket forde vi brugte for mange ressourcer.
Avatar billede tras Juniormester
07. marts 2007 - 13:32 #39
ubs spillet eve-online.
Avatar billede tras Juniormester
07. marts 2007 - 13:33 #40
Tror nu det nok mest var SQL servern som blev belasted.
Avatar billede sjh Nybegynder
07. marts 2007 - 13:34 #41
Jeg har selv været hos b-one og jeg er helt sikker på det var samme tekst som stod det, dog kom teksten op i et popup vindue..

Når det var jo ikke (one / b-one) som var problemet. :D

men dit script ser godt nok ud.
Avatar billede tras Juniormester
07. marts 2007 - 13:36 #42
Nå dejlig snak vi fik her, jeg skal desvære ud til en kunde og lave noget. Vis du laver et svar vil jeg give dig nogle points.


Hilsen Nick
Avatar billede sjh Nybegynder
07. marts 2007 - 13:38 #43
Godt nok :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester