Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: $_POST + uudelleenohjaus ilman lomaketta

leftover [22.12.2004 20:27:51]

#

Ongelma on siis seuraava: $_POST muuttujat pitäisi välittää palvelimelta x palvelimelle y käyttäen HTTP-protokollaa. Samaan syssyyn pitäisi saada käyttäjä seuraamaan palvelimelle y siten, että palvelin ymmärtäisi käyttäjän ja postauksen olevan yksi ja sama pyyntö.

Lomaketta en haluaisi käyttää, koska sen käyttö lisää väärinkäytön mahdollisuutta, mutta tällä hetkellä ainoa "kikka" jonka olen saanut toimimaan on ollut lomake + javascript submittaus lomakkeelle bodyn onload-elementissä (luonnollisesti tuettu myös js-poiskytkeneet submit-napin muodossa).

Kokeiltuna on:

- Tajuttoman monimutkaista koodivinkkiä jossa käytettiin fsockopen -funktiota. POST-data menee erittäin kiltisti palvelimelle, mutta käyttäjän lähettäminen mukana ei onnistunut

- cURL-kirjaston käyttö. Onnistuin melkein, POST-data meni palvelimelle ja käyttäjälle saatiin näkyviin palvelimen y lähettämä sivu, mutta edelleen oltiin palvelimella x (ja tämä ei ollut tarkoitus). Jos saisin kontrolloida palvelinta y, olisin asettanut vastaanottosivun lähettämään headereissa location-parametrin jolloin cURL olisi saatu seuraamaan sen avulla oikealle palvelimelle. Palvelin y vaan ei ole hallinnassa joten sinne meni sekin idea...

16h turhauttavaa koodausta takana, ketuttaa ja hatuttaa joten kaikki vinkit, aavistukset ja jopa vaiston neuvot sallittuja. Lisäkirjaston asennus ei tuota ongelmaa, kunhan ei tarvitse mennä PHP:n exec-puolelle (en suostu kytkemään sitä toimintoa päälle).

Vielä kaupan päälle kerrottakoon että kyseessä on verkkomaksupainikkeen ohjelmointi tietoturvallisemmin, ja uskonkin että tällä saralla joku keino on keksitty, mutta sen tonkiminen ei ole ainakaan minulta onnistunut.

Jos sait tästä viestistä päänsärkyä, kannattaa lopettaa heti pähkäily. Kokemuksen syvällä rintaäänellä voin kertoa että 16h pähkäily aiheuttaa päänsäryn lisäksi sydän- ja hengitysoireita, turhautumista ja kofeiinimyrkytystä, eli suositeltavaa vain extremehakuisille, terveille nuorille :D

sooda [22.12.2004 20:30:51]

#

Hah :D Ite tiedän ton ekan tavan, ei ole loppujen lopuksi tajuttoman monimutkainen (perus http-pyyntö). Miten käyttäjän lähettäminen ei onnaa siinä?

leftover [22.12.2004 20:33:50]

#

En vaan ymmärrä miten käyttäjän saisi ohjattua socket-putkeen fsockopen sisällä. Kokeilin rämpliä headereita yms. mutta ei onnannut niin ei onnannut. 8h jälkeen nakkasin koodin bittitaivaaseen ja siirryin cURLin pariin...

sooda [22.12.2004 20:42:08]

#

Jos vaikka teet palvelimelle 2 jonne heität soketilla tietoa jonku tietyn id-homman, eli kun olet hakenut sivun soketilla niin sen jälkee servu 2 tekisi jonkunnäköisen id-jutun johonki filuun esim, ja sitte käyttäjä ohjattaisiin servu2/sivu.php?id=plapla (toivottavasti tajusit :P)

leftover [23.12.2004 20:48:42]

#

Ihan hyvä idea muuten, mutta vieläkään ei ole palvelin y hallinnassani.

Tänään sain myös riemukseni kuulla, että asia jonka takia aloin taistelemaan tehdäkseni tietoturvallista koodia, ei olekaan pakollinen data vaikka palvelukuvaus väittää täysin muuta. Voit arvata iskikö pienoinen v***tus kun tämä selvisi.

Taas uusi iso rasti seinään miksi koodaajan ei kannata lukea speksejä vasta kuin äärimmäisen hädän hetkellä...mrh...

EDIT: Tämä ei tietenkään tee threadia turhaksi, koska edelleenkin ainakin minua häiritsee se, miksi muka POST-dataa ja käyttäjää ei pystyisi lähettämään eri palvelimelle ilman formia.

tejeez [24.12.2004 10:53:45]

#

leftover kirjoitti:

- Tajuttoman monimutkaista koodivinkkiä jossa käytettiin fsockopen -funktiota. POST-data menee erittäin kiltisti palvelimelle, mutta käyttäjän lähettäminen mukana ei onnistunut

Voit vaikkapa kokeilla tuollaista ja ohjata käyttäjän muualle laittamalla alkuun header("location: osoiteminneohjataan");

leftover [26.12.2004 07:43:26]

#

tejeez kirjoitti:

Voit vaikkapa kokeilla tuollaista ja ohjata käyttäjän muualle laittamalla alkuun header("location: osoiteminneohjataan");

Ei auta, header-location ja socket tulkitaan kahdeksi eri istunnoksi eikä serveri enää tunnista post-datan tulleen käyttäjältä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta