Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] Обезопасить поле ввода INPUT, защита от инъекций / 25 сообщений из 29, страница 1 из 2
15.04.2014, 13:14
    #38615225
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Есть форма ввода данных для поиска по сайту, какой самый надёжный способ для того, чтоб нельзя было в неё вводить данные типа:

<script>alert("Я злой хакер!8)");</script>

А то сейчас у меня в форму такие данные вводятся вызывая при этом сбой в работе JS скриптов.
...
Рейтинг: 0 / 0
15.04.2014, 13:23
    #38615240
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Gororкакой самый надёжный способ для того, чтоб нельзя было в неё вводить данные типа:заменять спецсимволы html на сервере.
...
Рейтинг: 0 / 0
15.04.2014, 13:48
    #38615276
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Яростный МечGororкакой самый надёжный способ для того, чтоб нельзя было в неё вводить данные типа:заменять спецсимволы html на сервере.

Ну это тоже конечно, но у меня прежде чем добраться до сервера, данные сперва по js скриптам бегают, ну всякие транслиты, обрезания лишнего, фильтры и тд. (для снятия лишней нагрузки на сервер) и вот в них и происходит сбой.

Мне желательно сразу данные из input "обезвредить" и потом уже с ними работать и отправлять на сервер.

Как можно это реализовать?
...
Рейтинг: 0 / 0
15.04.2014, 13:53
    #38615290
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
GororКак можно это реализовать?заменять угловые скобки и амперсанд на их спецсимволы.
Код: javascript
1.
str = str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");



теперь эту строку можно будет воткнуть на страницу через innerHTML (ты ведь так делаешь?)
...
Рейтинг: 0 / 0
15.04.2014, 14:23
    #38615353
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Яростный МечGororКак можно это реализовать?заменять угловые скобки и амперсанд на их спецсимволы.
Код: javascript
1.
str = str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");


теперь эту строку можно будет воткнуть на страницу через innerHTML (ты ведь так делаешь?)

Да, в конечном итоге данные выводятся через innerHTML



А как мне ещё от круглых скобок избавиться?

Я добавил:
Код: javascript
1.
str = str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/script/g, "sсript").replace(/>/g, "&gt;");



заменяю в слове script "c" англискую на "c" русскую (так просто для надёжности))

Ещё убрал (;)
...
Рейтинг: 0 / 0
15.04.2014, 14:32
    #38615370
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
GororА как мне ещё от круглых скобок избавиться?зачем?

экранировать надо только угловые скобки и амперсанд.
остальное смысла не имеет.

Goror
Код: javascript
1.
.replace(/script/g, "sсript")

а это вообще нафига? )
...
Рейтинг: 0 / 0
15.04.2014, 14:53
    #38615402
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Яростный МечGororА как мне ещё от круглых скобок избавиться?зачем?

экранировать надо только угловые скобки и амперсанд.
остальное смысла не имеет.

Goror
Код: javascript
1.
.replace(/script/g, "sсript")

а это вообще нафига? )

Не знаю.. у меня что-то сбой даёт вот такой ввод:

<script>alert(111);</script>

убираю "(" и работает нормально, то есть: <script>alert111);</script> ?
...
Рейтинг: 0 / 0
15.04.2014, 14:57
    #38615408
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

может для надежности было бы лучше весь <script>..</script> выкусывать?
...
Рейтинг: 0 / 0
15.04.2014, 15:03
    #38615417
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-Goror,

может для надежности было бы лучше весь <script>..</script> выкусывать?

Может быть. А это как? Мне в принципе нужно сохранять исходный вид текста, но только делать его "без обидным" для JS скриптов.


А щас проверил, у меня чисто alert(1); вызывает сбой, а func(1); к примеру не даёт сбой.



То есть служебная функция JS даёт сбой...

Что делать?
...
Рейтинг: 0 / 0
15.04.2014, 15:17
    #38615435
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

Код: javascript
1.
2.
3.
4.
var pos1=inp_text.indexOf("<script>");
pos2=inp_text.indexOf("</script>"); 
if(pos1!=-1 && pos2!=-1)
  var out_text = inp_text.substr(0, pos1-1)+inp_text.substr(pos2+"</script>".length);



както кривовато :) но вроде работает
я бы лучше посмотрела в сторону готового решения по валидации данных
хотя бы как сделано
...
Рейтинг: 0 / 0
15.04.2014, 15:19
    #38615437
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
поправочка:) лишку обрезала

var out_text = inp_text.substr(0, pos1)+inp_text.substr(pos2+"</script>".length)
...
Рейтинг: 0 / 0
15.04.2014, 15:21
    #38615440
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-,

ну и var pos2; :(
...
Рейтинг: 0 / 0
15.04.2014, 15:50
    #38615509
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-Goror,

Код: javascript
1.
2.
3.
4.
var pos1=inp_text.indexOf("<script>");
pos2=inp_text.indexOf("</script>"); 
if(pos1!=-1 && pos2!=-1)
  var out_text = inp_text.substr(0, pos1-1)+inp_text.substr(pos2+"</script>".length);



както кривовато :) но вроде работает
я бы лучше посмотрела в сторону готового решения по валидации данных
хотя бы как сделано

Будем проверять! ::))
...
Рейтинг: 0 / 0
15.04.2014, 15:58
    #38615532
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

таких <script></script> может быть не одна штука
...
Рейтинг: 0 / 0
15.04.2014, 16:55
    #38615657
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-Goror,

таких <script></script> может быть не одна штука

Неужели нет в js каких нибудь спец функций как в php к примеру htmlspecialchars и тд?

