跨网站指令码(Cross-site scripting,通常简称为XSS)是一种网站应用程式的安全漏洞攻击,允许恶意使用者将程式码注入到网页上,其他使用者在观看网页时就会受到影响。这类攻击通常包含了HTML以及使用者端
脚本语言。
当网景(Netscape)最初推出JavaScript语言时,他们也察觉到准许网页伺服器传送可执行的程式码给一个
浏览器的安全风险(即使仅是在一个浏览器的
沙盒里)。它所造成的一个关键的问题在于使用者同时开启多个
浏览器视窗时,在某些例子里,网页里的片断程式码被允许从另一个网页或物件取出资料,而因为恶意的网站可以用这个方法来尝试窃取机密资讯,所以在某些情形,这应是完全被禁止的。为了解决这个问题,
浏览器采用了与最初相同的决策──允许来自相同网域名称系统和使用相同协定的物件与网页之间的任何互动。这样一来,恶意的网站便无法借由JavaScript在另一个
浏览器窃取机密资料。此后,为了保护使用者免受恶意的危害,其他的
浏览器与伺服端指令语言采用了类似的存取控制决策。一般而言,跨网站指令码的漏洞常见于网页允许攻击者通过这些机制的弱点。由于发现了巧妙的注入恶意的指令码到由其他网域服务的网页方法,攻击者可得到了更高的特权,窃取机密的网页内容、会谈的cookie、以及许多其他的物件。
Cross-site scripting的缩写是CSS,但因为CSS在网页设计领域已经被广泛指
层叠样式表(Cascading Style Sheets),所以将Cross改以发音相近的X做为缩写。但早期的文件还是会使用CSS表示Cross-site scripting。
包括Internet Explorer、Mozilla Firefox在内的常用浏览器皆有关闭JavaScript的功能,但关闭未必是最好的方法,许多网站都会使用JavaScript语言。