Avatar billede techboy992 Praktikant
23. april 2013 - 14:20 Der er 25 kommentarer og
1 løsning

Kan jeg et bruger navn og en hashkey til at logge ind paa api via curl

Kan jeg bruge en hashkey til at ind til min api, min hashkey indeholder email, secret, timestamp og salt.

det skal bruges til en betalings api  jeg er helt paa herrens mark
hvordan jeg skal lave min access til apien jeg havde lidt cpanel i oeje da jeg overvejede en hash loesning.

function rand_string( $length ) {

$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return substr(str_shuffle($chars),0,$length);
}
    $salt = rand_string(40);
    $email= 'brugerens email';
    $password = 'brugerens password special';
    $timestamp = brugerens signup dato;
    $hash = sha1(uniqid($email . $password . $timestamp . $salt . mt_rand(), true));


er der en maade man kan faa loginscripted til automatisk at laese det og logge brugeren ind, hash kunne implanteres i kryterede filer i stedet for i database, for ekstra sikkerhed uden for public_html. og kaldes med paths.

som sagt det her er helt nyt emne for mig, men skal finde en god loesning for sikkerhed da vi haandterer betalinger med scriptet.
(updates af accounts betalinger via curl), fra andre sider saa alt er exposed over nettet derfor en form for kodning noedvendig foer det sendes til server fra brugerens hjemme side.

Nogen ideer ??
Avatar billede olebole Juniormester
23. april 2013 - 14:51 #1
<ole>

Som det allerførste skal du nok kikke på arne_v's guide omsalt og hashing. Dit nuværende hash-script lever næppe op til ønsket om sikkerhed

/mvh
</bole>
Avatar billede arne_v Ekspert
24. april 2013 - 04:07 #2
Den loesning ser meget suspekt ud.

Men hvad er konteksten?

Ved signup genererer den hash vaerdi en gang for alle, vaerdien gemmes i database eller fil og brugeren faar en kopi, ved API kald checker du om vaerdien er korrekt?

Eller?
Avatar billede techboy992 Praktikant
24. april 2013 - 08:46 #3
Jeg ved slet ikke noget om det, mit cms system hasher allerede paa brugernes konties, men jeg har brug at brugere skal kunne access api uden at skal angive password, ved at sende en variable via POST i curl, i stedet for et reelt brugernavn password, for at goere det mere simpelt for brugeren at programere til api.

Hvad jeg er ved at lave er et complet lisens system, hvor brugeren skal kunne faa adgang ved at bruge et salt og en license code til forespoerge / sende data til api, med post Kommandoer.

Licenscode ligger i en fil paa brugerens hjemmeside salt skal angives i en variable i det script, der forespoerger sender.

Hash ligger i databasen eller kan ligge i filer, hvis det er mere sikkert.

jeg ved ikke om jeg er helt paa omveje med den ide jeg har.
men som sagt saa er jeg helt blank hvordan til at goere det.
Avatar billede techboy992 Praktikant
24. april 2013 - 08:57 #4
Jeg er kun kommet til at skulle genere Hash Jeg ingen check ingen ting endnu , og syntes ikke rigtig jeg kan finde nogle kode exempler, til at kunne genere og checke det.

min ide var at lave hash som laengere oppe give salt til brugeren gemme hash i enten filer eller i database sammen med datoen for hash men vil systemet kunne checke de ting udfra hashed eller er hash ulaeseligt selv for serveren.

saa selve api scriptet automatisk hentede de ting i databasen og brugte salt som er sendt via POST til scriptet, til at decode hashed og igen checke database, for om tingene hang sammen, og loggede brugere ind til at sende naeste kommando.
Avatar billede techboy992 Praktikant
24. april 2013 - 09:10 #5
API er kun til at sende kommandoer som,

1. activate, suspend, terminate og edit checks
samt modtage meddelse om ny udlobsdato for licensen

2. Oprette en ny licens til en hjemmeside.


selve check om licens er gyldig og paa rette plads er komplet.

nu skal jeg saa til at kigge lidt paa API saa en bruger / client kan have betaling og oprettelse og kunne rette indstillinger fra eget clientsystem paa sin hjemme side.

men sikkerhed skal vaere i top for det derfor hash og salt til adgangen.
Avatar billede techboy992 Praktikant
24. april 2013 - 18:00 #6
streng bliver rigtig lang hvis skal bruge username og password
Her en exemple streng for at lave en ny licens:

$command=" musername=$username&mpassword=$password&mlicensecode=$mlicencecode&licensecode=$licensecode&command=createsub&name=Tom Dodi&username=tomdodi&email=tomdodi@some.com&domain23=tomdodi.com&domains=5&license=1&domain=1&path=0&IP=0&expiry=30&clientlogin=1";
Avatar billede techboy992 Praktikant
24. april 2013 - 18:29 #7
Hvis man kunne putte musernameog mpassword og de to licence koder in i en hash med sha1 og et salt saa ville de skaere noget af koden.

