Mod. otsikoi. Vanha otsikko: ”Miksi käyttäjä tunnus ja salasana eivät pysty suojamaan rekisteröidyn asiakkaan tilin?”
Minulla on pienen verkkokauppapalvelun perustamista varten hankittu sivusto. Sivusto on valmistettu PHP, Java, Ajax ja MySql Dbase pohjalta. Koodi on avoin lahdenkoodi.
Nyt kun kokeilu mielessä sivusto laiteltiin nettiin näkyväksi ja testi asiakas tili luotin, ilmeni ongelma niin että kuka tahansa ulkopuolinen voi kalikka rekisteröidyn asiakkaan sisäkirjautumisen kohdalla ja vapaasti pääse käsiksi rekisteröidyn asiakkaan tietoihin ilman käyttäjä tunnus ja salasanaa.
Kysymys on, miten voidaan pakottaa sisäkirjautumisen ehdolle ehdoton rekisteröinti, käyttäjä tunnus ja salasana?
Kiitos avustanne kun itse en ole koodaaja tai ohjemoija.
Pitäisi varmaan ensiksi tietää käytätkö jotain tunnettua julkaisujärjestelmää (puhut avoimesta lähdekoodista), ja jos käytät, niin uskoisin näiden vuosien kokemuksella, että kyseisessä julkkarissa voi jotenkin rajata kirjautuneiden ja kirjautumattomien pääsyä sivustolle.
Selkeästi silti tuntuu siltä, ettei sivustoa ole testattu tarpeeksi, kun vasta tässä vaiheessa tuommoinen huomattiin.
Viestistäsi ei käy kunnolla ilmi, mitä tapahtuu. Joka tapauksessa kirjautumisessa ja tietojen suojaamisessa on kolme olennaista vaihtetta: Ensin pitää tarkistaa, että syötetty tunnus ja salasana ovat oikeat. Istuntoon pitää tallentaa tieto käyttäjästä, joka on kirjautunut. Jokaisella sivulla pitää vielä tarkistaa, onko kirjautuneella käyttäjällä oikeus sivun katseluun. Selvästi sivustoltasi puuttuu jokin näistä kolmesta vaiheesta.
Kiitos paljon kommenttistanne Lebe80 ja Metabolix
Metabolix,
Se mitä tapahtuu:
Etusivun alapalkin oikealla puolella on asiakaan sisäiänkirjautuminen linkki joiden kautta rekisteröidyt asiakkaat voivat sisäänkirjautua milloin tahansa käyttäen käyttäjä tunnuksessa (email) ja salasanansa.
Kun etusivulla olevan asiakkaan sisäiänkirjaus linkin päälle klikataan avautuu seuraavaa sivu jossa lukee seuraavasti:
Asiakaan sisäiänkirjaus »
Email ......
Password ...... Kirjaudu sisään
Tervetuloa!
Ravintolan ylläpito >>>
Oletko unohtanut salasanasi? »
Unohtuiko salasanasi? »
1. Sitten nyt jos rekisteröitynyt asiakas kirjoitta oikean käyttäjä tunnuksensa(email) ja oikean salasanassa ja klikkaa "Kirjaudu sisään" linkin päälle niin pääse omalle seuraavalle asiakas sivulle. Tämä on OK.
2. Jos kuka tahansa klikkaa etusivulla olevan "asiakkaan sisäiänkirjaus" linkin ja seuraavalla sivulla suoraan "Kirjaudu sisään" linkin päälle ilman käyttäjä tunnuksen ja salasanan kirjoittamista myös pääse testi asiakkaan sivulle. Tämä on se ongelma.
Tietenkin jos voidaan sisääkirjautua ilman käyttäjä tunnus ja salasana niin toiminnalla ei ole oikeus.
Toisaalta tällä hetkellä on vain yksi testi rekisteröity asiakas tarkistaaksemme miten sivusto toimisi kun asiakkaat alkavat rekisteröityä. Kuitenkin tässäkin tapauksessa käyttäjä tunnus ja salasana ovat oikeat.
Koodi on PHP kielellä valmistettu avoinlahde koodi joka voidaan editoida Cpanelin File manager, yms:n kautta.
terveisin,
Kyseessä on avoin lähdekoodi. Eli koodia voi ilmeisesti tutkia jossain. Missä?
Tarkista, että salasana ja käyttäjätunnus ovat oikein. Estä kirjautuminen, jos ne ovat väärin.
Kiitos arvokkaasta avustanne!
salasanan ja käyttäjätunnuksen tarkista järjestelmä automaattisesti jos käyttäjätunnuksen kirjoitetaan sille tarkoitetulle kentälle myös salasanan sille tarkoitetulle kentälle ja tämän jälkeen klikataan "KIJAUDU SISÄÄN". Tässä tapauksessa järjestelmä hyväksy vain aikaisemmin rekisteröityneet ja oikean käyttäjätunnuksen ja salsana omaavat koska niitä ovat koneen muistissa kun taas väärällä tunnuksella ja salasanalla ei pysty kirjautumaan sisään.
Ongelmana on kun kuka tahansa rekisteröimätön henkilö suoraan kilkkaa "KIRJAUDU SISÄÄN" linkin päälle ilman mitään salasanan ja käyttäjätunnuksen kirjoittamista järjestelmä avaa suoraan rekisteröidyn asiakkaan sivulle. Silloin on vaikea estää kutsumattomat vieraat.
Olen kopioinut asiakkaan sisään kirjautumisen ohjaavan tekstin ja sen takana olevia koodeja etäpalvelimeen Cpanelin file Managerin kautta . Restaurant = Asiakas.
Anteeksi jos asia näytä pitkästyttävältä.
/// login retaurant $TEXT_RESTAURANT_LOGIN="Ravintolan sisäänkirjautuminen"; $RESTAURANT_ONLY=" (vain ravintolan ylläpitäjät!)"; $TEXT_WELCOME="Tervetuloa"; $TEXT_RESTAURANT_ADMIN="Ravintolan ylläpito"; $TEXT_REGISTER_AS_NEW_RESTAURANT="Oletko unohtanut salasanasi?"; $TEXT_FORGOT_PASSWORD_RESTAURANT="Unohtuiko salasanasi?";
<? session_start(); include('classes/secure.class.php'); // include the class $secure = new secure(); // load the class $secure->secureGlobals(); // run the main class function include ('classes/simplesanitize.php'); $get = new SimpleSanitize('get', 'html', 100); include("config.php"); include("functions.php"); include("templates/commonheader.php"); if (empty($_SESSION['lang'])) $_SESSION['lang'] = $default_language; if (empty($lang)) $lang = $default_language; if (empty($_SESSION['curren'])) $_SESSION['curren'] = $lead_currency; if (empty($curren)) $curren = $lead_currency; include("lang.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="<?=$_SESSION['lang']?>"> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?=$charset?>"> <title><?=$sitetitle?></title> <meta name="robots" content="index,follow" /> <meta name="keywords" content="<?=$sitekeywords?>" /> <meta name="description" content="<?=$sitedescription?>" /> <script type="text/javascript" src="inc/js/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="inc/js/custom.js"></script> <link href="inc/style.css" rel="stylesheet" type="text/css" /> <link href="css/css.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="./fancybox/jquery.mousewheel-3.0.4.pack.js"></script> <script type="text/javascript" src="./fancybox/jquery.fancybox-1.3.4.pack.js"></script> <link rel="stylesheet" type="text/css" href="./fancybox/jquery.fancybox-1.3.4.css" media="screen" /> <link rel="stylesheet" href="style.css" /> <script type="text/javascript"> $(document).ready(function() { /* * Examples - images */ $("a[rel=group]").fancybox({ 'transitionIn' : 'none', 'transitionOut' : 'none', 'titlePosition' : 'over', 'titleFormat' : function(title, currentArray, currentIndex, currentOpts) { return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' ' + title : '') + '</span>'; } }); $("#various3").fancybox({ 'width' : '80%', 'height' : '95%', 'autoScale' : false, 'transitionIn' : 'none', 'transitionOut' : 'none', 'type' : 'iframe' }); $("#various5").fancybox({ 'width' : '80%', 'height' : '95%', 'autoScale' : false, 'transitionIn' : 'none', 'transitionOut' : 'none', 'type' : 'iframe' }); }); </script> <div id="bannerWrap"> <script language="javascript"> $(document).ready(function() { $("#login_form_restaurant").submit(function() { //remove all the class add the messagebox classes and start fading $("#msgboxr").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000); //check the username exists or not from ajax $.post("restaurant/ajax_login_restaurant.php",{email:$('#emailr').val(),password:$('#passwordr').val(),rand:Math.random() } ,function(data) { if(data=='yes') //if correct login detail { $("#msgboxr").fadeTo(200,0.1,function() //start fading the messagebox { //add message and change the class of the box and start fading $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900,1, function() { //redirect to secure page parent.document.location='restaurant/index.php'; }); }); } else { $("#msgboxr").fadeTo(200,0.1,function() //start fading the messagebox { //add message and change the class of the box and start fading $(this).html('Your login detail are false...').addClass('messageboxerror').fadeTo(900,1); }); } }); return false; //not to post the form physically }); //now call the ajax also focus move from $("#passwordr").blur(function() { $("#login_form_restaurant").trigger('submit'); }); }); </script> </head> <h3><?=$TEXT_RESTAURANT_LOGIN?> <? if ($demo_mode== 'ON') echo 'DEMO';?></h3> <form name="login_form_restaurant" action="#" id="login_form_restaurant"> <input id="emailr" name="email" type="text" placeholder="email" value="<? if ($demo_mode== 'ON') echo 'test@test.com';?>"> <br> <input id="passwordr" name="password" type="password" placeholder="password" value="<? if ($demo_mode== 'ON') echo 'test';?>"> <input type="submit" id="submit" class="btn radius fr" value="<?=$TEXT_SIGNIN?> »" /> </form> <span id="msgboxr" style="display:none"></span> <br> <?=$TEXT_WELCOME?> <? echo $_SESSION['restaurant_name'] ;?>! <br> <a target="_parent" href="restaurant/index.php"><?=$TEXT_RESTAURANT_ADMIN?> >>></a> <br> <a target="_parent" href="register_restaurant.php"><?=$TEXT_REGISTER_AS_NEW_RESTAURANT?> »</a> <br> <a target="_parent" href="forgot_password_restaurant.php"><?=$TEXT_FORGOT_PASSWORD_RESTAURANT?> »</a> </div>
Mod. lisäsi kooditagit!
Tuossa koodissa ei ole mitään käyttäjätunnuksen tai salasanan tarkistusta. Vika olisi ehkä tiedostossa restaurant/ajax_login_restaurant.php.
Minulle jäi vielä epäselväksi, miten tämä projekti on tarkoitus tehdä, jos kerran itse et osaa ohjelmoida yhtään. Sinun on varmaan viisainta palkata koodari tai tilata verkkokauppa jostain valmiina, jos haluat saada sen turvallisesti toimimaan.
Hyvänä vinkkinä tarjoilen. Tee sivusto jonkin valmiin julkaisujärjestelmän päälle, jolloin sinun ei tarvitse käyttää aikaa kirjautumis-, sivupuu-, yms. perusrutiineihin. Kirjautuminen on tällöin todennäköisesti myös turvallinen, kunhan vain muistat päivittää tietoturva-asetukset.
Tällöin ammattilaiset ovat miettineet nämä asiat puolestasi. Sinulle jää tehtäväksi vain ulkoasu.
Kiitos teille hyvästä palautteesta.
Vika voi olla "tiedostossa, restaurant/ajax_login_restaurant.php." kuin Metabolix kirjoiti.
Toisaalta valmis kotisivun ylläpito ja hallinnointi eivät valtaamatta vaadi ohjelmoijan ja koodaajan taitoa vaikka olisi hyvä olla. Tietenkin tekninen tuki tarvitaan silloin talloin koska pieniä pulmia tulee ja menee jatkuvasti varsinkin alussa.
Muuten tämä sivusto on asiallisesti ja ammattimaisesti valmistettu toimiva portaali. Se on valmistettu monella kielellä ja monessa maassa monipuolisesti toimivaksi sivustoksi.
1. Nyt kun itse haluan käyttää vain Suomessa ja vain suomen kielellä, niin joudun poistamaan muut kielet paitsi suomea ja muut maat paitsi Suomi. Kielet olen poistanut mutta monet muut maat en vielä pystynyt poistamaan tiedostosta.
2. Lisäksi sivuston osiossa on Googlen satelliittikartta jonka portaalin kehittäjä on asettanut englannin maakartan päälle mutta itse haluaisin asetta sen Suomen maakartan päälle tai pistä pois päältä kokonaan. Toki voidaan vetää kartan hiirellä ja osoita mihin tahansa osoitteen päälle suomessa mutta se ei tunnu hyvältä mennään englannin asti vetämään suomalaisten osoitteen päälle. Yksi kaveri sanoi, ”menee ja editoi http://www.w3schools .com/googleapi/google_maps_controls.asp” mutta en pystynyt editoimaan.
Mitä neuvoksi 1 & 2 ongelmien kodalla?
terveisin
2. Miksi et pystynyt editoimaan?
Emme tiedä sivustosi lähdekoodia, joten emme voi auttaa. Sinun pitää näyttää koko lähdekoodi. (Älä lähetä sitä tänne, vaan kerro, mistä sen voi ladata.)
Hei,
Kiitos teille hyvästä neuvonannosta.
Tässä sivuston osoite: www.pitzza.fi
Yläpalkin kohdalla on "ehdota ravintola" koment ja sen takana seuraavalla sivulla on google kartta englannin maakartan ylapuolella. Halusin sen olevan Suomen maa karttaan ylapuolella.
Myös ylläpalkin kohdalla on näkyvissä "Finland" ja sen alapuolella ovat pitkä lista muita maait. Halusin kaikki maat piilon pätsi "Finland"
terveisin :)
Tuota...
Tiedättekö miten tämän kyseisen italialaisperäisen ruoan nimi kirjoitetaan? Se on "pitsa" tai "pizza". Nyt tuo domain tuo minulle mieleen vain jonkun trollivirussivuston.
Eki++,
Olet vain turhan ennakonluuloinen ja vainoharhainen. Kuin tiedtään domain nimi (verkkotunnus)on vain domain nimi ja se voi olla pizza, pitsa, pitzza, piittza, pittzza jne. Mitä niistä tekee troolivirussivusto? Moraalittomia lausahduksia!
Voi olla myös rikos kun perättömästi mustamaalataan yritysten tunnusta.
Verkkotunnus on virallisesti rekisteröinyt Viestintävirasto ja jos olet sitä mieltä että sivusto on troolivirussivusto miksi et ota yhteyttä viestintäviraston ja valehdella heille kuin valheen levittäminen foorumissa ja johtaa harahan myös hyviä amatti ihmisiä?
Itse asiassa luulin tämän foorumin olevan asiallinen asiantuntia foorumi eikä epäasiallisten lausahduksen foorumi vaikka tässä on vain yksi henkilö.
Domain nimelle ole mitään raja päitsi omassa ajatuksessasi. Domain nimen yksi tärkeä ominaisuus on erottavuus ja omaperärisuus. Kun pitsa tai pizza sanat ovat pilven pimeä miksi en laittaisi pitzza erottuakseni? Maailma palkitse kekseliässuutta paljon eikä vainoharhaisuutta. ):
Surkea kieli sivustolla domainista alkaen, arvonlisäverovelvoton yritys ja hyökkäävä kirjoitustyyli kielii trollista. Postaan eeppiseen.
"...hyökkäävä kirjoitustyyli kielii trollista. Postaan eeppiseen" ~tossu. kkkkkkkk.....
Entäs, "trollivirussivuston" Eki++? Häpeällista ja hyökkäävä valhe!! On itsetukiskelun aika!!!
Mua on muuten aina hämännyt tällaiset "Copyright http://www.pitzza.fi"
Tarkoittaako tuollainen ilmoitus, että jos domaini siirtyisi toiselle taholle (esimerkiksi edellinen omistaja unohtaisi uusia domainin), niin tekijänoikeudet siirtyisivät myös?
Grez kirjoitti:
Mua on muuten aina hämännyt tällaiset "Copyright http://www.pitzza.fi"
Tarkoittaako tuollainen ilmoitus, että jos domaini siirtyisi toiselle taholle (esimerkiksi edellinen omistaja unohtaisi uusia domainin), niin tekijänoikeudet siirtyisivät myös?
Siten minä sen ainakin ymmärrän. :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.