waldicom
19.07.2019 - 12:54
Цитата (SorokinFilipp265 @ 19.07.2019 - 07:44) |
в моём понимании инъекция - это либо инсулин, либо наркотики, поэтому этот термин лучше не использовать в программировании
|
Это очень хорошее решение! В вашем случае лучше вообще программирование не использовать.
_____________
Свои мозги еще никто не отменял.
Телепатов нету.
SiteMaster
19.07.2019 - 16:50
Цитата (SorokinFilipp265 @ 19.07.2019 - 10:44) |
Цитата (SiteMaster @ 18.07.2019 - 16:10) | Если вам нужна инъекция вы можете заказать ее |
в моём понимании инъекция - это либо инсулин, либо наркотики, поэтому этот термин лучше не использовать в программировании
|
А в общем понимании, инъекция - это внедрение.
В том числе и внедрение постороннего программного кода (в программировании).
Каким термином назвать то или иное явление/процесс/предмет решает тот, кто впервые его описал.
Может вы еще и Америку захотите переименовать?)
killer8080
21.07.2019 - 11:12
Цитата (SorokinFilipp265 @ 19.07.2019 - 09:51) |
я ответа не получил, не указана структура бд, не приведён пример данных в бд, не указано значение переменной $_GET[page] |
показана возможность провести инъекцию из-за бездумного применения эскейпинга, причем тут структура таблиц и данные в бд?
Цитата (SorokinFilipp265 @ 19.07.2019 - 09:51) |
не указано значение переменной $_GET[page] |
в этой переменной ожидается число, а прилететь может что угодно, включая и sql запрос который будет выполнен сервером. Примеры эксплуатации SQLi легко гуглятся
Цитата (SorokinFilipp265 @ 18.07.2019 - 15:26) |
для работы с бд можно использовать вспомогательный php скрипт
<?php
define("MHOST", "localhost"); define("MUSER", "root"); define("MPASS", "parol"); define("MDBNM", "baza");
class DBi { public static $conn; public static function get($args) { return self::$conn->$args; } public static function __callStatic($func, $args) { if(is_null(self::$conn)){ self::$conn = new mysqli(MHOST, MUSER, MPASS, MDBNM); if (self::$conn->connect_error) { die('Connect Error (' . self::$conn->connect_errno . ') '. self::$conn->connect_error); } DBi::set_charset("utf8"); } return call_user_func_array(array(self::$conn, $func), $args); } }
function mq($sql) { $res = DBi::query($sql); if (!is_bool($res)) $res->free(); }
function mi($sql) { $res = DBi::query($sql); $id = 0; if ($res===true) $id = DBi::get("insert_id"); if (!is_bool($res)) $res->free(); return $id; }
function mr($sql) { $res = DBi::query($sql); $row = false; if (!is_bool($res) AND $res->num_rows>0) $row = $res->fetch_assoc(); if (!is_bool($res)) $res->free(); return $row; }
function mu($sql) { $res = DBi::query($sql); $id = 0; if ($res===true) $id = DBi::get("affected_rows"); if (!is_bool($res)) $res->free(); return $id; }
function mf($sql,$field) { $res = DBi::query($sql); $row = false; if (!is_bool($res) AND $res->num_rows>0) $row = $res->fetch_assoc(); if (!is_bool($res)) $res->free(); if (isset($row[$field])) return $row[$field]; return false; }
function ma($sql) { $res = DBi::query($sql); $rows = array(); if (!is_bool($res) AND $res->num_rows>0) { while ($row = $res->fetch_assoc()) $rows[] = $row; } if (!is_bool($res)) $res->free(); return $rows; }
function maf($sql) { $res = DBi::query($sql); $rows = array(); if (!is_bool($res) AND $res->num_rows>0) { if ($row = $res->fetch_assoc()) { $kr = key($row); $rows[] = $row[$kr]; } while ($row = $res->fetch_assoc()) $rows[] = $row[$kr]; } if (!is_bool($res)) $res->free(); return $rows; }
function mas($sql) { $res = DBi::query($sql); $rows = array(); if (!is_bool($res) AND $res->num_rows>0) { if ($row = $res->fetch_assoc()) { $k = key($row); next($row); $v=key($row); $rows[$row[$k]] = $row[$v]; } while ($row = $res->fetch_assoc()) $rows[$row[$k]] = $row[$v]; } if (!is_bool($res)) $res->free(); return $rows; }
function sqle($v) { return "".DBi::real_escape_string($v).""; }
function sqlse($v) { if (is_array($v)) { $b = "".sqle($v[1]).""; switch ($v[0]) { case 'l': $b = "'%".$b."%'"; break; case 'll': $b = "'".$b."%'"; break; case 'lr': $b = "'%".$b."'"; break; } $b = ' LIKE '.$b; } else { if (is_null($v)) $b = 'NULL'; elseif ($v === "NOW()") $b = 'NOW()'; else $b = "'".sqle($v)."'"; $b = ' = '.$b; } return $b; }
function sqlset($arr) { $out = array(); foreach ($arr as $k=>$v) { $b = sqlse($v); $k2 = explode('.',$k); $k1 = array_pop($k2); $k2[] = '`'.$k1.'`'; $out[] = implode('.',$k2).''.$b; } $out = implode(', ',$out); if ($out=='') return ''; return ' SET '.$out; }
function sqlwhere($arr) { $out = array(); foreach ($arr as $k=>$v) { $b = sqlse($v); $k2 = explode('.',$k); $k1 = array_pop($k2); $k2[] = '`'.$k1.'`'; $out[] = implode('.',$k2).''.$b; } $out = implode(' AND ',$out); if ($out=='') return ''; return ' WHERE '.$out; }
пример использования
<?php require 'db.php'; $sql = "SELECT user, parol FROM users"
$row = mr($sql); |
а я сделал проще
кодирую все опасные символы в base64 перед отправкой в БД и при извлечении декодирую их и вывожу htmlspecialshars
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.