Saa ville koden blive:
$command="salt=bruger salt&command=createsub&name=Tom Dodi&username=tomdodi&email=tomdodi@some.com&domain23=tomdodi.com&domains=5&license=1&domain=1&path=0&IP=0&expiry=30&clientlogin=1";

hvis jeg har forstaaet ret at et hash kan laeses af serveren.
Hvis ikke kan laeses saa er der ikke nogen grund til at taenke i det laengere og bare bruge usernavn, password og sende det til login med curl.

Mit cms system bruger et eller andet specielt med md5(userid og password) saa vidt jeg har kunne laese mig frem til i ducumentationen for cms systemet, og generer en 40 chars lang streng, indeholdende password og userid.
Avatar billede arne_v Ekspert
25. april 2013 - 03:40 #8
5 indlaeg. Men det fremgaar stadigvaek ikke klart hvordan/hvornaar/hvor den hash genereres/bruges.
Avatar billede techboy992 Praktikant
25. april 2013 - 07:24 #9
Det er fordi jeg er lidt paa herrens mark omkring det

et simpel spoergsmaaal, kan server aabne et hash og laese det  eller er det en envejs krytering ??

api > kald fra extern hjemmeside med comandoer til at oprette,  editere en lisens eller bare faa oplysningerne for en lisens.

Har brug for en form for kryptering til at sende brugernavne og passwords til lisens serveren, saa siden kan logge ind og faa oplysninger fra databasen, via POST commandoer gennem CURL.

hvis man kunne sende en krypteret streng med de oplysninger der skal bruges, som serveren saa kan aabne og laese.

Man kan ikke forvente at alle websites har et SSL cert, naar det en side uden for min control der sender og faar oplysninger.

Derudfra taenkte jeg at maaske et hash var loesningen

Jeg ved intet om det, det er mit problem det er helt nyt for mig, stadig ny i at kode PHP.
Avatar billede techboy992 Praktikant
25. april 2013 - 07:49 #10
Andre skal ikke kunne laese strengen kun serveren, Passwords i databasen er allerede kodet, jeg bruger e107 CMS system til at styre login, uden at kalde header og footer til api. men stadig class2.php og et bruger class til master og sublicens, saa for at kunne faa oplysninger skal man vaere logget ind med sin bruger konto, via e107 login.

Hvad skal krypteres inden det sendes extern fra hjemmesiden:

Brugernavn
Password (40 chars) speciel kodning med md5 og sha-256 tror jeg.
Master lisens (40 chars).
Sub licens (40 chars).

Server skal saa kunne aabne og laese det og logge ind som bruger
og koere Komandoen og sende svaret retur til clienten og logge ud.

Form i login har username og userpass.
som den sender til login.php.

Logud kaldes simpelt med url/?logout.
Avatar billede olebole Juniormester
25. april 2013 - 09:50 #11
En god idé ville nok være at læse den guide, jeg linkede til i #1 - alternativt prøve at slå begrebet 'hash' op på Wikipedia. Bare så du får en fornemmelse af, hvad det er, spørgsmålet handler om  *o)
Avatar billede techboy992 Praktikant
25. april 2013 - 17:56 #12
hej ole jeg har provet at laese den man det meste i den guide er bare tal der ikke saa meget om hvad jeg kan bruge det til ud over hvilke metoder er staerke og vil tage saa og saa mange aar om at bryde.

Men det ikke rigtigt det svar jeg har brug for, mit spoergmaal er kan en server laese hash og bruge informationerne eller er det en envejs kryption.

Det jeg har brug for er en kryptering af nogle data, som serveren kan laese men andre ikke kan, med mindre de er meget gode hackere.

passwords er allerede kodet saa det ikke saa meget det jeg har brug for, har brug for en loesning hvor jeg kan sende data til serveren kodet, indeholdende de ting jeg skrev laengere oppe,

Jeg forstaar ikke saa meget af den guide som var linket til.
og syntes ikke rigtig den giver det svar jeg soeger :).
Avatar billede olebole Juniormester
25. april 2013 - 20:59 #13
Jeg forstår, at du ikke har læst guiden - selvom du ikke rigtig vil være ved det. Det er ret uklogt, da den jo besvarer dit spørgsmål på et krystalklart og letforståeligt dansk, som du med garanti forstår. Men det kræver en indsats udover et henkastet blik og en fejlagtig konstatering af, at 'det er bare tal og noget, jeg ikke forstår og ikke har brug for'
Avatar billede techboy992 Praktikant
26. april 2013 - 20:15 #14
Ja okay ole det over saa jeg envejs kryptering, saa hash er ikke hvad jeg soeger hmmm :)

Kan du give mig raad hvad jeg saa skal buge, for at kryptere nogle data der skal kunne laeses af server og ikke andre.

et password i min database ser saadan ud : 105215b35517410196e9be750d68e047 (oprettet ved sign up af cms)

selvfoelig kan jeg Obfuscate alting, men det giver heller ikke nogen meaning og goer det sloevt og er ikke 100% sikkert alligevel

