- 1
// кода не выкладываю, по соображениям безопасности
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+144
// кода не выкладываю, по соображениям безопасности
Не писаным правилом безопасности (при создание сайтов) считается, что доступ к админке в целом и конкретно к отдельным её частям должен иметь только авторизированный пользователь. На самом деле все обстоит не так, с уже известной вам горе компании (КСК), для примера привожу безобидное (дабы не пошли ломать ресурсы) пренебрежением безопасности: http://amisharin.ru/admin/ieeditor/ieeditor.php?vname=htmlcode
Как видно не авторизированный пользователь получает доступ к редактору (который, кстати, стабильно работает, только в IE6).
+171
// Сначала я увидел такой самонадеянный способ "послать нахуй все инъекции" (magic_quotes_gpc при этом вообще не проверялись :-))
# Посылаем смело нахуй все инъекции
foreach($_GET as $name => $value){
$_GET[$name] = mysql_real_escape_string($value);
}
foreach($_POST as $name => $value){
$_POST[$name] = mysql_real_escape_string($value);
}
// А потом - следующее (обратите внимание на отсутствие кавычек для GET параметров)
$result = mysql_query("SELECT * FROM ".$_GET['index_country']." WHERE id = ".$_GET['index_to_edit']);
Хочется передать автору этого креатива большое спасибо за то, что доставил мне массу лулзов при нахождении этого и других багов :-) Если народ и дальше будет думать, что этого достаточно чтобы избавиться от инъекций, я без денег точно не останусь )))))))))))
+163
$birthDay = $elements['birthDay']->getValue();
$d = $birthDay[0].$birthDay[1];
$m = $birthDay[3].$birthDay[4];
$y = $birthDay[6].$birthDay[7].$birthDay[8].$birthDay[9];
$birthDay = mktime(0, 0, 0, (int)$m, (int)$d, (int)$y);
Вот так вот в ПХП 5.2 конвертим дату из dd.mm.yyyy в timestamp
+166.2
<?
$fileSelect = array();
$sql = 'SELECT * FROM bd_file';
$stmt = db_prepare($sql, $file); $res = db_query($stmt);
while($row = db_fetch_row(res))
{
if (!is_file(filefolder.'/'.$row[название_файла]))) {
$fileSelect[$file] = $file;
}
}
unset($fileSelect);
?>
В добавок к #2929.
Этим образом идет проверка существование документов в панели администратора
+162.8
<?php
function db_connect($host, $user, $pass, $db) {
global $glink;
$glink = mysql_connect($host, $user, $pass) or db_give_error(3, '', db_error($glink));
mysql_select_db($db, $glink) or db_give_error(4, '', db_error($glink));
mysql_query("SET CHARSET cp1251",$glink);
return $glink;
}
function db_query($sql, $log = 0) {
global $glink;
$res = mysql_query($sql, $glink) or db_give_error(5, $sql, db_error($glink));
return $res;
}
function db_fetch_row($res) {
$row = empty($res) ? false : mysql_fetch_row($res);
return $row;
}
function db_num_rows($res, $stmt = '') {
$rows = mysql_num_rows($res);
if (null === $rows) db_give_error(6, '', db_error($glink));
return $rows;
}
function db_num_fields($res, $stmt = '') {
$fields = empty($res) ? false : mysql_num_fields($res);
if (null === $fields) db_give_error(7, '', db_error($glink));
return $fields;
}
function db_field_name($res, $fld) {
$name = (empty($res) or !isset($fld)) ? false : mysql_field_name($res, $fld);
if (false === $name) db_give_error(8, '', db_error($glink));
return $name;
}
function db_affected_rows($res) {
global $glink;
$rows = mysql_affected_rows($glink);
if (null === $rows) db_give_error(9, '', db_error($glink));
return $rows;
}
function db_insert_id($id = 0) {
$id = mysql_insert_id();
return ($id) ? $id : 1;
}
function db_next_id($table, $field, $seqname = 'seq') {
return 0;
}
function db_errno($res) {
return mysql_errno($res);
}
function db_error($res) {
return mysql_error();
}
function db_free_result($res) {
$res = mysql_free_result($res);
return $res;
}
?>
Все из того же проекта (http://govnokod.ru/2929). авторам видимо надоело писать mysql_ и они решили сделать свой аналог db_. При чем смысла от этого полный NULL. Говнокод, он и в Африке говнокод
+165
$fileSelect = array();
if (is_dir($filefolder)) {
if ($dh = @opendir($filefolder)) {
while (($file = readdir($dh)) !== false) {
if (filetype($filefolder . $file) == "file" and $file != "0.txt") {
$sql = 'SELECT * FROM bd_file WHERE file_file = ?';
$stmt = db_prepare($sql, $file); $res = db_query($stmt);
if (!db_num_rows($res)) {
$fileSelect[$file] = $file;
}
}
}
}
closedir($dh);
}
...
unset($fileSelect);
Сервер медленно умирал, так как данная конструкция вызывалась при каждом удобном случае, будь то добавление нового файла или скачивание. Самое поразительное, что с полученным массивом нечего не делали, а тупо уничтожили
P.S. минимальная стоимость сайта у этой фирмы 3.000.000 рублей
+159.2
<?php
include( "dbopen.php" );
function ShowTree($ParentID, $lvl) {
global $link;
global $lvl;
$lvl++;
$sSQL="SELECT id,title,pid FROM catalogue WHERE pid=".$ParentID." ORDER BY title";
$result=mysql_query($sSQL, $link);
if (mysql_num_rows($result) > 0) {
echo("<UL>\n");
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["id"];
echo("<LI>\n");
echo("<A HREF=\""."?ID=".$ID1."\">".$row["title"]."</A>"." \n");
ShowTree($ID1, $lvl);
$lvl--;
}
echo("</UL>\n");
}
}
ShowTree(0, 0);
mysql_close($link);
?>
Построение дерева с запросом в цикле:)))
http://www.codenet.ru/webmast/php/tree.php
+167.8
if($_GET['admin']=='da'){
echo 'adminka_true';
}
А самое страшное, что писал это я...
+165
$result = mysql_query("SELECT `id` FROM `cats` WHERE `id` = (SELECT `pid` FROM `tovary` WHERE `id` = '".$this->id."' LIMIT 1)");
В один запрос получать id не кошерно.
Было найдено в этом же проекте - http://www.govnokod.ru/2897
+166
$limit = (isset($this->params['pass'][1]) == 'news')?null:5;
балина, и это работает :D