1 / 1 / 0
Регистрация: 08.03.2014
Сообщений: 85

Защита от взлома

17.11.2014, 17:20. Показов 3778. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите организовать защиту от взлома.
Слышал что можно в input'ах вводить sql код.Если это правда: как исправить?И есть ли ещё способы взлома и как защитится?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2014, 17:20
Ответы с готовыми решениями:

Защита от взлома
Имеется простенький скрипт реги&авториз нужно: "обработка всех переданных через форму данных функцией mysql_real_escape_string"...

Защита формы от взлома
Добрый день. Слышал что многие взломы сайтов происходят из-за того, что на форме нет защиты. Я немного не представляю как можно взломать...

Защита PHP сайта от взлома
Как защитить сайт, от взлома, написанный на PHP?

39
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
22.02.2015, 00:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от tip78 Посмотреть сообщение
может всё-таки В БАЗУ помещать после htmlspecialchars()
Нет, хранится именно в сыром виде.

Цитата Сообщение от tip78 Посмотреть сообщение
prepare так то на любителя
я так делаю:
$s{'mysqli'}->escape_string(htmlspecialchars(substr($ _POST{'fieldname'},0,255),ENT_QUOTES))
это для варчаров
а где можно юзать a-z0-9, там просто ^регексп$
И зачем все это? Подготовленные выражения "разделяют" сам запрос и данные. После первого запроса к СУБД sql запрос компилируется и при последующих запросах будет передаваться не весь запрос, а только забинденные данные.

Благодаря такой реализации помимо многих других плюсов и то, что нельзя выполнить инъекцию, так как СУБД "знает" где запрос, а где данные. Благодаря этому отпадает необходимость городить говнокод с экранированием данных, а так же самой СУБД легче живется из-за того, что не надо каждый раз интерпретировать запрос (он уже скомпилен и закэширован).
0
 Аватар для sash
89 / 87 / 49
Регистрация: 09.10.2014
Сообщений: 571
22.02.2015, 00:26
PHP
1
2
3
4
5
6
7
function mysql_escape($string)
{       
        $string = trim($string);
        if (get_magic_quotes_gpc()){ $string = stripslashes($string);}
        $string = mysql_real_escape_string($string);    
        return htmlentities($string, ENT_QUOTES, "UTF-8");
}
Через неё пропускай всё что ни ввели
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
22.02.2015, 00:47
Цитата Сообщение от Custos Посмотреть сообщение
Нет, хранится именно в сыром виде.
ну ну, в каком-нибудь магазине таблица на 100 товаров (а есть такие, которые и на 10000 могут страницу выдать), где в строке 3+ таких поля, и будете 300 раз вызывать функцию
это не говнокод, нет.

Цитата Сообщение от Custos Посмотреть сообщение
После первого запроса к СУБД sql запрос компилируется и при последующих запросах будет передаваться не весь запрос, а только забинденные данные.
тут намекают, что скомпилированный запрос доступен в пределах одного подключения (сессии)
The scope of a prepared statement is the session within which it is created, which as several implications:
A prepared statement created in one session is not available to other sessions.
When a session ends, whether normally or abnormally, its prepared statements no longer exist.
а поскольку не все держат постоянные подключения (я не держу, ибо чревато), то вариант не всем подойдёт
memcached/redis FTW (for teh win)
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
22.02.2015, 01:14
tip78, а ведь в твоих словах есть доля правды
а всего лишь стоит написать класс(функцию) фильтрации данных используя filter_var, filter_input
немного сахарной пудры и не надо будет никакого stripslashes и mysql_real_escape_string
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
22.02.2015, 02:16
Цитата Сообщение от Poznakomlus Посмотреть сообщение
а всего лишь стоит написать класс(функцию) фильтрации данных используя filter_var, filter_input
немного сахарной пудры и не надо будет никакого stripslashes и mysql_real_escape_string
чё это вдруг?
stripslashes вообще просто удаляет экранирование символов, она не помогает проверять ввод
я выше написал, чего достаточно на 100%
$mysqli->escape_string обязателен на произвольных строках (*char)
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
22.02.2015, 02:43

PHP
1
2
$a = "Me' test";
var_dump(filter_var ( $a, FILTER_SANITIZE_MAGIC_QUOTES));
Добавлено через 17 минут
PHP
1
2
$a = "<div>Me' test</div>";
var_dump(filter_var ( $a, FILTER_SANITIZE_FULL_SPECIAL_CHARS));
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
22.02.2015, 03:08
о, я про эту функцию и не знал
она чё-то мутная какая-то
например, пропускает:
http://example.com/"><script>alert(document.cookie)</script>
так в камментах пишут
руками надёжнее в общем, через простейший регексп
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
22.02.2015, 04:25
Цитата Сообщение от tip78 Посмотреть сообщение
ну ну, в каком-нибудь магазине таблица на 100 товаров (а есть такие, которые и на 10000 могут страницу выдать), где в строке 3+ таких поля, и будете 300 раз вызывать функцию
это не говнокод, нет.
Это все после обработки благополучно кэшируется. Данные хранятся в "сыром" виде потому, что это может понадобится для реализации будущих фич проекта, где будут надо исходные данные.

