Biztonságos-e a profil megtekintés, illetve a & cserélése más karakterre?
Üdv
adott egy profil megtekintés, amit mások is tudnak nézni, ha be vannak regisztrálva, először is arra lennék kiváncsi, hogy biztonságos-e ez így, másodszor pedig, hogy a & jelet hogyan lehet lecserélni másra, ? jelre vagy =-re
//
//////INDEX.PHP Rész /////
$queryy = "SELECT * FROM members";
if ($resultt = $mysqli->query($query)) {
while ($roww = $resultt->fetch_array()) {
$id = $roww['id'];
echo "
<li><a href='?action=profile&$id' ";
echo (!isset($_GET['action']) || $_GET['action'] == "profile" ? 'class="active"' : '');
echo ">Profil</a></li>";
} }
//////////Profile.php////////////
<?php
include_once("config.php");
include_once("functions.php");
$username = $_SESSION['username'];
$query = "SELECT * FROM members";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_array()) {
$email = $row['email'];
$datum = date("Y.m.d.", $row['REGDATE']);
$avatar= $row['avatar'];
$id = $row['id'];
$user = $row['username'];
if(login_check($mysqli) == true) {
if(isset($_GET["$id"])) {
echo " <h1>Profil ==> $user</h1>
<div id='news'>";
echo "<dl>
<dt>Megjelenő név:</dt>
<dd>$user</dd>
<dt>E-mail:</dt>
<dd>$email</dd>
<dt>Regisztrált:</dt>
<dd>$datum</dd>
<dt>Ip cím:</dt>
<dd>$IP</dd>
</dl></div>";
}
}
}
} else {
header("Location: index.php?action=error");
}
?>
HÁÁÁÁT!...
nem tudom a login_check mit csinál, főleg a $mysqli-vel..
kellene egy ellenőrzés, hogy be van-e lépve, és csak akkor nézhetné meg.
rossz kód.
lekérdezed az összes tagot, while-al végigmész mindegyiken, és azt az egyet mutatod, amelyiket megtekinti. Nem jó!
Először is, csak akkor nézheti meg, ha be van lépve (mert ugye ha bevan, akkor nyilván tag is), és ha be van, csak akkor piszkálod az adatbázist.
Csak annak az egynek az adatait kéred ki adatbázisból, amit meg akar nézni, ott ellenőrizni kell a tag id-ját, (mert mindenki pusztítani akar), és megjeleníted.
A validálást csinálhatod mondjuk így: if(preg_match("/[0-9]+/", $_GET['id']){ nem bánt}else{ vigyázz, támadni akar }
vagy prepared statementtel, a lekérdezésben:
$query = $mysqli->prepare('SELECT * FROM members WHERE id= ?');
$query->bind_param('i', $_GET['id']); //i=integer - számot várunk az első kérdőjel helyére
$query->execute();
...
ha nem jóember akkor pedig 0 sort ad vissza (?vagy false lesz?)
miért akarod kicserélni?
$szoveg = 'csereles&hejcihő&';
$szoveg = str_replace=('&', '=', $szoveg); //str_replace( mit, mire, miben);
echo $szoveg; //=> csereles=hejcihő=
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!