Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.03.2012, 12:29
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

нашел вот. называется это xss, примитивная защита такая —

string.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");


гуру, подскажите, какие еще могут быть проблемы и как от них защититься? не говорю о целенаправленных атаках, а просто вот от таких «болванов».
Ответить с цитированием
  #12 (permalink)  
Старый 28.03.2012, 12:56
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

А почему он у вас вообще выполняется? Он в eval чтоли стоит?
__________________
оляля, ололо

Последний раз редактировалось 9xakep, 28.03.2012 в 12:59.
Ответить с цитированием
  #13 (permalink)  
Старый 28.03.2012, 13:02
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

нет, зачем?
$.getJSON('tasks.json', function(data) {
          $(data.tasks).each(function(index,value){
            if(!value.complete){
              $('#taskList').append('<li id="' + value.id + '">' + value.text + ' <input type="button" class="edit" value="edit"><input type="button" class="complete" value="mark complete"></li>');
            }
          });
        });


вставляет в html тэги <script></script>, браузер их исполняет
Ответить с цитированием
  #14 (permalink)  
Старый 28.03.2012, 13:11
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Стоп...так вы пробовали в таксе написать: { id: "5", text:""alert('1')""... }
__________________
оляля, ололо
Ответить с цитированием
  #15 (permalink)  
Старый 28.03.2012, 14:16
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

9xakep, всё верно, так не работает. а вот так { id: "5", text:""<script>alert('1')</script>""... } запускается. в общем, решение — это заменить их на ascii коды. только теперь новая проблема — не пойму как их отображать правильно для клиента =)
Ответить с цитированием
  #16 (permalink)  
Старый 28.03.2012, 17:10
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

вы, наверное, имели ввиду этот. он в данном контекте не подходит.
через регулярки хорошо получается, но не пойму как их обратно клиенту хтмл кодом отдавать, а не текстом, чтобы красиво было. сам механизм не могу никак понять(
Ответить с цитированием
  #17 (permalink)  
Старый 28.03.2012, 17:17
Аспирант
Отправить личное сообщение для Questioner Посмотреть профиль Найти все сообщения от Questioner
 
Регистрация: 03.02.2011
Сообщений: 80

str.replace(new RegExp("<", "mig"), "&lt;");
Ответить с цитированием
  #18 (permalink)  
Старый 28.03.2012, 18:48
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Ну попробуйте при отправке проверять если в строке: <script> или </script>
<script>
var a = ''<script>asd</script>''
if((/\<script\>/).test(a)) {
a = a.replace(/\<script\>/, '')
a = a.replace(/\<\/script\>/, '')
alert(a)
} else { alert('noscript') }
</script>

===========
Мда...опять тупость сморозил...
__________________
оляля, ололо

Последний раз редактировалось 9xakep, 28.03.2012 в 18:59.
Ответить с цитированием
  #19 (permalink)  
Старый 28.03.2012, 19:07
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

Сообщение от Maxmaxmахimus
сть специальный тег внутри которого теги парсится не будут, но я его забыл
Наверное вы имели в виду plaintext. Но он вроде глючит по всюду, никто не видит закрывающий тег.
Ответить с цитированием
  #20 (permalink)  
Старый 28.03.2012, 19:25
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Тогда code еще в добавок
Хотя там не грамотно сказано, код и без этих тегов читаться не будет:
function a() {
alert('')
}
<code><script>alert('a')</script></code>

=============
А скрипт и без этих тегов выполняется..
===========
<plaintext>
<script>
alert('a')
</script>

А вот это уже что-то рабочее(в хроме), в других браузерах не проверял..
__________________
оляля, ололо

Последний раз редактировалось 9xakep, 28.03.2012 в 20:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: JavaScript. Сильные стороны Magneto Учебные материалы 16 21.04.2013 15:28
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Javascript и компьютерная безопасность magicgate Общие вопросы Javascript 0 25.04.2011 00:44
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34