![]() |
![]() |
![]()
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"> » 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"> » Tytuł artykułu</P></TD> <TD>'.$row['tytul'].'</TD></TR><TR><TD WIDTH="200"><SPAN class="nag_right"> » 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"> » Treść artykułu</P></TD> <TD>'.$row['tresc'].'</TD></TR><TR><TD> </TD><TD> « <A HREF="dadaj_art.html">Wstecz</A></TD></TR></TABLE></CENTER>'); ?> </BODY> </HTML> [/php:1:bb63b676fa] |
|
|
![]() |
![]()
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ć. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 09:50 |