Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Ochrana PHP scriptu

Zdravím, na svojom webe používam CMS wordpress. Na formuláre atď... používam plugin form maker od 10web. Na svojom VPS mám vytvorený script, ktorý odošle príkaz do terminálu.

Otázka:
Ako môžem zabezpečiť script proti spamu? Alebo teda najlepšie aby sa script spracoval na pozadí, tým myslím, aby nebol načítaný ako stránka.

Totiž keď na svojom webe odošlem formulár, tak sa mi následne načíta môj script na novej karte (vyzerá nejako takto: http://xxx.xxx.xxx.xxx/script.php?username=user). Dá sa ľahko spamovať, keďže niekto môže len upravovať URL (napr. ..username=user1, username=user2, username=user3 atď...). Tak by som potreboval nejako urobiť, aby sa tento súbor načítal "na pozadí", a aby sa neotvoril na novej karte.

Předmět Autor Datum
Tento postup předpokládá, že volající i volaný skript se dostanou do stejné databáze: Před voláním s…
hynajs 21.03.2022 13:26
hynajs
Vďaka, už som to asi vyriešil. Poriešil som to cez MySQL databázu. <?php $connection = mysqli_con…
sakulmore 21.03.2022 20:34
sakulmore
Nevyresil… poslední
MaSo 21.03.2022 23:12
MaSo

Tento postup předpokládá, že volající i volaný skript se dostanou do stejné databáze:
Před voláním skriptu vygeneruj náhodný řetězec a ulož do databáze.
Skript oslov pomocí curl, vygenerovaný řetězec pošli s dalšími naplněnými proměnnými.
Na začátku skriptu porovnej, zda je poslaný řetězec v databázi, skript bude pokračovat v případě shody a řetězec z databáze smaže.
Pro jistotu do databáze ukládat i čas vygenerování řetězce a pravidelně mazat.

Vďaka, už som to asi vyriešil.

Poriešil som to cez MySQL databázu.


<?php
	$connection = mysqli_connect("...", "sakulmore", "moje.heslo", "...", 3314);

	$sql = "SELECT email, username, password, first_name, last_name FROM users_registrations";
	$result = mysqli_query($connection, $sql);

	if (mysqli_num_rows($result) > 0) {
		$riadok = mysqli_fetch_assoc($result);

		$username = $riadok['username'];
		$email = $riadok['email'];
		$pass = $riadok['password'];
		$lastname = $riadok['last_name'];
		$firstname = $riadok['first_name'];

		$pripojssh2 = ssh2_connect('localhost');
		ssh2_auth_password($pripojssh2, 'root', 'moje_heslo');

		ssh2_exec($pripojssh2, "./create_user.sh $email $username $firstname $lastname $pass");

		$delete = "DELETE FROM users_registrations WHERE 1";

		mysqli_query($connection, $delete);
	} else {
		echo "Žiadny Klienti...";
	}

	mysqli_close($connection);
?>

Zpět do poradny Odpovědět na původní otázku Nahoru