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
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ä?
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...
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)
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.
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");
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.