Avatar billede dstjulle Nybegynder
09. juli 2009 - 13:48 Der er 23 kommentarer og
1 løsning

kan man lave en POST i en link ?

Hej

jeg har lige et problem jeg er ved at lave en list og den bruger jeg GET til at lave link med men så kan man se det i linken (&id=3) kan man lave det på en anden måde måske men post i en link ellers er der andre måder man kan gøre det på så man ikke kan ændre iden ?
Avatar billede showsource Seniormester
09. juli 2009 - 14:08 #1
Med javascript kan du godt poste en form via et alm. link.
Men en bruger kan jo altid se i kildekoden hvad der skal postes
Avatar billede dstjulle Nybegynder
09. juli 2009 - 14:10 #2
ja men vil godt have det i php html ( ikke java )
Avatar billede repox Seniormester
09. juli 2009 - 15:21 #3
Hvad er det du gerne vil opnå?
Er det for at sikre dig at folk ikke kan ændre linket?
Det ville være omsonst idet at du aldrig ville kunne sikre dig det alligevel.

Typisk er det noget folk ønsker at gøre i forbindelse med en usikker webapplikation. Hvis man ønsker at gøre data utilgængelige for andre ved at sløre URL'en gennem krypterede strenge.

Hvis du nu beskrev hvad dit problem var og hvad du gerne ville have løst kunne brugerne her sikkert komme med en mere simpel og sikker løsning (i tilfælde af jeg har ret i min antagelse).

Men udover det er det ikke nemt at give dig gode råd ud fra så vag en beskrivelse.
Avatar billede mcb2001 Nybegynder
09. juli 2009 - 15:22 #4
der er ingen reel forskel på POST og GET - og selv om dine brugere kan se det i adressebaren - hvis du bruger POST kan dine brugere bare se det i koden istedet for.

Så lad være at tro at der er forskel - skriv derimod din kode så det er lige gyldigt om folk kan se det eller ej.
Avatar billede dstjulle Nybegynder
10. juli 2009 - 08:47 #5
jeg ved godt at folk kan se ene POST i killekoden men der kan man jo ikke lige lave den om ;-) så jeg søger en måde hvor man kan lave denne om så ige ikke skal bruge GET men POST til at finde den med

<a href='?side=firma/up_profil&id=$firma[id]'>$firma[navn] $firma[TYPE]</a>

er det mulig eller hvad ?
Avatar billede repox Seniormester
10. juli 2009 - 09:03 #6
Det nytter ikke noget at gentage sit spørgsmål.
Du har sådan set fået svar - jeg har endda spurgt ind til hvad behovet er, siden du vil forsøge at lave noget så omsonst.

Der er principielt ikke noget formål i at ville 'låse brugeren mest muligt'. Du skal lave din applikation sikker nok til at det ikke er skadeligt for din applikation at folk ændrer URL'en.
Udover det ville det også være rigeligt irriterende hvis en bruger ville bogmærke en af de sider - men det er ikke muligt, for du kan ikke bogmærke POST variabel generede sider.

Men hvis du bare vil have svar på dit spørgsmål så ja; det er muligt.

#1 gav dig endda svaret på hvordan, men det afskrev du.
#4 giver dig en forklaring hvorfor du egentlig ikke bør gå op i det.

Masser af svar...
Avatar billede dstjulle Nybegynder
10. juli 2009 - 11:11 #7
repox :

jeg ved godt det ikek hjælp at gentage mit spørmål men hvis i nu ikke helt er hvad jeg vil kan jeg da godt prøve og beskrive det igen og jeg er ikke ude på at "låse" brugeren men jeg vil være sikke på at de ikke kan få fat i info de ikke skal have adgang til og derfor er jeg nød til at "låse" dem og det kan godt ske at de ikke kan bogmærke den del af min siden men det har jeg sikret de bruger( for man skal være loget ind for at kunen se siden ) som bogmærker siden bliver send til deres profil side.

men da jeg ikke kender noget som helst til java og jeg ikke har 30 timer om dage så har jeg ikke tid til at lære det.

og jeg kan derfor forstå at den eneste løsning er ar bruge en form som vi se såden ud ( eller retter jeg har fundet ud af det nok er den eneste måde )

<?php
        echo "<form action='?side=firma/bay' method='post'>";
        echo "<input type='hidden' name='firma' value='$firma[id]' />";
        echo "<input type='hidden' name='type' value='jord' />";
        echo '<input type="submit" name="Opdater" value="Køb"></form>';
        ?>

der ved vil der kun være en knap som give de info jeg har brug for og man kan ikke bare lave linket om.

