| Autor | Zpráva |
|---|---|
| Samsonweb |
#1 · Zasláno: 29.7.2010 16:25:31
Dobrý den,
nevíte prosím jaký příkaz slouží k vypnutí Javascriptu na stránce? Zkoušel jsem funkci throw new Error("");Děkuji. |
| Witiko Člen |
#2 · Zasláno: 29.7.2010 17:06:21
To snad díky closure ani není možné. Na co to potřebuješ?
|
| ah01 Člen |
#3 · Zasláno: 29.7.2010 17:22:21 · Změnil/a: ah01
Samsonweb:
Myslím, že docela spolehlivě bude fungovat toto: while(1); Návštěvník tvé stránky si pak JS vypne sám (nebo ji už nikdy nenavštíví – to je drobný vedlejší efekt). Ale teď vážně. K čemu je vypnutí Javascriptu Javascriptem dobré? |
| Timy Člen |
#4 · Zasláno: 29.7.2010 17:40:21
ah01:
Nevím na co to potřebuje zrovna Samsonweb, ale hodilo by se to třeba u SuperGenPass, což je bookmarklet na generování hesel a moc se nehodí, aby během generování hesla běžel na stránce jiný JavaScript, který by toto heslo mohl odchytávat, jak je ukázáno zde. Takže by se hodilo, aby bookmarklet na začátku vypnul případný JavaScript na stránce a po skončení generování ho zase zapnul. Dost možná by se našel jiný způsob jak to zabezpečit, nějak moc jsem nad tím nepřemýšlel, ta bezpečnostní chyba mi moc nevadí. |
| Witiko Člen |
#5 · Zasláno: 29.7.2010 17:59:23
Generování hesla můžeš provést v anonymní funkci, kterou jiný javascriptový script jen těžko odchytí. Deaktivace javascriptu javascriptem (kdyby něco takového existovalo) by navíc odrovnala i iniciační script.
|
| Timy Člen |
#6 · Zasláno: 29.7.2010 18:09:29
Witiko:
Tam jde o to, že musíš nejdříve do inputu napsat své heslo, pomocí něhož se následně vygeneruje pseudonáhodné heslo. A toto tvé vlastní heslo může být z inputu jednoduše ukradeno. „Deaktivace javascriptu javascriptem (kdyby něco takového existovalo) by navíc odrovnala i iniciační script.“ Samozřejmě se nesmí odrovnat úplně, ideálně jen nějaký "namespace". Já nějak moc nepředpokládám, že by to šlo, ale ideálně aby šlo odrovnat všechen javascript mimo ten, který sám vyvolám přes adresní řádek, tj. přes bookmarklet. Například když do stránky chci přidat javascript, můžu jednoduše přidat do HTML element script a bude to fungovat – stejným postupem by teoreticky mohlo jít JavaScript odstranit. |
| Witiko Člen |
#7 · Zasláno: 29.7.2010 19:46:19
Držím palce.
|
| Samsonweb |
#8 · Zasláno: 29.7.2010 19:58:45
Witiko, ah01:
Proč to potřebuji není vůbec důležité. Jeden skript způsobuje vytuhnutí v Internet Exploreru 8 a potřebuji ho při splnění určitých podmínek vypnout. Mohu měnit pouze jiný připojený soubor a do zbytku se zasahovat nedá. |
| Witiko Člen |
#9 · Zasláno: 29.7.2010 21:02:11
Asi ti neporadím(e), jediná logická rada je script, který způsobuje vytuhnutí MSIE, nepoužívat.
|
| ah01 Člen |
#10 · Zasláno: 30.7.2010 09:23:57
Samsonweb:
To co popisuješ IMHO nejde. Stejně tak, problém co píše Timy. JS běží v jednom jmenném prostoru, která sdílí všechny skripty na stránce (je jedno odkud pochází), takže jde vypnout všechno nebo nic. Existují snahy pro vyšší bezpečnost JS jako Caja nebo ADsafe, to ale funguje (no, oni jsou to spíš návrhy) na jiném principu. |
| Fred Člen |
#11 · Zasláno: 30.7.2010 11:01:28
|
| Samsonweb |
Witiko:
O to se právě snažím. Ten skript se smazat nedá a spouští se jako poslední. Většinou provádí nějaké užitečné věci. Nejde ani opravit, protože ho generuje aplikace. V podstatě bych potřeboval něco jako následující funkci, která by zastavila pouze Javascript a HTML kód normálně zobrazila. Může se zavolat pouze skriptem v <head>.
function die(error) {
if (window.stop) window.stop()
else if (document.execCommand) document.execCommand("Stop")
throw new Error(error)
}Fred: Skript si události znovu přeregistruje i s onload a dalo by se použít pouze onunload, což už je dost pozdě. |