Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
JsonRequestBehavior.DenyGet.while(1); можно использовать for(;;); — на один байт короче :)while — нельзя :)надо учитывать и такое.Учитывать, что кому-нибудь всё-таки удастся переопределить
while? :)// целевой класс org.qxfusion.EngineInfo
// запускать так $ java org.qxfusion.EngineInfo.class
package org.qxfusion;
import java.util.*;
import javax.script.*;
public class EngineInfo {
public static void main( String[] args ) {
ScriptEngineManager mgr = new ScriptEngineManager();
List<ScriptEngineFactory> factories = mgr.getEngineFactories();
for ( ScriptEngineFactory factory : factories ) {
System.out.println( String.format(
"engineName: %s, THREADING: %s",
factory.getEngineName(),
factory.getParameter( "THREADING" ) ) );
}
}
}
importPackage(java.lang); // куда же без него
var threadMain = function(a) { while(true) { print("Thread "+a); } } // вечный цикл
var thread1 = function() { return threadMain(1); } // поток 1
var thread2 = function() { return threadMain(2); } // поток 2
// конструктор объекта потока
var newThread = function(fn) {
return new java.lang.Thread( new java.lang.Runnable( { run: fn } ) );
}
var th1 = newThread(thread1); th1.start();
var th2 = newThread(thread2); th2.start();
// на выходе - честная работа 2 потоков (если не верите - смотрим отладчик)
Путём переопределения глобального конструктора array или методов доступа злоумышленник может вызывать произвольный метод всякий раз, когда устанавливается атрибут объекта (массива или хэша), тем самым получая доступ к содержимому JSON.Нет не может, см. тоже самое правило. А конкретней — либо переопределение не будет допущено политиками броузера, либо javascript со стороны хакерского сайта не получит доступ к объектам из
<script> другого сайта (все тот же кроссдомен).скрипт это скрипт, в нем нет никаких объектовДолго пытался понять. :) В скрипте все объекты — все переменные, массивы, значения массивов и т.д. Следующий скрипт не работает кроссдоменно:
// BOOM - access denied:
var json = frames['script_to_google'].document.getElementById('json_from_google');
// BOOM - access denied:
var json = frames['script_to_google'].var_json_from_google;
<script src=... т.е. объект JSON нужно прочитать у нас на страничке…var secret='taina';
<script src=http://drugoi_host.com/return.js>alert(secret);</script>http://zloi_host.com/zlo.htm<script src="http://drugoi_host.com/return.js"></script>
<script>alert(secret);</script>
1 потому что так работает веб. куки передаются всегда тому сайту к которому они принадлежат. хотите вы этого или нетАга, но только тогда это крупная ошибка дизайна сайта — не ограничить куки на инклюд, подгружаемый через source… это что-то…
скипт будет выполнен, и куки будут нужныеНо JSON-то от гугля (из этого выполненного скрипта) вам нужно прочитать (интерпретировать) в своей страничке. Все эти объекты JSON не доступны нигде кроме скрипта от google.com.
<script>
[{"data":"value"}];
//Как мне прочитать data?
</script><script> заголовок не передать, ни сам токен не извлечь. Или у гугла есть какие-то причины не использовать такой подход?
Зачем Google добавляет while(1); к своим JSON-ответам?