безопасность, не выполнять 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, время: 09:55. |