men hvis i har lyst til at dele point så lav et svar ;-)
Avatar billede dstjulle Nybegynder
10. juli 2009 - 11:12 #8
hvis jeg nu får tid kunne i så lave et link til en side hvor man kan lære Java ?
Avatar billede repox Seniormester
10. juli 2009 - 11:20 #9
Så havde jeg jo ret i min antagelse, om at det blot er fordi du ikke har lavet en applikation der er sikker nok.

Hvordan får brugerne adgang til de oplysninger som du vil give dem? Har du et brugersystem eller hvordan differencierer du på dine brugeres adgang til de forskellige informationer?

Og bare for opklaringens skyld; det er ikke Java du leder efter i denne sammenhæng, det er Javascript - det er to meget forskellige ting som ikke skal/kan sammenlignes.
Avatar billede dstjulle Nybegynder
10. juli 2009 - 11:41 #10
nu er jeg ikke helt med på hvad du mener med sikker applikation ?

men jeg har lavet en bruger system hvor brugeren har en id :-) og et brugernavn og jeg bruger id tila t finde de ting som de "har" eller skal have adgang til men jeg kan bare ikke se hvordan jeg skal kunne bruge det til at bestemme om de skal kunne se de data jeg vil have de skal ?? kan du komem med et hint ?
Avatar billede repox Seniormester
10. juli 2009 - 11:57 #11
Applikation er et fint ord for et system du har lavet. F.eks. et brugersystem, et kommentarsystem... things like that...

Men altså, jeg går ud fra dit brugersystem har MySQL som backend.
Så kunne man forestille sig at du kunne lave yderligere en tabel der kan relatere dine bruge til de firmaer de må have adgang til.
Dine firmaer ligger sikkert også i databasen. Du må så lige bære over med mig og selv finde de rette tilpasninger til dine eksisterende tabeller.

Men altså, tre tabeller:
brugere
| bruger_id | brugernavn | kodeord |

firmaer
| firma_id | firmanavn | og så videre |

brugereFirmaLink
| bruger_id | firma_id |

Hvis vi så siger du har 1 bruger (bruger_id = 1) og seks firmaer (firma_id = 1-6) men din bruger kun skal have adgang til tre af dem, så smider du de tre firma_id'er ind i brugereFirmaLink så du egentlig har disse linier:
+-----------+----------+
| bruger_id | firma_id |
+-----------+----------+
|        1 |        1 |
|        1 |        4 |
|        1 |        5 |
+-----------+----------+

Ud fra den tabel kan jeg så antage at bruger_id 1 kun har adgang til at se data fra firma_id 1, 4 og 5.

Så kan jeg hurtigt kontrollere, på firmasiden som brugeren forsøger at se, om brugeren overhovedet må se data fra firmaet:

<?php
    $sql = "SELECT bruger_id FROM brugereFirmaLink WHERE bruger_id = '".$_SESSION["bruger_id"]."' AND firma_id = '".$firma_id."' LIMIT 1";
    $res = mysql_query($sql);
    if(mysql_num_rows($res) == 0)
        $visdata = false;
    else
        $visdata = true;
 

    if($visdata)
    {
        //Vi kan vise dataene, for brugeren måtte gerne se dem
    } 

?>

Håber du fik idéen...
Avatar billede mcb2001 Nybegynder
10. juli 2009 - 12:02 #12
jeg tror stadig ikke der er nogen af os der har forstået hvorfor - for det giver ingen mening...
Prøv at give forklaringen på hvorfor du vil have det sådan, så skal vi nok prøve at finde dig en acceptabel løsning :)
Avatar billede dstjulle Nybegynder
10. juli 2009 - 12:46 #13
jeg skal prøve at forklare det

jeg er ved ( for sjov ) at lave et spil ( meget lille spil ) hvor man skal kunen oprette et firma og så skal man kunen købe jord og opgrader det så man kan produksere noget og det er har jeg har problemet

jeg har lave min DB så den ser sådan ud

brugere
| bruger_id | brugernavn | kodeord | og så videre |

firmaer
| firma_id | master_id | firmanavn | og så videre |

jeg skal så have så brugeren kan vælge at se info om firmaet og de skal kunne opgradere og købe jord.

og det er har jeg ikke vil have at de skal kunne komme ind på andre brugers firma og se info og købe ting

jeg har lavet så det kommer en liste over de firmaer men har og så skal man trykke på navnet så kommer man til den side hvor man kan købe jord

hvis jeg bruger $_GET kan de jo ændre det så de får adgang og det er det jeg vil undgå ved at lave en post eller noget andet som gør at de ikke kan ændre id

mit forslag ( ud fra hvad repox er kommet med ) er :

$source1 = mysql_query("SELECT * FROM firma_info WHERE id = '$id' AND master_id = '$user_id' ")or die(mysql_error());
           
            $firma = mysql_fetch_array($source1);

kan det være en løsning ?
Avatar billede repox Seniormester
10. juli 2009 - 12:56 #14
I princippet er min løsning også en god vej at gå, fordi du dynamisk har mulighed for at tilføje og fjerne firmaer tilknyttede brugerne.

