Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]Zabezpieczenie formularza
Forum PHP.pl > Forum > Przedszkole
dark_root
Posiadam na stronie formularz, w którym w hidden są przesyłane dane, których internauta nie powinien widzieć. Jak skutecznie zabespieczyć formularz, żeby niektóre przesyłane w nim informacje, które w zasadzie są stałymi nie były widoczne w podglądzie kodu źródłowego lub jak skótecznie zabespieczyć podglądanie skryptu?
k_@_m_i_l
Zamiast ukrytych pól,lepiej zastosuj sesje jeżeli chcesz żeby użytkownik nie widział tych danych.
bełdzio
skoro są w zasadzie stałymi to dlaczego nie trzymać ich tylko po stronie serwera?
ja_fryta
najlepiej jest zrobic tak jak ci pisza koledzy wyzej ale jezeli dane te musza byc trzymane po stronie klienta to mozesz je jeszcze wlozyc do ciasteczka
dark_root
A jak użyć sesji, żeby użytkownik nie widział w kodzie strony tych ważnych i zarazem niezbędnych dla niego danych?
Kod
<?php
session_start();
$_SESSION['123']=123456;
$_SESSION['456']=123456;
?>
<form action="<?=$_GET['ff']?>" method="post">
Login:<input type=text name=login value="<?=$_SESSION['123']?>">
Hasło:<input type=password name=pass value="<?=$_SESSION['456']?>">
<input name="dl.start" value=wyślij type="submit">
</form>

Zrobiłem coś takiego, ale jak można się domyśleć w kodzie było widać dane. Jak ich użyć i jednocześnie nie dać ich poznać internaucie za pomocą sesji?
Shili
Jasne, że było widać dane, bo wpisane są jako wartości formularza. Jeśli nie chcesz dać ich poznać użytkownikowi, to zainicjuj wartością zmienną sesyjną:
  1. <?php
  2. $_SESSION['tajne'] = "tajne dane";
  3. ?>

I nie rób z tym na stronie formularza nic więcej. Dopiero na stronie do której prowadzi formularz odczytaj sobie tą zmienną sesyjną i tyle.
dark_root
Zrobiłem coś takiego, ale nie działa:
index.php
Kod
<form action="premium.php" method="GET">
<?php
$_SESSION['tajne'] = "tajnedane";
$_SESSION['dane'] = "tajnedane";
?>
<input type=text name=ff><br>
<input type=submit value="Wyślij">
</form>

premium.php
Kod
<form action="<?=$_GET['ff']?>" method="post">
Login:<input type=text name=login value="<?=$_SESSION['tajne']?>">
Hasło:<input type=password name=pass value="<?=$_SESSION['dane']?>">
<input name="dl.start" value=wyślij type="submit">
</form>

Gdzie wkradł się błąd?
ShadowD
Zresztą piszesz, że są to stałe a mam wrażenie, że chcesz w nich trzymać hasło i nick...

Napisz o co ci chodzi bo z tego kodu nic nie można wywnioskować...

Człowiek całe życie się uczy... ;p
bełdzio
jesli wkladasz dane do sesji to nie echuj ich nigdzie na stronie, po prostu korzytaj z tablicy $_SESSION

poczytaj o sesjach w manualu

//

@ShadowD: <?= to skrócona wersja <? echo
dark_root
Login i hasło są to stałe. Mam konto na pewnej popularnej stronie, które nieźle kosztuje i postanowiłem się nim podzielić. Jednak chcę się zabezpieczyć przed ewentualną kradzieżą konta. W tym celu te wszystkie kombinacje.
Shili
Zapisz sobie w stałych gdzieś w pliku login i hasło.
Umieść formularz tylko z buttonem zaloguj i kod

  1. <?php
  2. if(isset($name_buttona_zaloguj)) {
  3. // skorzystaj tutaj z tych stałych zdefiniowanych wcześniej, żeby się zalogować na
     konto
  4.  }
  5. ?>

O to Ci chodziło?
ShadowD
Aaaaa, chcesz zrobić formularz do logowania... smile.gif

Za pomocą przycisku loguj bez podawania hasła ma się przekierowywać na inną stronę.

Możesz jedynie zakodować hasło w js i przy klikaniu na przycisk wstawiać go inaczej tego nie zrobisz, a bynajmniej ja nie znam innego sposobu...
dark_root
Z tego co zrozumiałem chodzi CI o to, żeby passy pobierać z pliku. Dobry pomysł tylko nie wiem jak takie coś wykonać. Możesz podac przykładowy gotowy kod?
ShadowD a można by ustalić własne kodowanie np. a=@q1 i zapisać jakoś w php, żeby przeglądarka tego nie wyświetliła i nastepnie wpisać w login=@q1@q1@q1@q1@q1 a naprawdę wpisywało by aaaaa?
Shili
Bogowie... Pokombinowałeś sam? Jak nie to czas najwyższy zacząć wreszcie!
Najprościej:

plik bla.php
  1. <?php
  2. $login='tajny login';
  3. $haslo='tajne hasło';
  4. ?>


plik, gdzie to odczytujesz
  1. <?php
  2. include ('bla.php');
  3. ?>
dark_root
Niestety ten sposób nie zakryje passów. Nadal będą one widoczne w skrypcie strony.
Shili
Nie będą. W jaki niby sposób miałyby być widoczne?!
dark_root
bla.php
Kod
<?php
$login='aaaaaa';
$haslo='aaaaaa';
?>

aa.php
Kod
<?php
include ('bla.php');
?>
<form action="<?=$_GET['ff']?>" method="post">
Login:<input type=text name=login value="<?=$login ?>">
Hasło:<input type=password name=pass value="<?=$haslo ?>">
<input name="dl.start" value=wyślij type="submit">
</form>


Efekt widać tutaj
Hasło i login są widoczne ponieważ muszę je wpisać w formularz, żeby pomyślnie się zalogować.
Shili
Nie musisz, napisałam wyraźnie że nie musisz.

Zrób formularz z samym przyciskiem zaloguj. Tylko i wyłącznie. A po kliknięciu skorzystaj ze zmiennych ustawionych wcześniej.
dark_root
Z przyjemnością postawię ci "pomógł" jednak nie działa. Nie wiem, czy zrozumiałeś mnie dobrze, ale strona docelowa, na którą chcę się zalogować nie jest moja więc nie mogę tam dodać include ('bla.php');.
Formularz całkowicie narażony na przejęcie passów przesyłą dane i loguje
Kod
<form action="http://jakasstrona.pl" method="post">
<input name="l" value="2602990" type="hidden">
<input name="p" value="%61%61%61%61%61%61" type="hidden">
<input name="dl.start" value="login" type="submit">
</form>

<script Language="Javascript">  
javascript:document.all['dl.start'].click()
</script>

Natomiast formularz wykorzystujący include nie loguje
Kod
<?php
include ('bla.php');
?>
<form action="http://rs275.<?=$_POST['ff']?>" method="post">
<input name="dl.start" value=wyślij type="submit">
</form>
<script Language="Javascript">
javascript:document.all['dl.start'].click()
</script>

Słyszałem, iż dane w formularzu można przesłać tak jak ja chce za pomocą curl wiec poszukam jakiegoś dobrago darmowego serwera, który obsługuje tą bibliotekę. Znacie jakieś poza ovh?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.