Javascript.RU

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

безопасность, не выполнять javascript
Добрый день.

Возник такой вопрос — как вывести javascript код, не выполняя его.
Простейшее приложение tasklist, пользователь может вводить любые данные в качестве текста таска. Надо затем отдавать это также текстом.

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

пример приложения — http://radiowav.es:3000
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2012, 11:36
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Ну попробуйте, что-то вроде этого:
<input type='button' value='push' onclick='a()'>
<script>
var b = false;
function a() {
if(b) {
alert('1') //тут ваш код
}
}
</script>

В общем изменяете все что хотите, но пока b = false, код не заработает
=======
Насчет приложения, уберите эти алерты, мол создано, исправлено..
__________________
оляля, ололо

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

ну основной вопрос — как вывести javascript-код текстом, по аналогии с mysql-инъекциями.

<!doctype html>
<html>
<head>
<script>
function test(){
var string = 'alert("hack it")';
document.getElementById('example').innerHTML = string;
}
</script>
</head>
<body onLoad="test()">
<h3 id="example"></h3>
</body>
</html>

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

ой, а так работает))
дело в том, что это строка?
Ответить с цитированием
  #5 (permalink)  
Старый 28.03.2012, 11:53
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

tadjik1,
да
__________________
оляля, ололо
Ответить с цитированием
  #6 (permalink)  
Старый 28.03.2012, 11:55
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

<div id='div'></div>
<script>
var a,b,c,d;
function a() {  }
a = {}
b = []
document.getElementById('div').innerHTML = document.getElementsByTagName('script')[0].innerHTML
</script>
__________________
оляля, ололо
Ответить с цитированием
  #7 (permalink)  
Старый 28.03.2012, 11:56
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

хорошо. тогда полная история =)

у меня есть файл tasks.json, в котором массивом сохранены объекты (таски).

{"id":"7","text":"ыав","lastupdate":"28.03.2012","complete":false}


вот если "text":"alert('1')", то он запускается, несмотря на то, что я добавил проверку и на клиенте, и на сервере (node.js)

server.js
newTask.text = String(post.text);


index.html

$('#taskList').append('<li id="' + String(value.id) + '">' + String(value.text) + '</li>');
Ответить с цитированием
  #8 (permalink)  
Старый 28.03.2012, 12:01
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Может тупость сморожу, попробуй взять в двойные кавычки: ""alert('1')""
__________________
оляля, ололо
Ответить с цитированием
  #9 (permalink)  
Старый 28.03.2012, 12:04
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

всё равно сработало =((

сработала вот такая строчка — "<script>alert('11')</script>"

просто алерт не работает

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

кстати, на форуме где-то видел, заменяли специальные знаки <, > и /.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: 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