Du skal ikke være bange for at bruge flere tabeller for at opnå de ønskede resultater.

Min metode er også en nem måde at ridse tilgængelige firmaer op på, overdrage ejerskab, tilknytte flere informationer til de forskellige firmaer på tværs af brugeren.

GET variabler er ikke en negativ ting; det der er negativt er når du ikke kan finde ud af begrænse brugeren ordentligt. At forsøge sig med halve løsninger som at ændre GET til POST løser ingenting.

Det er bedre at lave din applikation mere sikker end at forsøge at gøre det umulige; at bestemme over klienten.
Avatar billede majbom Novice
10. juli 2009 - 12:57 #15
det kan godt være en løsning - at du så skriver:

brugere
| bruger_id | brugernavn | kodeord | og så videre |

og så videre giver os jo ingen verdens ide om hvad du ellers har af felter :S

du kunne så på de sider hvor der skal redigeres/tilkøbes eller hvad der nu er af muligheder, endnu engang tjekke om brugeren har adgang til netop det firma der er valgt

og igen en sidste gang på siden hvor det rent faktisk bliver gennemført (databasen opdateres) tjekker du igen om brugeren må...
Avatar billede majbom Novice
10. juli 2009 - 12:57 #16
#15 skal ses som en tilføjelse til de andre forslag der er kommet...
Avatar billede dstjulle Nybegynder
10. juli 2009 - 13:01 #17
splazz :

nu er jeg ikke med på hvad du mener kan du forklare det på en anden måde ?
Avatar billede majbom Novice
10. juli 2009 - 13:09 #18
du har de rækker i databasen som en bestemt bruger på redigere, lad os sige at brugeren må redigere i 1, 3 og 7.

med repox tidligere forslag, henter du kun dem ud, så brugeren ikke kan se andre.

når du linker til dem, bliver det med GET og id'et vil således stå i adresse-linjen. nu kan brugeren gå op og skrive id=8 (som er en andens), der hvor der egentlig stod id=7 (som er hans eget), og på den måde få adgang til at rette i en andens oplysninger, men hvis du på siden, hvor der rettes, tjekker om den aktive bruger rent faktisk har adgang til rækken, så kan du jo på den måde undgå at der bliver rettet i andet end brugerens egne rækker.

når man har rettet og trykker godkend eller hvad der nu sker, så kører du noget update-queries  på din db, men inden det, kan du igen tjekke om brugeren har adgang til at redigere i netop den række der er angivet...

håber det gav mere mening nu :)
Avatar billede mcb2001 Nybegynder
10. juli 2009 - 13:11 #19
dstjulle:
[hvis jeg bruger $_GET kan de jo ændre det så de får adgang og det er det jeg vil undgå ved at lave en post eller noget andet som gør at de ikke kan ændre id]

de kan da også skrive deres egen <form> og bare bruge denne - det ændre INTET på sikkerheden...

Du bliver nød til at gøre noget andet.

et simpelt trick kunne være at kryptere din tekst i stedet.

simpelt eksempel:

//start
$first = mt_rand(16,255);
$second = $id_nummer_til_link;
$third = mt_rand(16,255);

$out = dechex($first) . "-" . dechex($second) . "-" . dechex($third);

print "<a href=\"something.php?code=" . $out . "\">Tryk her</a>";
//slut

//start
$code = $_REQUEST['code'];
$codeFragments = explode("-", $code);
$id = codeFragments[1];
//slut
Avatar billede dstjulle Nybegynder
10. juli 2009 - 13:13 #20
ja det jeg også det jeg vil prøve at lave men jeg skal lige have det hele til at passe sammen og som repox skrive med brugereFirmaLink kunen det godt ske det var en meget fedt ting at få ind :-D jeg skal lige se om jeg kan få det til at virke ;-) skrive svar her i weekenden
Avatar billede repox Seniormester
10. juli 2009 - 13:25 #21
#19
Hvorfor?

Som du selv er inde på, så er det bare et 'trick'. Det har ingen gavnlig værdi, hvis systemet i forvejen er usikkert.
Man kan lige så godt lave det ordentlig fra starten, så man ikke behøver at lave sådan nogle løsninger.
Avatar billede ksoren Nybegynder
11. juli 2009 - 10:38 #22
Netop det med at "skjule" tingene for brugeren, uden at have sikkerheden i orden, er grunden til at mange sites bliver hacket.
Avatar billede dstjulle Nybegynder
14. juli 2009 - 09:31 #23
jeg har fået løst mit problem løst og det var ved hjælp fra repox så hvis du laver et svar så får du point
Avatar billede repox Seniormester
14. juli 2009 - 10:15 #24
Det kom her :)
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