作者TonyQ (沉默是金。)
看板Web_Design
标题Re: [问题] 一些javascript问题想请教
时间Wed Jul 27 01:29:29 2011
※ 引述《Derix (PalaPala)》之铭言:
: 在下为js新手,想请问各位前辈些许问题...
: 1.是否可能使用js开启新页面後,接着自动在该新页面执行指定的js函式?
: 如:在A页面的网址执行javascript:window.open('B.html');後,接着自动在B页面执
: 行其他script如alert('HI');呢(并非在B页面写入alert函式)?
没有经过使用者自己有任何行为,
或者该目标页面有任何行为帮助的话,基本上是不可能的。
举几个该目标页面没有良好设计的隐忧:
像是新页面有倚赖网址参数去作一些行为,
因此从网址被注入攻击,比方说 iframe src 是用 param 带入的这种笨行为,
或者新页面内容根本就有已经放好得内鬼。
: 2.在A页面执行,从B网域得到的xmlhttprequest.responsetext的script内容,因为same
: origin policy的关系,不能直接eval使用,那是否有其他方法可以间接执行该script
: 呢?
1.这里有几件事情要讲清楚
a.ajax 在 cross domain 时,
被 request 的目标页面的确会收到,也会处理给你回应。
b.但是这个回应browser会挡掉把他当空气,所以不只是不能直接eval使用,
应该是连 xmlhttprequest.responsetext 你都会拿不到。
c.目前要解决跨domain 处理的方式,在限定用get的情况下,
getJSONP 是唯一解,他不是走 ajax 而是走 script tag,
而且使用上很有局限性。
: 3.承问题2,如果有的话,是否就代表该same origin policy事实上是不够完备的?
请注意你谈论的这两件事情是A网站网站开发者设计的,
而且 B 网站如果A网站不信任他的话,根本不应该试着引入B网站的script。
same origin policy 事实上是一种防止 B 网站被A网站任意存取的机制,
而 JSONP 的实做方案,则是B网站提供其愿意被存取的部份给A网站存取,
要讨论完备这件事情,要先讨论目的及其意义。
不然一个网站可以引入外界的 script tag ,
这样某个角度上一样是 violate same origin policy 。
: 4.在HTML里,嵌入<script src = "http://xxx.xx/A.js">的动作可以跨网域取得A.js的
: script执行,那为何还需要same origin policy来防止XSS的攻击呢?
: 感谢指点迷津的各位大大们,如果小的观念错误的话,还希望不吝给小的指导!
: 谢谢Orz
1.这样限定 javascript 的格式,而大幅的限制你获取资料的方式
不代表任意html页面资料都可以透过ajax去要求跟存取。
这方面其实要多参考 user script ,你就会知道两者有多大的差别,
巧妇难为无米之炊,一般而言我们要存取外部网站,那些资料是重点。
如果你要对一篇文章作增删的动作,你没有先从页面中拿到其连结或id,
你根本无从下手起,所以有这个限制是差很多的。
2.这样就把事情限定在"get" 的层级里,
一是可以挡掉get所不支援的大量资料存取,
另一方面是只要website 有确实把 get 跟post分清楚,就不会有问题。
XSS 目前的热门危险区域还是在於使用者可以写入 script 位置,
比方说使用者自由编辑区块或者iframe url是由user 提供的。
但凭良心讲 XSS 防堵上非常困难,目前最有效的 sub domain 方案,
实做起来非常累,而且又阻绝了内容本身跟外面的连结方式,会造成很多限制。
这也是为什麽目前各大 blog 平台,大致上都是采用 script 白名单的方式,
或者直接不允许使用者自行写入 script tag 的作法。
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 198.203.175.175
※ 编辑: TonyQ 来自: 198.203.175.175 (07/27 01:30)
※ 编辑: TonyQ 来自: 198.203.175.175 (07/27 01:31)
※ 编辑: TonyQ 来自: 198.203.175.175 (07/27 01:32)
1F:→ grence:oh..我回了一样的问题,只是你人比较好XD 07/27 02:09
2F:→ TonyQ:惊 XD 我应该先看看ajax板的 07/27 02:16
3F:推 Derix:感谢东尼大热心且详细的回应,您说的内容新手在下需先消化後 07/27 02:36
4F:→ Derix:始能回覆或再提问~ 也很抱歉&感谢g大两边跑版回应="= 07/27 02:38
5F:→ grence:我推文只是想说 TonyQ的回答比我还要详细而已 XD 07/27 23:53