Чтоб без отказано и в одну строчу.
...
Рейтинг: 0 / 0
15.04.2014, 17:08
    #38615690
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

а тебе уже сказали - на сервере, все равно отправлять туда данные,
а если пользователь скрипты отключил? все эти проверки отвалятся
не надо серверу жизнь облегчать, пусть пашет, он железный
...
Рейтинг: 0 / 0
15.04.2014, 17:20
    #38615719
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-Goror,

а тебе уже сказали - на сервере, все равно отправлять туда данные,
а если пользователь скрипты отключил? все эти проверки отвалятся
не надо серверу жизнь облегчать, пусть пашет, он железный

Ну до сервера нужно данные довести, а если у меня будет скрипт сбой давать до отправки данных, что делать тогда?

У меня он поэтапно работает, сперва отслеживает ввод данных, затем транслейт функции, затем обрезка лишнего, фильтры и тд и тп. И это всё на JS. А потом уже на сервер.
...
Рейтинг: 0 / 0
15.04.2014, 17:42
    #38615744
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<html>
<body>
<script>function iAmValidator(){console.log("Я маленький скриптик, я облечаю жизнь серверу :) ура");}</script>
<form>
<input name="input1" type="text" value="" onchange="iAmValidator();"/>
<input name="save" type="submit" value="save" />
</form>
</body>
</html>



открой эту страничку с включенным джаваскриптом и выключенным,
данные у тебя все равно уйдут на сервер, то есть на сервере полюбому
нужно предусмотреть проверку данных,транслит, и все такое,
а зачем двойная работа?
я конешно утрирую, без джаваскриптов сейчас уже наверное и сайтов
работающих не осталось :) ну мало :),
но обрабатывать входящие данные на сервере прийдется
...
Рейтинг: 0 / 0
15.04.2014, 17:55
    #38615758
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-Goror,

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<html>
<body>
<script>function iAmValidator(){console.log("Я маленький скриптик, я облечаю жизнь серверу :) ура");}</script>
<form>
<input name="input1" type="text" value="" onchange="iAmValidator();"/>
<input name="save" type="submit" value="save" />
</form>
</body>
</html>



открой эту страничку с включенным джаваскриптом и выключенным,
данные у тебя все равно уйдут на сервер, то есть на сервере полюбому
нужно предусмотреть проверку данных,транслит, и все такое,
а зачем двойная работа?
я конешно утрирую, без джаваскриптов сейчас уже наверное и сайтов
работающих не осталось :) ну мало :),
но обрабатывать входящие данные на сервере прийдется


Ну тут в "лобовую", при нажатии кнопки save, данные через GET запрос, прям в URL строке передаются, а моя форма ввода работает через асинхронные передачи данных, то есть я могу и не менять URL. Ну и на счёт "всю работу отдавать серверу". Ну можно и так, но зачем гонять десятки лишних запросов, когда можно обходиться одним?)
...
Рейтинг: 0 / 0
15.04.2014, 18:12
    #38615784
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

я твоей задачи не знаю, сужу по тому што в ветке написано:
скрипты ты вырезал, сделай ещё обработку ошибок try ... catch ...,
чтобы скрипты не падали

одной функции, чтобы обезвредить входящие данные,
в джаваскрипте помоему нет, у всех разное представление о вредных
и полезных данных, все это имхо, я в общемто новичок, меня не слушай
слушай старших камрадов :) удачи
...
Рейтинг: 0 / 0
15.04.2014, 19:02
    #38615806
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-у всех разное представление о вредных
и полезных данных

А что там долго думать, если вводимые пользователем данные, взаимодействуют с скриптами и тд, нарушая при этом их функциональность и создавая потенциальную угрозу, значит данные вредные:) Ежели не мешают работе сервера, не грузят его и тд. Значит полезные данные!)
...
Рейтинг: 0 / 0
15.04.2014, 19:12
    #38615812
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

по твоей логике все входные данные вредны :)
...
Рейтинг: 0 / 0
15.04.2014, 19:19
    #38615818
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-Goror,

по твоей логике все входные данные вредны :)


Почему все?) Я ведь написал (те которые взаимодействуют с скриптами, нарушая их работу!)

Если к примеру мне в форму введут таймер с интервалом 1 мили.сек и будут отправлять запросы серверу или что-то подобное)
...
Рейтинг: 0 / 0
15.04.2014, 19:33
    #38615822
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
Goror,

но они же грузят сервер :) ну ладно это все лирика

для валидации данных на клиенте можно потрогать например
jquery.validate.js, но вообще для валидации данных подход другой
- данные не чистятся за пользователем, а проверяются, не прошли
проверку - не отправляются, пусть сам вводит корректные данные
на хабре можно в частности статьи поискать
...
Рейтинг: 0 / 0
15.04.2014, 19:57
    #38615828
Goror
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] Обезопасить поле ввода INPUT, защита от инъекций
-k2-Goror,

но они же грузят сервер :) ну ладно это все лирика

для валидации данных на клиенте можно потрогать например
jquery.validate.js, но вообще для валидации данных подход другой
- данные не чистятся за пользователем, а проверяются, не прошли
проверку - не отправляются, пусть сам вводит корректные данные
на хабре можно в частности статьи поискать

Я редко пользуюсь jquery скриптами, они конечно удобные, но довольно массивные библиотеки, + сложно что-то поменять в структуре (даже незначительно)

p.s мне легче самому написать нужную функцию, при этом она будет в 10-100 раз меньше готовых библиотек)

Ну это чисто мой подход)
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] Обезопасить поле ввода INPUT, защита от инъекций / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]