Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Porttikieltosysteemi

Sivun loppuun

MikSor [22.02.2008 15:17:58]

#

Eli olen ihmetelly tässä tovin kuinka saisin tämän koodin pätkän toimimaan ja myös tehtyä siihen muutaman lisäyksen, että se toimisi niin kuin lomake eli lähettäisi tai tulostaisi tiedon ja päivittäisi sen niin, että koko sivutilallen ei pääsisi tämä ip. Sorry, kun vähän sekavasti sanottu. Tässä kuitenkin koodin pätkä.

***Porttikielto.php***
<?php
if($_SERVER['REMOTE_ADDR'] == "IP.OSOITE") die("Porttikielto");
if($_SERVER['REMOTE_ADDR'] == "IP.OSOITE") die("Porttikielto");
if($_SERVER['REMOTE_ADDR'] == "IP.OSOITE") die("Porttikielto");
?>

Metabolix [22.02.2008 15:28:42]

#

Koodi pitää liittää (vaikkapa include-komennolla) kaikkiin tiedostoihin, joihin pääsy halutaan estää. Muiden kuin php-tiedostojen suojaaminen on siis paljon vaikeampaa, vieraalla palvelimella usein mahdotontakin.

On järkevämpää tallentaa IP:t tiedostoon ja tehdä tarkistus silmukassa.

<?php
# kielto.php
foreach (file('osoitteet') as $osoite) {
  if (trim($osoite) === $_SERVER['REMOTE_ADDR']) {
    die("Pääsy kielletty");
  }
}
?>
<?php
# index.php
include 'kielto.php';
?>

peg [22.02.2008 17:40:27]

#

.htaccess:lla voi estää muutkin tiedostot.
https://www.ohjelmointiputka.net/keskustelu/14641-htaccess-ongelma

MikSor [22.02.2008 18:27:56]

#

Jälleen upeaa auttamista! Kiitos!

peg [22.02.2008 19:06:15]

#

MikSor kirjoitti:

Jälleen upeaa auttamista! Kiitos!

No en tiedä, toi ip numero on huono kun se on yleensä dynaaminen.
Tästä allaolevasta on vain vähän kokemusta, mutta ei mitään negatiivista vielä.
Eli ota talteen koneen nimi ja noi muut. Yllätys miten usein ihmiset nimeävät
koneensa tosi persoonallisesti, mutta jos koneen nimi on esim ACER-1, niin
sitten tää ei ole hyvä.

<?
    echo ("Koneesi nimi on: "). gethostbyaddr($remote).'<br>';
    echo ("käyttöjärjestelmäsi ja selaimesi ovat: "). $_SERVER['HTTP_USER_AGENT'].'<br>';
?>

Luet noi muuttujaan ja tallennat vaikka laskuriin.

Blaze [22.02.2008 20:35:35]

#

peg kirjoitti:

    echo ("Koneesi nimi on: "). gethostbyaddr($remote).'<br>';
$_SERVER['REMOTE_ADDR'] // kenties?

DNS-nimi ei kyllä ole yhtään sen pysyvämpi kuin IP:kään, joten hyöty menee miinuksen puolelle (reverse-DNS -lookuppien tekemiseen kuluu aikaa).

Metabolix [22.02.2008 20:59:34]

#

peg kirjoitti:

.htaccess:lla voi estää muutkin tiedostot.

Vaan mitenpä estetään IP-osoitteen perusteella? Tätä ei ainakaan tuossa keskustelussa neuvottu.

Järkevä ratkaisuhan on tehdä sivut, joihin sisällön tuottaminen vaatii tunnuksen tai joissa tuotettu sisältö muuten suodatetaan. Selkeät kuormitusyritykset sitten voi estää IP:n avulla.

ajv [22.02.2008 21:15:07]

#

Metabolix kirjoitti:

Vaan mitenpä estetään IP-osoitteen perusteella?

Deny from <ip>

Muuten Metabolixin kanssa kyllä samoilla linjoilla.

peg [23.02.2008 00:46:51]

#

Blaze: Tarkoitin noin kuin kirjoitin, jos tulostat nuo molemmat
niin huomaat eron.

<?
echo gethostbyaddr($remote).'<br>';  // ACER-1
echo $_SERVER['REMOTE_ADDR'];        // 127.0.0.1
?>

ja siis vielä:
"Yllätys miten usein ihmiset nimeävät
koneensa tosi persoonallisesti"

EDIT: HUOMATKAA NYT JOS KÄYTÄTTE TOTA MIKÄ ANTAA KONEEN NIMEN,
ETTÄ SE EI SAA OLLA TOI TEHDAS ASETUS. Vaan sen pitää olla
esim "pekan toosa" tai jotain mitä käyttäjä on siihen laittanut
kun on asentanut käyttiksen.

ajv [23.02.2008 00:57:10]

#

Mitä tuo $remote-muuttuja sisältää?

Blaze [23.02.2008 00:59:10]

#

peg kirjoitti:

Blaze: Tarkoitin noin kuin kirjoitin, jos tulostat nuo molemmat
niin huomaat eron.

Niin huomaan joo :)

Warning: gethostbyaddr() [function.gethostbyaddr]: Address is not a valid IPv4 or IPv6 address in /var/www/localhost/htdocs/hosttest.php on line 2

127.0.0.1

Muuttujaa nimeltä $remote kun ei ole olemassa, niin gethostbyaddr() pukkaa virhettä.

peg kirjoitti:

"Yllätys miten usein ihmiset nimeävät
koneensa tosi persoonallisesti"

https://www.ohjelmointiputka.net/keskustelu/15576-tietokoneiden-nimet

peg [23.02.2008 01:01:55]

#

koneen nimen, jos käyttiksen asennuksen yhteydessä et laita siihen mitään niin merkkikoneet laittaa siihen jonkun omansa Acer käyttää monissa malleissaan tuota ACER-1.

EDIT: aivan, kokeilepa wintoosassa.

ajv [23.02.2008 01:15:59]

#

Katos, Windows tosiaan palauttaa koneen nimen, jos gethostbtaddr()-funktiolle antaa tyhjän merkkijonon parametriksi. Tuolla $remote-muuttujalla ei kyllä tee mitään.

echo "Koneesi nimi on: ". gethostbyaddr(''); // Koneesi nimi on mini-pc

Edelleenkin tuo on kyllä kaukana mistään järkevästä, sillä

a) tuo palauttaa sen palvelinkoneen nimen
b) toimii vain windows-palvelimissa

Blaze [23.02.2008 01:16:00]

#

Ei sitä $remote-muuttujaa ole olemassa, vaikka Windowsistakin ottaisin yhteyttä.
Vai tarkoititko, että palvelimen pitäisi pyöriä Windowsissa? Siinä tapauksessa laita toi skripti saataville johonkin. Mää en jaksa masentaa Apachea tuohon virtuaalimasiinaan.

Edit:

ajv kirjoitti:

a) tuo palauttaa sen palvelinkoneen nimen

Jotain tällaista ounastelinki :)

ajv [24.02.2008 12:37:34]

#

Kertoisitko vielä miten olet saanut tämän näyttämään clientin koneen nimen peg? Jotenkin kuulostaa mahdotomalta...

tsuriga [24.02.2008 12:41:26]

#

User-Agentti on helppo muuttaa, joten sitä tuskin porttikieltoihin kannattaa käyttää.


Sivun alkuun

Vastaus

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

Tietoa sivustosta