Добавлено через 22 минуты
Цитата Сообщение от tip78 Посмотреть сообщение
тут намекают, что скомпилированный запрос доступен в пределах одного подключения (сессии)
MySQL ?) Не удивительно) Не зря отказался от этого г....
СУБД кэширует план (который создается после разбора запроса) выполнения запросов. И если текст нового пришедшего запроса не меняется - он берёт его из своего кэша по обычному хэшу. По крайней мере так происходит в PostgreSQL и Oracle. Ну а MySQL... тут одно объяснение - это же MySQL, чего вы хотели)
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
22.02.2015, 06:50
А если вообще за дело плотно взяться - то лучше использовать framework и не городить велосипедов с одним колесом, притом квадратным . Там уже всё продумано и остаётся только успешно пользоваться.
0
22.02.2015, 18:02

Не по теме:

Цитата Сообщение от lyod Посмотреть сообщение
Ну вот, ни за что, ни про что назвали недоучкой
Вы как луч света в темном царстве. Если приняли мой трёп на свой счет - извиняюсь

0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
22.02.2015, 19:50
Цитата Сообщение от lyod Посмотреть сообщение
А если вообще за дело плотно взяться - то лучше использовать framework и не городить велосипедов с одним колесом, притом квадратным . Там уже всё продумано и остаётся только успешно пользоваться.
$mysqli->escape_string и есть фреймворк
а в этих ваших Yii тяжёлого говнокода чуть менее, чем дохрена
когда можно самому 1й строкой всё сделать, то нахера тащить весь фреймворк, со всеми его граблями и тысячами строк кода?
0
 Аватар для sash
89 / 87 / 49
Регистрация: 09.10.2014
Сообщений: 571
22.02.2015, 19:56
tip78, вот имянно
0
22.02.2015, 20:31

Не по теме:

Цитата Сообщение от tip78
в этих ваших Yii тяжёлого говнокода чуть менее, чем дохрена
Это мировой фреймворк. Его разрабатывают супер профессионалы, имхо. По вашему там есть *о*но код?

Этим честно говоря не пользовался не одного раза. Так что не могу сказать есть ли в нем *о*но код.
Цитата Сообщение от tip78
когда можно самому 1й строкой всё сделать, то нахера тащить весь фреймворк, со всеми его граблями и тысячами строк кода?
Согласен.

Только если работа очень сложная можно использовать фреймворк. Тогда можно задействовать весь его арсенал на 80-90%.

0
22.02.2015, 20:36

Не по теме:

Цитата Сообщение от tolimadokara Посмотреть сообщение
Это мировой фреймворк. Его разрабатывают супер профессионалы
не не супер. Одни behaviors чего стоят. Ребята даже не в курсе каков современный php

0
22.02.2015, 20:41

Не по теме:

Цитата Сообщение от root
Цитата Сообщение от tolimadokara
Это мировой фреймворк. Его разрабатывают супер профессионалы
не не супер. Одни behaviors чего стоят. Ребята даже не в курсе каков современный php
Ясно. Значит он разрекламирован хорошо. Поэтому популярен.

Хреновым фреймворком не пользовались бы миллионы программистов. Тогда, если пользуются то из-за его популярности.

0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
22.02.2015, 20:55
Цитата Сообщение от tolimadokara Посмотреть сообщение
Это мировой фреймворк. Его разрабатывают супер профессионалы, имхо. По вашему там есть *о*но код?
Цитата Сообщение от tolimadokara Посмотреть сообщение
Хреновым фреймворком не пользовались бы миллионы программистов.
расскажите это битриксу, WP, DLE, друпалу
особенно битрикс вас внимательно выслушает
миллионы программистовбыдлокодеров им пользуются, как и ПХП в целом, потому что он простой
когда думать не надо, это всегда "миллионы мух, которые не могут ошибаться"
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
23.02.2015, 11:23

Не по теме:

Цитата Сообщение от root Посмотреть сообщение
Вы как луч света в темном царстве. Если приняли мой трёп на свой счет - извиняюсь
Да я так и понял. Я в шутку. :)



Добавлено через 4 часа 49 минут
Цитата Сообщение от tip78 Посмотреть сообщение
$mysqli->escape_string и есть фреймворк
Вы имели в виду ООП, наверное...
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
23.02.2015, 15:22
Цитата Сообщение от lyod Посмотреть сообщение
Вы имели в виду ООП, наверное...
а фреймворк это что?
набор ООП и есть
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
24.02.2015, 06:22
Цитата Сообщение от tip78 Посмотреть сообщение
а фреймворк это что?
набор ООП и есть
Не набор ООП, а набор функционала (причём хорошо продуманного) на ООП. То есть framework использует ООП, но framework не равно ООП.
0
-72 / 10 / 4
Регистрация: 01.09.2009
Сообщений: 163
24.02.2015, 15:25
Цитата Сообщение от lyod Посмотреть сообщение
Не набор ООП, а набор функционала (причём хорошо продуманного) на ООП. То есть framework использует ООП, но framework не равно ООП.
как говорит один мой знакомый модератор:
софистика.
словоблудство.
бан.

по сути ничего нового пока не изобрели. функции и классы наше всё.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2015, 15:25
Помогаю со студенческими работами здесь

Защита от взлома
Как сделать фильтрацию такой кодировки ? &lt;? include 'config/config.php'; if(isset($_GET,$_GET)) { $GetUID = $_GET; ...

Защита WP от взлома
Как защитить сайт на WP от взлома?

Защита от Взлома
У меня есть программа,которую можно взломать разными Программами для взлома, Я хочу сделать проверку процессов! Например: Запустил...

Защита от взлома с ndk
код на плюсах тоже декомпилируется в читаемый код?

Защита drupal от взлома
Хакер взламывает мой сайт и заливает shell раньше это был редирект + троян в админ панелиconfig&amp;render=overlay{gzip} JS:Iframe-AHU...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru