Index
Note: Page numbers followed by
f
indicate figures and
t
indicate tables.
A
Access-control-request-headers
247
Access-control-request-method
247
American Standard Code for Information Interchange (ASCII)
server-side HTML filter
29
seven-bit encoding characters
17
Shift_JIS
32
,
32
t
whitespace
33–34
Audience
2
B
Basic multilingual plane (BMP)
18
Browser quirks
comments
86–87
ECMA
84–85
multiline strings
85
parser
85–86
regular expression
85
,
86
Bypasses and attacks mitigation
11
code injections
HTML injection and cross-site scripting
218–220
PHP
see
Personal Homepage
SQL
see
Structured Query Language
Web security
218
DOM protection
array detection
228–229
closure, definition
231
code replacement
229–230
defineProperty
232–235
extendWindow
method
231
Firefox function
226–227
getter and setter syntax
231–232
Internet Explorer
232
JavaScript code
226
layers
230
object handling
230
onpropertychange
event
234
proxy functions
231
sandboxing
227–230
SOP
227
styles
property
234
top window reference
227
offensive computing
217
OWASP
217–218
server- and client-side databases
217
Web application bugs
218
C
Cascading style sheets (CSSs)
10
algorithm
131–132
at-rules
@charset
127–128
@font-face
129
@import
128–129
attacks
attribute reader
137–138
clickjacking
133
f
crawler and navigation monitor
139
decompilation
135–137
history
138–139
IE6 and CSS2
134–135
Internet Explorer
147
LAN scanner
139
remote stylesheet inclusion
139–148
UI redressing
132–134
URL
148
conditional comments
50
CSS3
149
CSS1
vs.
CSS2
126
data theft
243–244
declarations
130–131
entities
64
HTML5
239
HTML
vs.
JavaScript
126
JavaScript URIs
66–67
layout engine
64
parsers
220
rulesets and selectors
129–130
syntax
126
Web security model
243–244
Character data (CDATA)
JavaScript execution
20
Opera
20
predefined character sequence
18
user agents
19–20
,
19
t
Client-side filters
bypassing
205–213
IE8
see
Internet Explorer filters
NoScript design
204
vs.
traditional
203
f
WAF
10–11
web vulnerability
204
CORS mechanism
see
Cross-origin resource sharing mechanism
Crossdomain.xml files
altCrossDomainXMLFiles
265
APIs
264
getRequestProperty
method
264–265
global wildcard
264
Java SE 6.10
264
JNLP files
265–266
site-control
element
265
user-agent
string
266
Cross-origin resource sharing (CORS) mechanism
actual request
247
actual response
247
,
248
f
,
249
f
preflight request
246
preflight response
247
Web site
246
Cross Site Request Forgery (CSRF)
240–241
CSSs
see
Cascading style sheets
D
Database management system (DBMS)
applications
178–179
functions
183–184
intermediary characters
186
,
186
t
language elements
182–183
LIMIT
177–178
,
178
t
MySQL
179
SELECT
181
SQL injections
221
XML
190
Data theft
CSS
243–244
error messages
243
JSON
242–243
Data URIs
Acid2 test
57
arbitrary whitespace
59
bandwidth
56–57
base64 checkbox
58
DOM
56
event handlers
60–62
GHex
56
,
56
f
HTML5
autofocus
attribute
68
Chromium and Opera
68–69
DoS
70–71
‹event-source›/‹eventsource›
69
multimedia objects
67–68
onblur
event handler
69
Opera 10.5
70
Opera test-cases-domain
69–70
quirky rendering bugs
70
Web Forms 2.0 repetition model
70
WHATWG
67
W3Schools domain
68
XHTML
68
MIME type
57–58
style attributes
chameleon files
63
CSRF request
62
CSS-based console
66–67
CSS entities
64
CSS layout engine
64
HTML
+
TIME
64–65
Internet Explorer tested versions
65–66
onmouseover
62
Opera
66
sandbox
object
67
social networking platform
63–64
unicode whitespace
65
vbscript
protocol handler
66
XBL file
62–63
style
tags
60
text/HTML
58–59
unicode entity
59–60
UTF-7 and UTF-16 character
58
DBMS
see
Database management system
Denial-of-service regular expression
213–215
DNS request
239
,
267
Document type definitions (DTDs)
14
,
14
t
,
15
t
Document.URL
95
E
E4X
HTML
103
JavaScript comments
104
undefined object
102
XML
103
Extensible Hypertext Markup Language (XHTML)
14
F
Facebook Markup Language (FBML)
120
Filtering
2–3
Form Interpreter (FI)
151
G
Graphics interchange format (GIF)
156
Great JavaScript Charwall
121
H
HyperText Markup Language (HTML)
9
ASCII range
17–18
attack and defense
13
BMP
18
browser market competitors
24
CDATA
JavaScript execution
20
Opera
20
predefined character sequence
18
user agents
19–20
,
19
t
comments
20–21
cross-domain XHR problem
23
doctype declaration
14–15
DTDs
14
,
14
t
,
15
t
erroneous markup handling method
21–22
injection and cross-site scripting
CSS parsers
220
HTML Purifier
219–220
JavaScript code
219
Markdown
219
PHPIDS attack detection
220
safe HTML
219
text format
218–219
Web application filter
218–219
ISO/IEC 8859-15 character set
17–18
markup obfuscation
see
Markup obfuscation
Mozilla Foundation
24
Netscape Navigator
22–23
remote code execution flaw
23
rendering engines
22
semantics and structure
23
SGML
13
strings and data types
13
tags
15–17
URIs
broken protocol handlers
54–55
data URIs
see
Data URIs
JavaScript URIs
53–54
UTF-8 character set
18
Web browser
23
Web standards
24
XML
data islands
77
decimal and hexadecimal entities
72
default behaviors
76
design
71
DoS
72
entities
73–74
Firefox
72–73
HTC file
75–76
HTML
+
TIME
76
-moz-binding
74–75
SVG
77–79
W3C
71
XBL
75
I
Iframe attribute
name
attribute
93
sandbox
attribute
251
seamless
attribute
251
srcdoc
attribute
252
International Obfuscated C Code Contest (IOCCC)
105
Internet Explorer filters
attacks
209–213
compatibility, performance, and security
209
XSS filter
see
XSS filter
bypasses
208–209
JavaScript
208
23 versions
205–207
IOCCC
see
International Obfuscated C Code Contest
J
JAR file
262–263
,
264
JavaScript (JScript)
compact
value
100
conditional comments
101–102
encode
value
100–101
encoding
combining
90–91
hexadecimal escapes
89–90
octal escapes
90
unicode escapes
87–89
execScript
function
102
vs.
HTML
126
nonalphanumeric
arbitrary JavaScript
121
arithmetic operators
107
,
107
t
ASCII
116
assignment operators
107
,
107
t
atob
118
binary data
118
Boolean
110
code execution
121–122
false
string
111
FBML
120
filter blocking
120
Great JavaScript Charwall
121
IOCCC
105
native objects
110
not a number
(NaN)
109–110
obfuscation
117
octal escapes
116
plain filter circumvention
119
sandboxing algorithm
120
sort
function
114
sort
method
112
static method
113–114
string indexes
107
toString
method
118
true
string
111
window
109
,
112
zero conversion
110
zero creation
107–108
,
108
t
syntax
alert
81–82
arrays
82
browser quirks
84–87
object property
83
strings
83
window
object
81–82
variables
alphanumeric characters
91
location.hash
variable
94–95
name
variable
92–94
unicode
95–96
URL
95
user-defined
91–92
VBScript
9
JavaScript Object Notation (JSON)
242–243
JSReg
228
M
Markup obfuscation
attributes and delimiters
attribute name and value characters
36
,
36
t
attribute value delimiters
37
,
37
t
JavaScript language element
38
size
attribute,
‹font›
tag
36–37
URL-encoding
38
closing tags
40–42
conditional comments
‹comment›
tag
52
CSS browser
50
JScript layer
52
MSDN
50–51
outside and inside attributes
52–53
Trident layout engine
51
forensics
25
fun
25–26
JavaScript
code alert(1)
execution
24
JavaScript execution
about:blank
, page
43
applet
tags
47–48
body
tags
44
data
attribute
46
DOM
46
“encrypted” scripts
42
frameset
tags
44–45
href
attribute
45–46
http-equiv
attribute
49
id/name
attribute
48
language
attribute
42
object
tag
46
onload
attribute
42–43
Opera
46–47
quirks modes
47
‹script›
tags
42
trigger script execution
43–44
URIs
49
W3C
42–43
XML iframe
46
multiple same-named attributes
Gecko-based browsers
39
lowsrc
attribute
39
onerror
attribute
38
onmouseover
38–39
src
attribute
39
style
attribute
38–39
,
40
type
attribute
38
xmlns
, XML namespace attribute
40
PHP
28
separators
ASCII whitespace
33–34
DoS attacks
35
PCRE
34
tag name and attribute characters
34
,
34
t
unicode character class
34–35
UTF-8 character
34
whitespace character
34–35
tag names obfuscation
character set and PHP-based application
30
Chrome charset
32
chr( )
, PHP code
30
decimal ASCII
32
,
32
t
Firefox parser bug
33
injection, Web site
33
Japanese character set
31
non-ASCII characters
29
nullbyte
29
,
30
,
31
,
33
server-side HTML filter
29
strip characters
30
Trident layout engine
29
XSS attacks/SQL injection
32
technical requirements
26
techniques
24–25
Ubuntu 9.10 platform
26
UTF-8 character
28
valid markup structure
27
,
27
t
Web application input filters
25
Web sites
26
Microsoft BlueHat security conference
259
Microsoft Data Access Components (MDAC)
223
N
Nonalphanumeric JavaScript
10
arithmetic operators
107
,
107
t
assignment operators
107
,
107
t
Boolean
110
character creation
ASCII
116
atob
118
binary data
118
obfuscation
117
octal escapes
116
toString
method
118
false
string
111
FBML
120
IOCCC
105
minimalistic sets
arbitrary JavaScript
121
code execution
121–122
filter blocking
120
Great JavaScript Charwall
121
native objects
110
not a number
(NaN)
109–110
obfuscation process
108–109
plain filter circumvention
119
sandboxing algorithm
120
sort
function
114
sort
method
112
static method
113–114
string indexes
107
toString
method
113
true
string
111
window
109
,
112
zero conversion
110
zero creation
107–108
,
108
t
O
Open Web Application Security Project (OWASP) Validation Regex Repository
217–218
Oracle
267
Oracle Express Edition
180–181
P
Perl Compatible Regular Expressions (PCRE)
34
Personal Homepage (PHP)
10
applications
226
attacker-controlled PHP code
224–225
auto_prepend_file
225–226
BBCode
226
code execution vulnerability
223–224
functions
225
Google Code Search Engine
224
history
form interpreter (FI)
151
security and bugs
153
versions
152
,
152
t
Zend Engine
152
include
and
require
statements
224
numerical data types
representation
157–158
syntax
158
type juggling technique
157
values
157
obfuscation
code samples
153–154
file extension
155
GIF
156
runtime
154
snippet
156–157
Web server
154
strings
anonymous and variable functions
173–174
arrays
160
ASCII
162
backtick notation
170–171
code execution
167–169
curly bracket notation
166–167
encryption and decryption functions
162
escape character
159–160
evaluation
171
heredoc and nowdoc syntax
161
lambdas
172–173
mixing and comments
165
phpinfo( )
function
160–161
sneak past filter rules
162
superglobals
see
Superglobals
variable variables
165–166
Web scanning
224
phpMyAdmin (PMA)
179
R
Regular expressions
character class
6
,
7
t
components
4
,
4
t
definition
4
greedy characters
6
nongreedy characters
6
restricted repetition
8
,
8
t
test string
4
,
5
t
Rulesets and selectors
129–130
S
Same Origin Policy (SOP)
CORS mechanism
see
Cross-origin resource sharing mechanism
crossdomain.xml file
246
cross-site information exchange
245
DOM-based solutions
245
location.hash
feature
227
UMP
248–249
Web security model
241
XMLHttpRequest
245
Scalable vector graphics (SVG)
77–79
Server-side Web development
9
SQL
see
Structured Query Language
Standard Generalized Markup Language (SGML)
13
Strings
PHP
anonymous and variable functions
173–174
arrays
160
ASCII
162
backtick notation
170–171
code execution
167–169
curly bracket notation
166–167
encryption and decryption functions
162
escape character
159–160
evaluation
171
heredoc and nowdoc syntax
161
lambdas
172–173
mixing and comments
165
phpinfo( )
function
160–161
sneak past filter rules
162
superglobals
162–165
variable variables
165–166
SQL
escaping
189–190
hexadecimal notation
188–189
regular notation and delimiting
187–188
unicode
189
XML
190–191
Structured English Query Language (SEQUEL)
177
Structured Query Language (SQL)
10
browser databases
executeSql
194
openDatabase
object
193
SQLite
194
comments
MySQL-specific code
192–193
regular in-query
191–192
concatenation-based bugs
222
DBMS
see
Database management system
first version
177
language elements
functions
183–184
intermediary characters
185–187
operators
184–185
LIMIT
177–178
,
178
t
Microsoft SQL procedure
223
MySQL-specific code
222
obfuscation
195–196
Oracle Express Edition
180–181
PMA
179
proxy solution
223
query form
180
f
query structure
222–223
SELECT
query
181
stacking queries
181–182
strings
escaping
189–190
hexadecimal notation
188–189
regular notation and delimitation
187–188
unicode
189
XML
190–191
WAFs
221
wafw00f
tool
221
Web application security
223
Web sites
221–222
Superglobals
encryption
165
obfuscation
164
PHP
162
,
163
t
_SERVER
array
164
SVG
see
Scalable vector graphics
T
Text/html
-sandboxed content type
253–255
cross-domain file
253
iframe@sandbox
model
255
legacy browsers
254
MIME type
253
Web servers
253–254
Type juggling technique
157
U
Uniform Messaging Policy (UMP)
248–249
V
VBScript
comments
97
encoding
98–99
end of statement
98
events
97
execScript
function
99
functions
97–98
W
W3C
see
World Wide Web Consortium
Web application firewalls (WAFs)
221
applications
199
bypassing WAFs
attack vectors
200
filters
200
whitelisting mode
201–202
cross-site scripting
202
denial-of-service attacks
213–215
public Web sites
199–200
Web attacks
203
Web applications
1
Content-Security-Policy
header
257
cross-site scripting filters
238
flash plug-in
allowScriptAccess
argument
258
always
argument
258
arbitrary HTTP headers
259–260
,
260
f
Flash movie
258
LoadMovie
method
258
never
argument
258
sameDomain
argument
258
Security.allowDomain
API
258–259
HTML5
238
cross-site scripting filters
245
CSS3
239
features
244–245
JavaScript URLs origin
249–251
sandbox
attribute
251
seamless
attribute
251
security project
245
SOP
see
Same origin policy
srcdoc
attribute
252
text/html
-sandboxed content type
253–255
XML bindings
255–256
Java plug-in
AppletNode
261
crossdomain.xml files
see
Crossdomain.xml files
DNS rebinding attacks
266–267
Java applets
260–261
Java-based cross-site scripting
262–264
Java's APIs
261
Java security model
260
shared host attack
261–262
JavaScript code
238
‹meta›
tag
238–239
‹param›
tag
239
security ramifications
237
security-related extensions
256
Strict-Transport-Security
header
256–257
toStaticHTML
method
238
URL parsing
239
W3C
237–238
Web security model
CSRF
240–241
CSS
243–244
error messages
243
HTTP request
240
JSON
242–243
origin
241–242
Web server
240–241
Web sites
239
web technology standards
257–258
WHATWG
237–238
whitelisting property
238–239
X-Frame-Options
header
256
X-XSS-Protection
header
256
Web architecture
9
Web Hypertext Application Technology Working Group (WHATWG)
67
,
237–238
Web security and technology
11
World Wide Web Consortium (W3C)
238
JavaScript execution
42–43
WHATWG
237–238
XML
71
X
XHTML
see
Extensible Hypertext Markup Language
XSS filter
cross-site scripting attacks
211
design
210
JavaScript
210–211
malicious attacks
210
trigger string
212
Z
Zend Engine
152