Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt wymagający poprawek
onlyX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Sworzyłem taki skromny kod dodający dane do tabeli w bazie danych.
I prosiłbym ludzi lepiej znających php ode mnie o wytknięcie mi błędów, ew. wniesienie poprawek.

[php:1:bb63b676fa]
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<LINK REL=stylesheet HREF="style.css" TYPE="text/css">
</HEAD>
<BODY>
<?php
$autor_id = $_POST['autor_id'];
$tytul = $_POST['tytul'];
$f_akapit = $_POST['f_akapit'];
$tresc = $_POST['tresc'];
$arrLocale = array( "pl_PL", "polish_pol" );
setlocale( LC_ALL, $arrLocale );
$data = strftime("%A, %d %B %Y");
$sql = mysql_connect ("mojserwer.pl", "login", "hasło");
mysql_select_db("viking");
$zapytanie = mysql_query('SELECT `username` FROM `phpbb_users` WHERE `user_id` = '.$autor_id);
$row = mysql_fetch_array($zapytanie);
$autor = $row['username'];
$zapytanie = "INSERT INTO `w_arts` ( `id` , `data` , `autor_id` , `autor` , `tytul` , `f_akapit` , `tresc` ) VALUES ( '', '$data', '$autor_id', '$autor', '$tytul', '$f_akapit', '$tresc' )";
$wykonaj=mysql_query($zapytanie);
?>

<?php
$sql = mysql_connect ("mojserwer.pl", "login", "hasło");
mysql_select_db("viking");
$query = 'SHOW TABLE STATUS LIKE "w_arts"';
$result = @mysql_query($query);
$row2 = @mysql_fetch_array($result, MYSQL_ASSOC);
$row2['Auto_increment'];
$num_id = ($row2['Auto_increment'] -1);
$zapytanie = mysql_query("SELECT * FROM `w_arts` WHERE id=$num_id");
$row = mysql_fetch_array($zapytanie);
echo ('<CENTER><TABLE WIDTH="700" CELLSPACING="0" CELLPADDING="0" BORDER="0" STYLE="background:url(../gfx/bg_tab.gif)">
<TR><TD><P class="nag_right">&nbsp;&raquo;&nbsp;Data i autor</P></TD>
<TD>'.$row['data'].' || <A HREF="http://www.user.mtnet.com.pl/viking/forum/profile.php?mode=viewprofile&u='.$row['autor_id'].'">'.$row['autor'].'</A> || id='.$row['autor_id'].'</TD></TR>
<TR><TD><P class="nag_right">&nbsp;&raquo;&nbsp;Tytuł artykułu</P></TD>
<TD>'.$row['tytul'].'</TD></TR><TR><TD WIDTH="200"><SPAN class="nag_right">&nbsp;&raquo;&nbsp;Pierwszy akapit</SPAN><BR><SPAN class="des_just">Akapit ten jest wstępem do tekstu, powinien po krótce przedstawiać tematykę artykułu (max. 3-4 zdania).</SPAN></TD>
<TD>'.$row['f_akapit'].'</TD></TR><TR><TD><P class="nag_right">&nbsp;&raquo;&nbsp;Treść artykułu</P></TD>
<TD>'.$row['tresc'].'</TD></TR><TR><TD>&nbsp;</TD><TD>&nbsp;&laquo;&nbsp;<A HREF="dadaj_art.html">Wstecz</A></TD></TR></TABLE></CENTER>');
?>
</BODY>
</HTML>
[/php:1:bb63b676fa]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cboot
post
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 2.02.2004

Ostrzeżenie: (0%)
-----


[php:1:fbbc76639d]<?php
// zmienne liczbowe z zewnątrz - zapobiegamy sql injection
$autor_id = (int) $_POST['autor_id'];
// zmienne tekstowe z zewnątrz - zapobiegamy umieszczaniu javascript i tym podobnych
$tytul = strip_tags($_POST['tytul']);
$f_akapit = strip_tags($_POST['f_akapit']);
$tresc = strip_tags($_POST['tresc']);
?>[/php:1:fbbc76639d]
Warto byłoby też pamiętać o łataniu wszelkich luk umożliwiających SQL injection. Stąd conajmniej ta konwersja $autor_id z POST (luka ta umożliwiała drobną penetrację tabeli phpbb_users). Na wszelki wypadek (jeśli skrypt byłby np. rozbudowywany w przyszłości) można łatać tak wszystkie zmienne liczbowe otrzymywane z zewnątrz (post, get, cookies). Zmienne tekstowe są w tym wypadku nieszkodliwe, jeśli mamy ustawione na serwerze magic_quotes_gpc. Wszelkie inne zmienne, które są wstawiane do zapytań bez apostrofów czy cudzysłowów, to potencjalne SQL injection.
Po co zabezpieczać się przed javascript, który później mógłby być wyświetlony na stronie, to chyba nie muszę tłumaczyć.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 09:50