Det jeg har brug for er noget med et password der sendes af clienten uden det password (salt eller hvad men kan) skal det ikke vaere muligt at kunne dekryptere data.
Avatar billede techboy992 Praktikant
26. april 2013 - 20:19 #15
Hvis bare bruger 64 bit unicode er det nemt at bryde og faa foelsomme oplysninger, eftersom der er mange sider, man kan decode det paa.
Avatar billede olebole Juniormester
27. april 2013 - 17:35 #16
@techboy992: Jeg tror, vi to er i samme båd: Ingen af os har den ringeste anelse om, hvad du søger - eller hvorfor.

For det første forstår jeg ikke, hvor du vil kryptere brugernavnet. For det andet forstår jeg ikke, hvorfor du ikke kan bruge en hash til password'et.
Avatar billede olebole Juniormester
27. april 2013 - 17:36 #17
Der skulle stå: "For det første forstår jeg ikke, [color:#c00]hvorfor[/color] du vil kryptere brugernavnet"  =)
Avatar billede olebole Juniormester
27. april 2013 - 17:37 #18
*LoL*  Der skulle stå: "For det første forstår jeg ikke, hvorfor du vil kryptere brugernavnet"  :D
Avatar billede techboy992 Praktikant
02. maj 2013 - 08:43 #19
hej ole

tak for dine svar, jeg har et problem mit internet har ikke kunnet gaa online i en uge nu har bestilt nyt, jeg vil komme tilbage til mit spoergsmaal saa snart jeg har net igen. er lige hos en ven nu for at checke min email. kan ikke arbejde herfra har ikke mine programmer her.
Avatar billede olebole Juniormester
02. maj 2013 - 16:27 #20
Det er helt fint, techboy992. Tak for tilbagemeldingen. Den er udtryk for en stil, man godt kan savne hos mange andre brugere  *o)
Avatar billede techboy992 Praktikant
05. maj 2013 - 08:27 #21
Saa er jeg tilbage igen :)

Her er hvad jeg er naet frem til har stadig ikke helt forstaaet det og vil gerne have det endeligt forklaret.

<?php
    function generateHash($password) {
        if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
            $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
            return crypt($password, $salt);
        }
            else {
        $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
                $password = hash("sha256", $password, $salt);
    }


gem kode i database

send email med salt og brugernavn

//autorizise

hent i database kode

   
    function verify($password, $hashedPassword) {
        return crypt($password, $hashedPassword) == $hashedPassword;
    }

// er lidt i tvivl her hvordan den kan autorize fra det mangler der ikke noget ??

kilde:
[url=http://phpmaster.com/password-hashing-in-php/[/url]
Avatar billede techboy992 Praktikant
05. maj 2013 - 08:37 #22
Det mindste man kan goere hvis men ikke lige kan vaere med er at give en tilbagemelding, saa dem der hjaelper en ikke skal sidde og vente forgaeves.

Det kan jeg godt lide selv, saa det goer jeg til andre selv saa snart det er mig muligt :).

Hilsen
Brian
Avatar billede techboy992 Praktikant
05. maj 2013 - 08:57 #23
Jeg har 2 Licenser der skal sendes , men det overvejer at lave om nu saa det kun er brugernavn, Password og salt der skal sendes til API for at kunne logge ind.

Brugernavne og passwords er generet strenge.
Saa bruger skal ikke signe op for at faa adgang det goer systemet selv med et nummer som brugernavn og et 10 char password, og sender en email med brugernavn og password samt salt.

Salt bliver ikke gemt i databasen, det er kun brugeren der har dette, saa hvis glemmer det skal der oprettes et nyt hash.

Email skal systemet faa paa tilbagemelding fra paypal.

Mangler stadig en form for kryptering mellem client og server saa password ikke sendes ukodet til serveren fra clientens website, da man stadig ikke kan regne med at alle clienter har et SSL certificat.
Avatar billede techboy992 Praktikant
07. maj 2013 - 05:47 #24
vil dette kunne goere det ??

<?php

$id = $_POST["user_id"];
$password= $_POST["password"];
$salt = $_POST["salt"];

//get hash from DB
mysqli_query ($con,"SELECT * FROM tbl where user_id='".$user_id."'");
    while (Srow=(musqli_fetch_array($result))
    $hashedpassword = ["$row["hash"];


//Check Hash
function generateHash($password) {
        if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
        //$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22); 
          return crypt($password, $salt);
        }
            else {
        //$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
        $password = hash("sha256", $password, $salt);
    }

if function verify($password, $hashedPassword) {
        return crypt($password, $hashedPassword) == $hashedPassword;
    }
      //logged in

Else {
    //Access denied
}
?>
Avatar billede techboy992 Praktikant
07. maj 2013 - 05:53 #25
Skal selvfoelgelig vaere:

if function verify($password, $hashedPassword) {
  return crypt($password, $hashedPassword) == $hashedPassword;
  //logged in 
}
Avatar billede techboy992 Praktikant
30. november 2013 - 00:44 #26
lukker spoergsmaal
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