безопасность, не выполнять javascript
Добрый день.
Возник такой вопрос — как вывести javascript код, не выполняя его. Простейшее приложение tasklist, пользователь может вводить любые данные в качестве текста таска. Надо затем отдавать это также текстом. И вопрос сразу в догонку — какие еще могут возникнуть проблемы безопасности. пример приложения — http://radiowav.es:3000 |
Ну попробуйте, что-то вроде этого:
<input type='button' value='push' onclick='a()'> <script> var b = false; function a() { if(b) { alert('1') //тут ваш код } } </script> В общем изменяете все что хотите, но пока b = false, код не заработает ======= Насчет приложения, уберите эти алерты, мол создано, исправлено.. |
ну основной вопрос — как вывести 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,
да |
<div id='div'></div> <script> var a,b,c,d; function a() { } a = {} b = [] document.getElementById('div').innerHTML = document.getElementsByTagName('script')[0].innerHTML </script> |
хорошо. тогда полная история =)
у меня есть файл 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>'); |
Может тупость сморожу, попробуй взять в двойные кавычки: ""alert('1')""
|
всё равно сработало =((
сработала вот такая строчка — "<script>alert('11')</script>" просто алерт не работает |
кстати, на форуме где-то видел, заменяли специальные знаки <, > и /.
|
Часовой пояс GMT +3, время: 05:40. |