داﻧﺸ ﺎه ﺷﻬﯿﺪ ﺑﻬﺸﺘ

داﻧﺸ ﺪه ﻣﻬﻨﺪﺳ ﺑﺮق و ﮐﺎﻣﭙﯿﻮﺗﺮ

ﭘﺮوژهی ﮐﺎرﺷﻨﺎﺳ

ﻣﻬﻨﺪﺳ ﮐﺎﻣﭙﯿﻮﺗﺮ ﮔﺮاﯾﺶ ﻧﺮم اﻓﺰار

ﻣﻮﺿﻮع ﭘﺮوژه:

ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻌﻪ وب اﻣﻦ

اﺳﺘﺎد راﻫﻨﻤﺎ:

ﺟﻨﺎب آﻗﺎی دﮐﺘﺮ ذاﮐﺮاﻟﺤﺴﯿﻨ

ﮔﺮدآوردﻧﺪه: ﻋﺒﺎس ﻧﺎدری اﻓﻮﺷﺘﻪ [email protected] ﺑﻬﺎر ١٣٩١

ﭼ ﯿﺪه:

وب ﺑﻪ ﻋﻨﻮان ﻣﻬﻤﺘﺮﯾﻦ ﺑﺴﺘﺮ اراﺋﻪ ﻧﺮماﻓﺰار و ﺳﺮوﯾﺲ، ﺗﺎ ﺟﺎﯾﯽ ﺟﻠﻮ رﻓﺘﻪ ﮐﻪ اﻣﺮوزه ﻣﺤﯿﻂﻫﺎی

ﻪﻣﺎﻧﺮﺑﺳﺎزی و ﺣﺘ ﺳﯿﺴﺘﻢﻫﺎی ﻋﺎﻣﻞ ﺗﺤﺖ وب ﻗﺮار ﮔﺮﻓﺘﻪاﻧﺪ.وب ﯾ ﺑﺴﺘﺮ و ﭘﺮوﺗﮑﻞ ﺑﺴﯿﺎر ﺳﺎده اﺳﺖ ﮐﻪ

ﺑﺎ اﻫﺪاف دﯾ ﺮی ﻃﺮاﺣ ﺷﺪه ﺑﻮده و ﺑﻪ ﺻﻮرت اﻧﻔﺠﺎری ﮔﺴﺘﺮش ﯾﺎﻓﺘﻪ اﺳﺖ، ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ ﺗﻮﻟﯿﺪ ﻧﺮم-

اﻓﺰارﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب ﻧﯿﺎزﻣﻨﺪ ﭼﻬﺎرﭼﻮبﻫﺎی ﮔﺴﺘﺮده و ﻗﺪرﺗﻤﻨﺪی ﻫﺴﺘﻨﺪ. اﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻌﻤﻮﻻ در

اﻧﺠﻤﻦﻫﺎی ﻣﺘﻦﺑﺎز ﺷ ﻞ ﮔﺮﻓﺘﻪاﻧﺪ و ﻧﻘﺎط ﺿﻌﻒ اﻣﻨﯿﺘ دارﻧﺪ. در اﯾﻦ ﺳﻨﺪ ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻌﻪ وب اﻣﻦ، ﺑﺎ

اﺗﮑﺎ ﺑﻪ دو ﭼﻬﺎرﭼﻮب ﺗﻮﻟﯿﺪ ﺷﺪه ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻣﻨﯿﺖ وب ﻣﻄﺮح ﺷﺪهاﻧﺪ. اﺑﺘﺪا ﻣﻔﺎﻫﯿﻢ و ﺳﺎﺧﺘﺎر وب ﺑﻪ

ﺗﻔﺼﯿﻞ ﺑﺤﺚ ﺷﺪه ﺗﺎ ﺧﻮاﻧﻨﺪه ﺑﺘﻮاﻧﺪ ﻧﯿﺎز و ﭘﺎﺳ را ﺑﻪ ﺧﻮﺑﯽ درک ﮐﻨﺪ. ﺳﭙﺲ ﻣﺨﺎﻃﺮات ﻣﻮﺟﻮد در اﻣﻨﯿﺖ

وب ﻣﻄﺮح و ﺑﺮرﺳ ﺷﺪهاﻧﺪ و در ﺑﺨﺶ اﻧﺘﻬﺎﯾﯽ راﻫ ﺎرﻫﺎی ﻣﻘﺎﺑﻠﻪ ﺑﺎ اﯾﻦ ﻣﺨﺎﻃﺮات اراﺋﻪ ﺷﺪهاﻧﺪ.

ﻣﻔﺎﻫﯿﻤ ﻣﺎﻧﻨﺪ ﻣﻌﻤﺎری وب، ﭘﺮوﺗﮑﻞﻫﺎی ﻣﺠﻮد در وب، ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﻣﻮرد اﺳﺘﻔﺎده در وب،

ﮐﺎوﺷ ﺮﻫﺎی وب، اﻣﻨﯿﺖ ﻋﻤﻮﻣ وب، اﻣﻨﯿﺖ ﻧﺮماﻓﺰار، MVC، ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب و ﻧﯿﺎزﻣﻨﺪیﻫﺎی

آﻧﺎن، ﻣﻌﻀﻼت ﻣﺨﺘﻠﻒ وب، ﺗﻌﺎرﯾﻒ اﻣﻨﯿﺖ اﻃﻼﻋﺎت، راﻫ ﺎرﻫﺎی ﺗﻔﺼﯿﻠ و ﻓﻨ ﻣﻘﺎﺑﻠﻪ ﺑﺎ ﻣﻌﻀﻼت اﻣﻨﯿﺘ

و دﯾﺪﮔﺎه درﺳﺖ ﺑﻪ اﻣﻨﯿﺖ وب، ﺑﺮﺧ از ﻣﻄﺎﻟﺐ ﭘﻮﺷﺶ داده ﺷﺪه در اﯾﻦ ﺳﻨﺪ ﻣ ﺪﻨﺷﺎﺑ.

ﮐﻠﻤﺎت ﮐﻠﯿﺪی: وب، اﻣﻨﯿﺖ، اﻣﻨﯿﺖ ﻧﺮماﻓﺰار، ﭼﻬﺎرﭼﻮب، ﻧﻔﻮذﮔﺮی، ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار، ﻣﻬﻨﺪﺳ ﻧﺮماﻓﺰار

ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ

1 ﻪﻣﺪﻘﻣ ...... ١

2 ﻓﺮﻌﻣ ...... ٣

2.1 اﻣﻨﯿﺖ ﻧﺮم اﻓﺰار ...... ٣

2.2 وب و HTTP: ...... ٥

2.3 ﻣﻌﻤﺎری وب: ...... ٩

2.4 ﺗﮑﻨﻮﻟﻮژﯾﺎﻬی ﻣﻮرد اﺳﺘﻔﺎده در وب: ...... ١٠

HTTP 2.4.1 ...... ١١

HTML 2.4.2 ...... ١٣

CSS 2.4.3 ...... ١٥

Javascript 2.4.4 ...... ١٦

AJAX 2.4.5 ...... ١٨

Web Server 2.4.6 ...... ٢٠

Apache 2.4.6.1 ...... ٢٢

Internet Information Services (IIS) 2.4.6.2 ...... ٢٣

٢٬٤٬٦٬٣ nginx ...... ٢٤

Server Side Scripts 2.4.7 ...... ٢٥

PHP 2.4.7.1 ...... ٢٧

ASP 2.4.7.2 ...... ٢٩

Java (JSP) 2.4.7.3 ...... ٣٠

ColdFusion 2.4.7.4 ...... ٣٠

Perl 2.4.7.5 ...... ٣١

Ruby 2.4.7.6 ...... ٣٢

Python 2.4.7.7 ...... ٣٢

2.4.7.8 دﯾ ﺮ زﺑﺎﻧﻬﺎ ...... ٣٤

Database Server 2.4.8 ...... ٣٤

Oracle 2.4.8.1 ...... ٣٦

SQL Server 2.4.8.2 ...... ٣٦

PostgreSQL 2.4.8.3 ...... ٣٧

MySQL 2.4.8.4 ...... ٣٧

SQLite 2.4.8.5 ...... ٣٨

HTML 5 2.4.9 ...... ٤٠

2.4.10 ﮐﺎوﺷ ﺮ وب ...... ٤٢

2.4.10.1 ﺎﻣﯾ ﺮوﺳﺎﻓﺖ اﯾﺖﻧﺮﺘﻨ اﮐﺴﭙﻠﻮرر ...... ٤٤

Mozilla Firefox 2.4.10.2 ...... ٤٦

Opera 2.4.10.3 ...... ٤٧

Google Chrome 2.4.10.4 ...... ٤٨

Apple Safari 2.4.10.5 ...... ٤٨

Mobile Browsers 2.4.10.6 ...... ٥٠

2.4.10.7 ﻏﯿﺮه ...... ٥١

2.5 اﻟ ﻮﻫﺎی ﻪﻌﺳﻮﺗ ﻧﺮﻣﺎﻓﺰار وب ...... ٥٣

MVC 2.5.1...... ٥٣

Component Based MVC 2.5.2 ...... ٥٥

2.6 ﭼﻬﺎرﭼﻮﺑﻬﺎی ﻪﻌﺳﻮﺗ وب ...... ٥٦

٢٬۶٬١ اﻧﻮاع ﭼﻬﺎرﭼﻮب ﻪﺑ ﮑﻔﺗﯿ ﻧﻮع زﺑﺎن ...... ٥٧

2.6.1.1 ﭼﻬﺎرﭼﻮﺑﻬﺎی ﻣﻮﺟﻮد ﺮﺑ روی زﺑﺎﻧﻬﺎی ﻏﯿﺮ وﺑﯽ ...... ٥٨

2.6.1.2 ﭼﻬﺎرﭼﻮﺑﻬﺎی ﻣﻮﺟﻮد ﺮﺑ روی زﺑﺎﻧﻬﺎی وﺑﯽ ...... ٥٨

2.6.2 وﯾﮔﮋﯿﺎﻬی ﻣﺸﺘﺮک ﭼﻬﺎرﭼﻮﺑﻬﺎی ﻪﻌﺳﻮﺗ وب ...... ٥٨

2.6.2.1 دﺳﺘﺮﺳ ﻪﺑ داده ...... ٥٩

2.6.2.1.1دﺳﺘﺮﺳ ﻪﺑ داده ﻘﺘﺴﻣﯿﻢ (Native) ...... ٥٩

أ)اﺗﺼﺎل ﻪﺑ ﺎﭘﯾ ﺎه ...... ٦٠

ب)اﻧﺘﺨﺎب ﻊﺒﻨﻣ داده ﻪﻃﻮﺑﺮﻣ ...... ٦١

ت)ارﺳﺎل دﺳﺘﻮرات ...... ٦١

ث)ﻗﻄ ارﺗﺒﺎط ...... ٦٥

ج)ﺗﮑﺮار ﻞﮐ ﻓﺮآﯾﺪﻨ ...... ٦٥

2.6.2.1.2دﺳﺘﺮﺳ ﻪﺑ داده اﻧﺘﺰاﻋ (Abstraction Layer) ...... ٦٧

2.6.2.1.3ﺖﺷﺎﮕﻧ رواﺑﻂ اﺷﯿﺎء (ORM) ...... ٦٩

٢٬٦٬٢٬١٬٤ﮑﻔﺗﯿ داده از دﺳﺘﻮر در ﺎﭘﯾ ﺎه داده ...... ٧٠

2.6.2.2 ﺪﻣﯾﺮﯾﺖ ﮐﺎرﺑﺮان ...... ٧١

2.6.2.3 ﺪﻣﯾﺮﯾﺖ ﺖﺴﺸﻧ ...... ٧١

2.6.2.4 ﮐﻨﺘﺮل دﺳﺘﺮﺳ ...... ٧٣

2.6.2.4.1ﻟﯿﺖﺴ ﮐﻨﺘﺮل دﺳﺘﺮﺳ (ACL) ...... ٧٤

2.6.2.4.2ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﺶﻘﻧ ﻣﺤﻮر ...... ٧٤

SEO 2.6.2.5 ...... ٧٦

٢٬٦٬٢٬٦ وب ﺳﺮوﯾﺲ ...... ٧٨

٢٬٦٬٢٬٧ ...... ٧٩

٢٬٦٬٢٬٨ ﺪﻣﯾﺮﯾﺖ ﺶﮐ ...... ٨٠

٢٬٦٬٢٬٩ ﺪﻣﯾﺮﯾﺖ ﺎﻄﺧ ...... ٨١

٢٬٦٬٢٬١٠ ﺪﻣﯾﺮﯾﺖ زﻣﺎن...... ٨٢

٢٬٦٬٢٬١١ اﻟ ﻮی ﻪﻌﺳﻮﺗ ...... ٨٣

٢٬٦٬٢٬١٢ ﺐﻟﺎﻗ ﺪﻨﺑی ...... ٨٣

٢٬٦٬٢٬١٣ ﺪﻣﯾﺮﯾﺖ زﺑﺎن ...... ٨٤

٢٬٦٬٢٬١٤ اﻓﺰوﻧﺎﻬﻬ...... ٨٥

٢٬٦٬٢٬١٥ ﺪﻣﯾﺮﯾﺖ داﻧﻠﻮد ...... ٨٦

٢٬٦٬٢٬١٦ ﻪﻌﺳﻮﺗ ﻨﺘﺒﻣ ﺮﺑ ﺖﺴﺗ ...... ٨٧

٢٬۶٬٣ ﭼﻬﺎرﭼﻮﺑﻬﺎی ﺗﺠﺎری ﭘﺮﮐﺎرﺑﺮد...... ٨٩

ASP.NET 2.6.3.1 ...... ٨٩

Microsoft .NET Framework 2.6.3.1.1 ...... ٩٠

DotNetNuke 2.6.3.1.2 ...... ٩١

C++ 2.6.3.2 ...... ٩١

CppCMS 2.6.3.2.1 ...... ٩١

Wt 2.6.3.2.2 ...... ٩٢

٢٬۶٬٣٬٣ ﺟﺎوا ...... ٩٢

Spring 2.6.3.3.1 ...... ٩٢

Apache Struts 2.6.3.3.2 ...... ٩٣

Apache Wicket 2.6.3.3.3 ...... ٩٣

Google Web Toolkit 2.6.3.3.4 ...... ٩٣

Perl 2.6.3.4 ...... ٩٤

Catalyst 2.6.3.4.1 ...... ٩٤

٢٬۶٬٣٬۴٬٢ ...... ٩٤

٢٬۶٬٣٬۵ PHP ...... ٩٥

٢٬۶٬٣٬۵٬١ CakePHP ...... ٩٥

٢٬۶٬٣٬۵٬٢ CodeIgniter ...... ٩٥

Symfony 2.6.3.5.3 ...... ٩٥

٢٬۶٬٣٬۵٬۴ ...... ٩٦

Zend Framework 2.6.3.5.5 ...... ٩٦ jFramework 2.6.3.5.6 ...... ٩٧

Python 2.6.3.6 ...... ٩٧

٢٬۶٬٣٬۶٬١ ...... ٩٧

Pyjamas 2.6.3.6.2 ...... ٩٨

٢٬۶٬٣٬٧ Ruby ...... ٩٨

Ruby on Rails 2.6.3.7.1 ...... ٩٨

٢٬۶٬٣٬٨ دﯾ ﺮ زﺑﺎﻧﻬﺎ ...... ٩٩

٢٬٧ اﻣﻨﯿﺖ ﻣﻮﻤﻋ وب ...... ٩٩

٢٬٧٬١ اﻣﻨﯿﺖ ﺷﺒ ﻪ و ﺖﺨﺳ اﻓﺰار ...... ١٠٠

٢٬٧٬٢ اﻣﻨﯿﺖ ﺳﯿﻢﺘﺴ ﻞﻣﺎﻋ ...... ١٠١

٢٬٧٬٣ اﻣﻨﯿﺖ ﺳﺮوﯾﺲ ...... ١٠٢

٢٬٧٬۴ اﻣﻨﯿﺖ ﻧﺮﻣﺎﻓﺰار ...... ١٠٤

٢٬٧٬۴٬١ اﻣﻨﯿﺖ ﺪﮐ ﺷﺎﻣﯿﻦ ...... ١٠٤

٢٬٧٬۴٬٢ اﻣﻨﯿﺖ ﻘﻄﻨﻣ /ﺳﻄ ﻻﺎﺑ ...... ١٠٥

٣ ﻣﺨﺎﻃﺮات اﻣﻨﯿﺖ وب

١٠٧

٣٬١ ﺣﻮزﻫﻬﺎی اﻣﻨﯿﺖ ﻧﺮﻣﺎﻓﺰار ...... ١٠٧

Confidentiality 3.1.1 ...... ١٠٧

٣٬١٬٢ Integrity ...... ١٠٧

Availability 3.1.3 ...... ١٠٨

٣٬٢ ﻣﻌﻀﻼت ﻣﺸﻬﻮر اﻣﻨﯿﺖ وب ...... ١٠٩

SQL Injection 3.2.1 ...... ١٠٩

٣٬٢٬١٬١ ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ ﮐﻮر ...... ١١٠

٣٬٢٬١٬٢ ﺗﺰرﯾﻖ ﻋﺎدی ...... ١١١

٣٬٢٬١٬٢٬١ Union Bypassing ...... ١١٢

٣٬٢٬١٬٢٬٢ رﺧﻨﻪ ﻪﺑ ﺳﯿﻢﺘﺴ ...... ١١٤

٣٬٢٬٢ ﺗﺰرﯾﻘﺎت دﯾ ﺮ ...... ١١٥

٣٬٢٬٢٬١ ﺗﺰرﯾﻖ ﻪﺑ ﮐﻨﺴﻮل ...... ١١٦

٣٬٢٬٢٬٢ ﺗﺰرﯾﻖ ﺪﮐ ...... ١١٦

٣٬٢٬٢٬٣ ﺗﺰرﯾﻘﺎت دﯾ ﺮ ...... ١١٧

٣٬٢٬٣ اﺳ ﺮﯾﻮﻨﭙﯾﺴ ﺑﯿﻦ ﺎﺳﯾﺘ ...... ١١٧

٣٬٢٬٣٬١ XSS ذﺧﯿﺮه ﺷﺪه ...... ١١٩

٣٬٢٬٣٬٢ XSS ﺲﮑﻌﻨﻣ ﺷﺪه ...... ١١٩

٣٬٢٬۴ اﻧﻀﻤﺎم ﺎﻓﯾﻞ ﻣﺨﺮب ...... ١٢١

٣٬٢٬۴٬١ اﻧﻀﻤﺎم ﺎﻓﯾﻞ از دور...... ١٢٢

٣٬٢٬۴٬٢ اﻧﻀﻤﺎم ﺎﻓﯾﻞ ﻠﺤﻣ ...... ١٢٣

٣٬٢٬۵ ارﺟﺎع ﻘﺘﺴﻣﯿﻢ ﻦﺌﻤﻄﻣﺎﻧ ﻪﺑ ﻣﺤﺘﻮا ...... ١٢٣

٣٬٢٬۶ ﻞﻌﺟ درﺧﻮاﺳﺖ ﺑﯿﻦ ﺎﺳﯾﺘ ...... ١٢٥

٣٬٢٬٧ ﻒﻌﺿ اﺣﺮاز ﻮﻫﯾﺖ و ﺪﻣﯾﺮﯾﺖ ﺖﺴﺸﻧ ...... ١٢٧

٣٬٢٬٨ ﻈﻨﺗﯿﻤﺎت ﺤﺻﺎﻧﯿﺢ و ﺪﻣﯾﺮﯾﺖ ﺎﻄﺧ ...... ١٢٨

٣٬٢٬٩ ﻔﺨﻣﯿ ﺎری ...... ١٢٩

٣٬٢٬١٠ رﻣﺰﻧﮕﺎری ﻦﺌﻤﻄﻣﺎﻧ ...... ١٣٠

٣٬٢٬١٠٬١ رﻣﺰﻧﮕﺎری ارﺗﺒﺎﻃﺎت ...... ١٣٠

٣٬٢٬١٠٬٢ رﻣﺰﻧﮕﺎری دادﻫﻬﺎ ...... ١٣١

٣٬٢٬١٠٬٢٬١ رﻣﺰﻧﮕﺎری ﯾ ﻄﺮﻓﻪ (ﭼ ﯿﺪﻫ ﯿﺮی) ...... ١٣٢

٣٬٢٬١٠٬٢٬٢ رﻣﺰﻧﮕﺎری دوﻃﺮﻓﻪ...... ١٣٢

٣٬٢٬١١ اﻣﻨﯿﺖ ﻃﺮف ﺮﺘﺸﻣی ...... ١٣٣

٣٬٢٬١٢ ﻏﯿﺮه ...... ١٣٤

۴ ﭼﻬﺎرﭼﻮب ﻪﻌﺳﻮﺗ وب اﻣﻦ

١٣۵

٤٬١ ﭼﻬﺎرﭼﻮب ﭘﯿﺸﻨﻬﺎدی ...... ١٣٥

۴٬١٬١ وﯾﮔﮋﯿﺎﻬی ﺑﺎرز ﭼﻬﺎرﭼﻮب ﭘﯿﺸﻨﻬﺎدی ...... ١٣٦

۴٬١٬١٬١ ﺪﻣﺎﻌﺗ ...... ١٣٦

۴٬١٬١٬٢ زﺑﺎن و ﺮﺘﺴﺑ ...... ١٣٦

۴٬١٬١٬٣ ﺎﭘﯾ ﺎﻫﺪاده...... ١٣٦

۴٬١٬١٬۴ ﺪﻣﯾﺮﯾﺖ ﮐﺎرﺑﺮان و ﺖﺴﺸﻧ...... ١٣٧

۴٬١٬١٬۵ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ...... ١٣٧

SEO ۴٬١٬١٬۶ ...... ١٣٨

۴٬١٬١٬٧ وب ﺳﺮوﯾﺲ ...... ١٣٨

۴٬١٬١٬٨ آژاﮐﺲ ...... ١٣٨

۴٬١٬١٬٩ ﺶﮐ و ﺘﺸﭘﯿﺒﺎن ...... ١٣٨

۴٬١٬١٬١٠ ﺪﻣﯾﺮﯾﺖ ﺎﻄﺧ ...... ١٣٩

۴٬١٬١٬١١ ﺪﻣﯾﺮﯾﺖ زﻣﺎن...... ١٣٩

۴٬١٬١٬١٢ اﻟ ﻮی ﻪﻌﺳﻮﺗ ...... ١٣٩

۴٬١٬١٬١٣ ﺐﻟﺎﻗ ﺪﻨﺑی ...... ١٤٠

۴٬١٬١٬١۴ ﺪﻣﯾﺮﯾﺖ زﺑﺎن ...... ١٤٠

۴٬١٬١٬١۵ اﻓﺰوﻧﻬﻬﺎ...... ١٤٠

۴٬١٬١٬١۶ ﺪﻣﯾﺮﯾﺖ داﻧﻠﻮد ...... ١٤٠

۴٬١٬١٬١٧ ﺖﺴﺗ ...... ١٤١

٤٬١٬١٬١٨ ﺗﻮﮐﺎر ...... ١٤١

۴٬١٬٢ ﻟﯿﺲﻧﺎﺴ و دﺳﺘﺮﺳ ﭼﻬﺎرﭼﻮب ...... ١٤١

٤٬٢ راﻫ ﺎرﻫﺎی اﻣﻨﯿﺘ ﭼﻬﺎرﭼﻮب ...... ١٤٣

SQL Injection 4.2.1 ...... ١٤٣

Escaping ۴٬٢٬١٬١ ...... ١٤٣

۴٬٢٬١٬٢ دﺳﺘﻮرات ﻬﻣﯿﺎ ﺷﺪه (Prepared Statement) ...... ١٤٤

۴٬٢٬١٬٣ ﺑﺮرﺳ ورودی ...... ١٤٧

۴٬٢٬١٬٣٬١ ﻟﯿﺖﺴ ﺳﯿﺎه ...... ١٤٧

۴٬٢٬١٬٣٬٢ ﻟﯿﺖﺴ ﻔﺳﯿﺪ ...... ١٤٧

۴٬٢٬٢ ﺗﺰرﯾﻘﺎت دﯾ ﺮ ...... ١٤٨

۴٬٢٬٢٬١ ﺗﺰرﯾﻖ ﻪﺑ ﮐﻨﺴﻮل ...... ١٤٨

۴٬٢٬٢٬٢ ﺗﺰرﯾﻖ ﺪﮐ ...... ١٤٨

۴٬٢٬٢٬٣ ﺗﺰرﯾﻘﺎت دﯾ ﺮ ...... ١٤٨

۴٬٢٬٣ اﺳ ﺮﯾﻮﻨﭙﯾﺴ ﺑﯿﻦ ﺎﺳﯾﺘ ...... ١٤٩

۴٬٢٬٣٬١ ﻧﯿﺎزی ﻪﺑ ﺐﺴﭼﺮﺑ ﻧﯿﺖﺴ ...... ١٤٩

۴٬٢٬٣٬٢ ﺐﺴﭼﺮﺑ ﻻزم اﺳﺖ ...... ١٥٠

۴٬٢٬۴ اﻧﻀﻤﺎم ﺎﻓﯾﻞ ﻣﺨﺮب ...... ١٥١

۴٬٢٬۵ ارﺟﺎع ﻘﺘﺴﻣﯿﻢ ﻦﺌﻤﻄﻣﺎﻧ ﻪﺑ ﻣﺤﺘﻮا ...... ١٥٢

۴٬٢٬۶ ﻞﻌﺟ درﺧﻮاﺳﺖ ﺑﯿﻦ ﺎﺳﯾﺘ ...... ١٥٢

۴٬٢٬۶٬١ ﻪﻔﻟﻮﻣ ﯾ ﺘﺎ ...... ١٥٢

CAPTCHA 4.2.6.2 ...... ١٥٣

۴٬٢٬٧ ﻒﻌﺿ اﺣﺮاز ﻮﻫﯾﺖ و ﺪﻣﯾﺮﯾﺖ ﺖﺴﺸﻧ ...... ١٥٤

۴٬٢٬٧٬١ ﻣﺮا ﻪﺑ ﺮﻃﺎﺧ ﺑﺴﭙﺎر ...... ١٥٤

۴٬٢٬٧٬٢ ﻘﺗﯿﺪ ﺖﺴﺸﻧ ...... ١٥٤

IP Binding 4.2.7.2.1 ...... ١٥٥

۴٬٢٬٧٬٢٬٢ ﺎﻬﻬﻔﻟﻮﻣی ﮐﺎوﺷ ﺮ ...... ١٥٥

۴٬٢٬٧٬٣ زﻣﺎن ﺖﺴﺸﻧ ...... ١٥٥

۴٬٢٬٨ ﻈﻨﺗﯿﻤﺎت ﺤﺻﺎﻧﯿﺢ و ﺪﻣﯾﺮﯾﺖ ﺎﻄﺧ ...... ١٥٦

۴٬٢٬٨٬١ ﺤﻣﯿﻂ اﺟﺮاﯽﯾ ...... ١٥٦

۴٬٢٬٨٬٢ دﺳﺘﺮﺳ اﺟﺮا ...... ١٥٧

۴٬٢٬٩ ﻔﺨﻣﯿ ﺎری ...... ١٥٨

۴٬٢٬١٠ رﻣﺰﻧﮕﺎری ﻦﺌﻤﻄﻣﺎﻧ ...... ١٥٨

۴٬٢٬١٠٬١ رﻣﺰﻧﮕﺎری ارﺗﺒﺎﻃﺎت ...... ١٥٨

۴٬٢٬١٠٬١٬١ زﯾﺖﺧﺎﺳﺮ ﻠﮐﯿﺪ ﻣﻮﻤﻋ ...... ١٦٠

۴٬٢٬١٠٬٢ رﻣﺰﻧﮕﺎری دادﻫﻬﺎ ...... ١٦١

۴٬٢٬١٠٬٢٬١ رﻣﺰﻧﮕﺎری ﯾ ﻄﺮﻓﻪ (ﭼ ﯿﺪﻫ ﯿﺮی) ...... ١٦١

۴٬٢٬١٠٬٢٬٢ رﻣﺰﻧﮕﺎری دوﻃﺮﻓﻪ...... ١٦٣

۴٬٢٬١١ اﻣﻨﯿﺖ ﻃﺮف ﺮﺘﺸﻣی ...... ١٦٤

۴٬٢٬١٢ ﻏﯿﺮه ...... ١٦٤

٥ ﺘﻧﯿﻪﺠ ﮔﯿﺮی: ...... ١٦٦

٦ واژﻫﻨﺎﻣﻪ ...... ١٦٧

7 ﺖﺳﺮﻬﻓ ﻊﺑﺎﻨﻣ(ﻓﺎرﺳ )...... ١٧٢

٨ ﺖﺳﺮﻬﻓ ﻊﺑﺎﻨﻣ (اﻧﮕﻠﯿﺴ ) ...... ١٧٣

١ ﻣﻘﺪﻣﻪ:

وب، ﺑﻪ ﻋﻨﻮان ﺑﺴﺘﺮ اراﺋﻪ ﺧﺪﻣﺎت در ﭼﻨﺪﯾﻦ ﺳﺎل اﺧﯿﺮ ﺑﻪ ﻣﻬﻤﺘﺮﯾﻦ رﺳﺎﻧﻪ ﺗﺒﺪﯾﻞ ﺷﺪه-

اﺳﺖ. از ﺷﺮﮐﺘﻬﺎی ﺧﺼﻮﺻ ﮐﻮﭼ ﺗﺎ ﺳﺎزﻣﺎن ﻫﺎی ﺑﺰرگ دوﻟﺘ ﺧﺪﻣﺎت ﻣﺘﻨﻮع ﺧﻮد را ﺑﺮ

روی ﺑﺴﺘﺮ وب اراﺋﻪ ﻣ دﻫﻨﺪ.

از ﺳﺎل ١٩٩٠ ﮐﻪ وب ﮔﺴﺘﺮده ﺟﻬﺎﻧ (World Wide Web) ﺗﻮﺳﻂ ﺗﯿﻢ ﺑﺮﻧﺮز ﻟ اﺧﺘﺮاع

ﺷﺪ، ﺗﺎ اﻻن ﮐﻪ وب ﺑﺮای ﻫﯿﭽﯿ از ﺳﺎﮐﻨﯿﻦ ﮐﺮه زﻣﯿﻦ ﻧﺎﺷﻨﺎﺧﺘﻪ ﻧﯿﺴﺖ، ﮐﻤﺘﺮ از ٢۵ ﺳﺎل

ﻣ ﮔﺬرد.

ﺷﻞ ١ﻧﻤﺎﯾﻪ ﻣﻌﻤﻮﻟ ﮐﻪ ﺑﺮای ﻧﺸﺎن دادن وب ﺑﻪ ﮐﺎر ﻣرود

وب ﺗﮑﻨﻮﻟﻮژی ﻧﺴﺒﺘﺎ ﺳﺎدهای اﺳﺖ وﻟ ﮐﺎرﺑﺮدﻫﺎی آن ﺑﺴﯿﺎر ﮔﺴﺘﺮش ﯾﺎﻓﺘﻪ و ﭘﯿﭽﯿﺪﮔ

ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﯾﺎﻓﺘﻪاﻧﺪ، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺟﺎواﺳ ﺮﯾﭙﺖ در اﺑﺘﺪا ﮐﻤﺘﺮ از ٢% ﺳﯿﺴﺘﻢﻫﺎی وﺑﯽ را

ﺗﺸ ﯿﻞ ﻣ داد وﻟ اﮐﻨﻮن ﺑﯿﺶ از ٧٠% اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎی ﻣﺪرن وﺑﯽ ﺑﺮ اﺳﺎس اﯾﻦ

1

ﺗﮑﻨﻮﻟﻮژی ﺧﺎص ﻫﺴﺘﻨﺪ، ﺗﺎ ﺟﺎﯾﯽ ﮐﻪ ﻧﻘﻄﻪ ﻗﻮت ﮐﺎوﺷ ﺮ وب Google Chrome ﺑﻪ ﻋﻨﻮان

ﺤﻣﺒﻮبﺗﺮﯾﻦ ﮐﺎوﺷ ﺮ وب ٢٠١٢ (ﭘﺲ از ﺗﻨﻬﺎ ۶ ﺳﺎل ﻓﻌﺎﻟﯿﺖ) ﻗﺪرت ﭘﺮدازش ﺳﺮﯾﻊ

ﺟﺎواﺳ ﺮﯾﭙﺖ آن اﺳﺖ.

اﯾﻦ ﺟﻬﺶ در اﺳﺘﻔﺎده از وب، ﻧﯿﺎز ﺑﻪ ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب را ﻓﺮاﻫﻢ آورده اﺳﺖ، ﺗﺎ

ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﭘﯿﭽﯿﺪه ﻣﻮرد ﻧﯿﺎز ﺑﺮای ﺗﻮﺳﻌﻪ دﻫﻨﺪه وب در دﺳﺘﺮس ﺑﺎﺷﻨﺪ و ﻓﺮآﯾﻨﺪ

ﻣﻬﻨﺪﺳ وب را ﺗﺴﻬﯿﻞ و ﻣﻤ ﻦ ﺳﺎزﻧﺪ.

ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب، ﻋﻼوه ﺑﺮ ﻧﻘﺶ ﻣﻬﻤﺸﺎن در ﺗﺴﻬﯿﻞ ﺗﻮﺳﻌﻪ ﺳﯿﺴﺘﻢﻫﺎی

ﭘﯿﭽﯿﺪه، وﻇﯿﻔﻪ ﺗﺎﻣﯿﻦ اﻣﻨﯿﺖ اﺑﺘﺪاﯾﯽ (و ﮔﺎﻫﺎ ﭘﯿﺸﺮﻓﺘﻪ) ﺳﯿﺴﺘﻢﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب را اﯾﻔﺎ

ﻣ ﺪﻨﻨﮐ.

از آﻧﺠﺎﯾﯽ ﮐﻪ Information Assurance ﺑﻪ ﮐﻠ ﺣﻮزه ﻣﺘﻔﺎوﺗ از Software

Engineering ﻮﺴﺤﻣب ﻣ ﺷﻮد، ﻣﻌﻤﻮﻻ ﻧﻤ ﺗﻮان اﻧﺘﻈﺎر داﺷﺖ ﮐﻪ ﺗﯿﻢﻫﺎی ﺗﻮﺳﻌﻪ وب از

داﻧﺶ اﻣﻨﯿﺘ ﮐﺎﻓ ﺑﺮای ﺗﺎﻣﯿﻦ اﻣﻨﯿﺖ ﺳﯿﺴﺘﻢﻫﺎﯾﺸﺎن ﻧﯿﺰ ﺑﺮﺧﻮردار ﺑﺎﺷﻨﺪ. ﻋﻼوه ﺑﺮ آن،

دﺳﺘﻤﺰد ﻣﺘﻮﺳﻂ ﯾ ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ وب ﺑﺴﯿﺎر ﺑﯿﺸﺘﺮ از ﯾ ﺗﻮﺳﻌﻪ دﻫﻨﺪه وب اﺳﺖ، ﻟﺬا

اﯾﻦ ﮐﺎر ﺑﻪ ﺻﺮﻓﻪ اﻗﺘﺼﺎدی ﻧﯿﺰ ﻧﯿﺴﺖ.

2

٢ ﻓﺮﻌﻣﻢ ﻫﺎﻔﻣ ﯽ

ﺷﻨﺎﺧﺖ ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب اﻣﻦ ﻧﯿﺎزﻣﻨﺪ آﺷﻨﺎﯾﯽ ﺑﺎ ﻣﻔﺎﻫﯿﻢ و ﭘﺪﯾﺪهﻫﺎی ﺳﻄ

ﻦﯿﯾﺎﭘﺗﺮ ﺣﻮزه ﺗﺤﺖ ﭘﻮﺷﺶ ﻫﺴﺘﻨﺪ. ﻣﻔﺎﻫﯿﻢ ﻣﻮرد ﻧﯿﺎز ﺷﺎﻣﻞ ﻣﻮارد زﯾﺮ ﻫﺴﺘﻨﺪ:

· اﻣﻨﯿﺖ ﻧﺮم اﻓﺰار

· وب و HTTP

· ﻣﻌﻤﺎری وب

· ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﻣﻮرد اﺳﺘﻔﺎده در وب

· اﻟ ﻮﻫﺎی ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار وب

· ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب

· اﻣﻨﯿﺖ ﻋﻤﻮﻣ وب

ﻻزم ﺑﻪ ذﮐﺮ اﺳﺖ ﮐﻪ ﻣﻮارد ﻓﻮق در اﯾﻦ ﺳﻨﺪ از دﯾﺪﮔﺎه اﻣﻨﯿﺘ ﺑﺮرﺳ ﻣ ﮔﺮدﻧﺪ، ﮐﻪ

ﻧﯿﺎزﻣﻨﺪ ﻧﮕﺎه ﻣﻮﺷ ﺎﻓﺎﻧﻪ و ﺟﺰﺋ ﺑﻪ ﻣﻮارد ﺧﺎص اﯾﻦ ﺗﮑﻨﻮﻟﻮژیﺖﺳﺎﻫ.

٢٬١ اﻣﻨﯿﺖ ﻧﺮم اﻓﺰار

اﻣﻨﯿﺖ ﺳﯿﺴﺘﻢﻫﺎی اﻃﻼﻋﺎﺗ را ﻣ ﺗﻮان ﺑﻪ ﺳﻪ دﺳﺘﻪ اﻣﻨﯿﺖ ﻧﺮم اﻓﺰار، اﻣﻨﯿﺖ ﺷﺒ ﻪ و

اﻣﻨﯿﺖ زﯾﺮﺳﺎﺧﺖ ﺗﻘﺴﯿﻢ ﻧﻤﻮد. اﻣﻨﯿﺖ ﺷﺒ ﻪ و اﻣﻨﯿﺖ زﯾﺮﺳﺎﺧﺖ ﺗﺎ ﺣﺪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﻗﺎﺑﻞ

ﺶﯿﭘﺑﯿﻨ و ﻗﺎﻧﻮﻧﻤﻨﺪ اﺳﺖ، زﯾﺮا ﺧﻮد ﺷﺒ ﻪ و زﯾﺮﺳﺎﺧﺖ ﻗﺎﻧﻮﻧﻤﻨﺪ ﻫﺴﺘﻨﺪ و ﺗﻨﻮع ﺑﺴﯿﺎر

زﯾﺎدی ﺑﺮای آن وﺟﻮد ﻧﺪارد.

3

ﺷﻞ ٢ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار ﺑﻪ ﻣﻬﻤﺘﺮﯾﻦ ﺷﻐﻞ اﻧﻔﻮرﻣﺎﺗﯿ ﺗﺒﺪﯾﻞ ﺷﺪه اﺳﺖ

اﻣﻨﯿﺖ ﻧﺮماﻓﺰار، ﺑﻪ ﻣﺜﺎﺑﻪ ﺧﻮد ﻧﺮماﻓﺰار، دارای ﺗﻨﻮع ﻗﺎﺑﻞ ﺗﻮﺟﻬﯿﺴﺖ ﻟﺬا ﺗﺴﻠﻂ ﺑﺮ اﯾﻦ

ﺣﯿﻄﻪ ﻣﻌﻤﻮﻻ ﺑﺴﯿﺎر دﺷﻮارﺗﺮ از دو ﺣﯿﻄﻪ دﯾ ﺮ اﺳﺖ. در ﺣﺎل ﺣﺎﺿﺮ ﻣﺘﺨﺼﺼﯿﻦ اﻣﻨﯿﺖ ﻧﺮم-

اﻓﺰار ﺑﺎﻻﺗﺮﯾﻦ دﺳﺘﻤﺰد ﻓﻨﺎوری اﻃﻼﻋﺎت دﻧﯿﺎ را ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص دادهاﻧﺪ. ( Top 15

Paying IT Certifications for 2012 Randy Muller, Global Knowledge

(Instructor

ﻣﻮﺳﺴﺎت ﺑﺴﯿﺎری در ﺳﻄ ﺑﯿﻦاﻟﻤﻠﻠ در اﻣﻨﯿﺖ ﻧﺮماﻓﺰار ﻓﻌﺎﻟﯿﺖ ﻣ ﮐﻨﻨﺪ. داﻧﺸ ﺎهﻫﺎی

2 ﻣﺘﻌﺪدی ﻧﯿﺰ ﮐﻢ ﮐﻢ ﺑﻪ ﻓﻌﺎﻟﯿﺖ در اﯾﻦ رﺷﺘﻪ روی آوردهاﻧﺪ. در ﻣﯿﺎن اﯾﻦ ﻣﻮﺳﺴﺎت (ISC) و

OWASP از اﻋﺘﺒﺎر ﺑﻬﺘﺮی ﺑﺮﺧﻮردار ﻫﺴﺘﻨﺪ.

4

٢٬٢ وب و HTTP:

وب، ﺑﻪ ﻋﻨﻮان ﺑﺴﺘﺮ اﯾﺪهآل اراﺋﻪ ﻣﺤﺘﻮا اﻣﺮوزه ﺑﻪ اﺻﻠ ﺗﺮﯾﻦ رﺳﺎﻧﻪ ﻧﺮماﻓﺰارﻫﺎ ﺗﺒﺪﯾﻞ ﺷﺪه

اﺳﺖ. در ﺳﺎل ١٩٩١ ﮐﻪ وب ﺗﻮﺳﻂ ﺗﯿﻢ ﺑﺮﻧﺮز ﻟ اﺑﺪاع ﮔﺮدﯾﺪ، ﺗﻨﻬﺎ ﺟﻬﺖ اراﺋﻪ ﯾ ﻄﺮﻓﻪ

ﺻﻔﺤﺎت اﯾﺴﺘﺎی HTML ﺑﻪ ﮐﺎرﺑﺮان اﺳﺘﻔﺎده ﻣﯿﺸﺪ.

ﺷﻞ ٣ وب ﻣﻌﻤﻮﻻ ﺗﺤﺖ ﭘﺮوﺗﮑﻞ HTTP ﮐﺎر ﻣﮐﻨﺪ، وﻟ ﮐﺎرﺑﺮان ﺗﻮﺟﻬ ﺑﻪ آن ﻧﺪارﻧﺪ

HTTP ﭘﺮوﺗﮑﻞ اﻧﺘﻘﺎل ﺻﻔﺤﺎت و ﻣﺤﺘﻮای وب اﺳﺖ. اﯾﻦ ﭘﺮوﺗﮑﻞ ﺑﺴﯿﺎر ﺳﺎده و ﺳﺒ

ﻃﺮاﺣ ﺷﺪه اﺳﺖ و اﻓﺰوﻧﻪ آن (ﻧﺴﺨﻪ ١٬١) اﻣ ﺎن اراﺋﻪ ﻓﺎﯾﻠﻬﺎی ﺑﺰرگ را ﻧﯿﺰ دارا ﻣ ﺑﺎﺷﺪ.

دﻟﯿﻞ اﺻﻠ ﻣﺤﺒﻮﺑﯿﺖ وب، رﻓ ﻣﺸ ﻞ Platform Compatibility ﺑﻪ ﻣﻌﻨﺎی واﺑﺴﺘﮕ ﺑﻪ

ﺳ ﻮی اﺟﺮاﺳﺖ، ﯾﻌﻨ ﮐﺎرﺑﺮان وب ﻣ ﺗﻮاﻧﻨﺪ از روی ﻣﻮﺑﺎﯾﻞ، ﺗﺒﻠﺖ، ﻟﭙﺘﺎپ و ﺣﺘ ﺳﺮور ﯾ

ﻧﻮع ﺳﺮوﯾﺲ اﺳﺘﺎﻧﺪارد را درﯾﺎﻓﺖ ﻧﻤﺎﯾﻨﺪ.

ﺑﺎ ﮔﺬر زﻣﺎن، اﻣ ﺎﻧﺎت ﭘﻮﯾﺎﺳﺎزی ﺻﻔﺤﺎت ﺑﻪ HTML اﻓﺰوده ﺷﺪ ﮐﻪ ﺑﺎ ﻧﺎم Dynamic

HTML ﯾﺎ DHTML ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﺪ. اﯾﻦ ﭘﻮﯾﺎﺳﺎزی ﻗﺎﻟﺒﺎ ﺗﻮﺳﻂ Javascript ﮐﻪ ﯾ ﻧﻮع

ﺧﺼﻮﺻ ﺳﺎزی ﺷﺪه ECMAScript ﺑﻮد و ﺑﺮ روی ﻫﺮ دو ﮐﺎوﺷ ﺮ ﻣﻄﺮح آن زﻣﺎن –

Netscape Navigator و Internet Explorer – ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺷﺪ. VBScript ﻧﯿﺰ ﺑﻪ ﻃﻮر

ﻣﺤﺪودﺗﺮ در Internet Explorer ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺷﺪ ﮐﻪ ﺑﺎ ﮔﺬر زﻣﺎن ﺣﺬف ﮔﺮدﯾﺪ.

5

ﺻﻔﺤﺎت ﭘﻮﯾﺎ، ﺗﻨﻬﺎ در ﺳﻤﺖ ﻣﺸﺘﺮی ﭘﻮﯾﺎ ﺑﻮدﻧﺪ، ﺑﺪﯾﻦ ﻣﻌﻨ ﮐﻪ اﻣ ﺎن اﯾﺠﺎد اﻧﯿﻤﯿﺸﻦ و

اﻓﮑﺖﻫﺎی ﺳﺎده ﺑﺮ روی ﮐﺎوﺷ ﺮ ﮐﺎرﺑﺮ ﻣﺮور ﮐﻨﻨﺪه وب را ﻓﺮاﻫﻢ ﻣ آوردﻧﺪ و ﺑﺮای ﺑﺮوزرﺳﺎﻧ

ﻣﺤﺘﻮای ﺻﻔﺤﺎت، ﻣﺪﯾﺮ ﺳﺎﯾﺖ ﺑﺎﯾﺪ ﺑﻪ ﺻﻮرت دﺳﺘ ﻣﺤﺘﻮا را ﺗﻐﯿﯿﺮ ﻣ داد. اﯾﻨﮕﻮﻧﻪ وﺖﯾﺎﺴﺑ -

ﻫﺎ ﻣﻌﻤﻮﻻ ﺑﺮای ﻣﻌﺮﻓ ﺷﺮﮐﺖﻫﺎ و ﺧﺪﻣﺎﺗﺸﺎن، ﻣﻄﺎﻟﺐ ﻋﻠﻤ و آﻣﻮزﺷ ﻣﻔﯿﺪ ﺑﻮدﻧﺪ و اﻣ ﺎن

ﺗﻌﺎﻣﻞ ﮐﺎرﺑﺮ ﺑﺎ ﺳﯿﺴﺘﻢ وﺟﻮد ﻧﺪاﺷﺖ.

ﭘﺲ از ﭼﻨﺪ ﺳﺎل، ﺳﺮورﻫﺎی وب اﻣ ﺎن ﭘﻮﯾﺎﺷﺪن ﺻﻔﺤﺎت را دارا ﺷﺪﻧﺪ، ﺑﺪﯾﻦ ﻣﻌﻨ ﮐﻪ

ﺳﺮور وب ﺑﻪ ﺟﺎی اراﺋﻪ ﯾ ﻓﺎﯾﻞ ﺛﺎﺑﺖ و ﻣﺸﺨﺺ HTML ﺑﻪ ﮐﺎرﺑﺮ، اﺑﺘﺪا ﯾ ﺑﺮﻧﺎﻣﻪ را ﺑﺎ

ﭘﺎراﻣﺘﺮﻫﺎی ورودی ﮐﺎرﺑﺮ اﺟﺮا ﻣ ﻧﻤﻮد و ﺳﭙﺲ ﺧﺮوﺟ آﻧﺮا در ﻗﺎﻟﺐ HTML ﺑﻪ ﮐﺎرﺑﺮ ﻣﻨﺘﻘﻞ

ﻣ ﮐﺮد. اﯾﻦ روش ﺑﺎﻋﺚ اﯾﺠﺎد وﺑﺴﺎﯾﺖﻫﺎی ﭘﻮﯾﺎ ﺷﺪ ﮐﻪ اﻣ ﺎن ﺗﻌﺎﻣﻞ ﺑﺎ ﮐﺎرﺑﺮ را داﺷﺘﻨﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺟﺰﺋﯿﺎت ﮐﺎر ﺑﺎ ﭘﺮوﺗﮑﻞ HTTP ﺑﺮای اﯾﻦ ﻣﻨﻈﻮر ﻻزم ﺑﻮد، و اﮐﺜﺮ ﺑﺮﻧﺎﻣﻪ -

ﻮ ﻧﯾﺴﺎن اﻃﻼع ﮐﺎﻓ از آن ﻧﺪاﺷﺘﻨﺪ، زﺑﺎ نﻫﺎی ﻣﺨﺼﻮص اﯾﻨﮑﺎر اﯾﺠﺎد ﺷﺪﻧﺪ. ﻣﻌﺮوﻓﺘﺮﯾﻦ اﯾﻦ

زﺑﺎنﻫﺎ را ﻣ ﺗﻮان PHP و ASP داﻧﺴﺖ. ﺑﻪ ﻃﻮر ﮐﻠ ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﯾﯽ ﮐﻪ در ﻃﺮف ﺳﺮور اﺟﺮا

ﻣ ﺷﻮﻧﺪ و ﺧﺮوﺟ آﻧﻬﺎ ﺑﺮای ﻣﺸﺘﺮی ارﺳﺎل ﻣ ﮔﺮدد، CGI ﻣ ﺪﻨﯾﻮﮔ.

ﺑﺎ ﺗﻌﺎﻣﻠ ﺷﺪن وﺑﺴﺎﯾﺖﺖﯾﺎ ﻼﻤ ،ﺎﻫﻫﺎی اﯾﻨﺘﺮﻧﺘ ﺑﻪ ﻧﺮماﻓﺰارﻫﺎی اﯾﻨﺘﺮﻧﺘ ﻣﺒﺪل

ﺷﺪﻧﺪ. درﯾﺎﻓﺖ ورودی از ﮐﺎرﺑﺮ، ﭘﺮدازش و ذﺧﯿﺮه آن و اراﺋﻪ ﺧﺮوﺟ ﻣﻮرد ﻧﻈﺮ ﺑﻪ ﮐﺎرﺑﺮ ﻋﻤﻼ

ﯾ ﻧﺮماﻓﺰار ﺳﺮور/ﻣﺸﺘﺮی را اﯾﺠﺎد ﻣ ﮐﺮد. ﺗﻨﻬﺎ ﻣﺸ ﻠ ﮐﻪ در اﯾﻦ ﻣﺮﺣﻠﻪ وﺟﻮد داﺷﺖ،

ﻧﯿﺎز ﺑﻪ اﯾﺠﺎد ﯾ درﺧﻮاﺳﺖ ﮐﺎﻣﻞ ﺑﺮای درﯾﺎﻓﺖ ﻫﺮﮔﻮﻧﻪ ﭘﺎﺳﺨ از ﺳﺮور ﺑﻮد و ارﺳﺎل ﯾ

درﺧﻮاﺳﺖ ﮐﺎﻣﻞ، ﺑﻪ ﻣﻌﻨ ﭘﺎک ﺷﺪن ﮐﺎﻣﻞ ﺻﻔﺤﻪ در ﺳﻤﺖ ﻣﺸﺘﺮی، و ﺑﺎر ﺷﺪن ﻣﺠﺪد آن

ﺑﻮد.

ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﺮای اﯾﺠﺎد ﯾ ﻧﺮماﻓﺰار ﮔﭗ (Chat) ﺑﺮ روی ﺳ ﻮی وب، ﻃﺮﻓﯿﻦ ﺑﺎﯾﺪ ﭘﺲ

از ﺗﺎﯾﭗ ﻫﺮ ﭘﯿﺎم، ﮐﻠﯿﺪی را ﻓﺸﺎر ﻣ دادﻧﺪ ﮐﻪ ﻣﻮﺟﺐ ﺑﺮوزرﺳﺎﻧ (Refresh) ﺷﺪن ﻪﺤ ﺻ ﻞﮐ 6

ﻣ ﺷﺪ ﺗﺎ ﺑﺮای ﻣﻘﺼﺪ ﻓﺮﺳﺘﺎده ﺷﻮد. ﻫﻤﭽﻨﯿﻦ ﺻﻔﺤﻪ ﺑﺎﯾﺪ ﺑﻪ ﺻﻮرت دورهای ﺑﺮوزرﺳﺎﻧ ﻣ -

ﺷﺪ ﺗﺎ ﭘﯿﺎمﻫﺎی ارﺳﺎﻟ ﻃﺮف ﻣﻘﺎﺑﻞ ﻧﯿﺰ درﯾﺎﻓﺖ ﮔﺮدد. اﯾﻦ ﻣﻌﻀﻞ ﺑﻪ ﻣﺪت ﻗﺎﺑﻞ ﻣﻼﺣﻈﻪای

ﻧﺮخ رﺷﺪ ﻧﺮماﻓﺰار وﺑﯽ را ﺑﺴﯿﺎر ﭘﺎﯾﯿﻦ آورده ﺑﻮد.

در اداﻣﻪ، ﺗﻮﺳﻌﻪدﻫﻨﺪﮔﺎن ﺧﻼق ﺑﺎ ﺗﮑﯿﻪ ﺑﺮ ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﺧﺎﺻ ﮐﻪ ﻣﺮورﮔﺮﻫﺎ ﺧﺎرج از

اﺳﺘﺎﻧﺪارد ﺑﺮای ﭘﺸﺘﯿﺒﺎﻧ از ﺑﺮﺧ ﻧﯿﺎزﻫﺎی ﺧﺎص ﻓﺮاﻫﻢ آورده ﺑﻮدﻧﺪ (ﺑﻪ ﻣﺎﻧﻨﺪ iFrame) و

ﻫﻤﭽﻨﯿﻦ ﺑﻬﺮه ﮔﺮﻓﺘﻦ از Javascript، اﻣ ﺎن اﯾﺠﺎد ﺻﻔﺤﺎت ﺗﻌﺎﻣﻠ را ﺗﺎ ﺣﺪودی ﻓﺮاﻫﻢ

آوردﻧﺪ. در اﯾﻦ روش، ﺗﮏ ﮐﺪ ﺟﺎواﺳ ﺮﯾﭙﺖ، آدرس ﺻﻔﺤﻪ داﺧﻞ iFrame ﻧﺎﻣﺮﺋ را ﺗﻐﯿﯿﺮ

ﻣ داد. ﺻﻔﺤﻪ ﺟﺪﯾﺪ ﺣﺎوی اﻃﻼﻋﺎت ﻻزم ﺑﺮای ﺑﺮوزرﺳﺎﻧ ﺻﻔﺤﻪ اﺻﻠ ﺑﻮد و ﺗﻮﺳﻂ

ﺟﺎواﺳ ﺮﯾﭙﺖ ﻣﻮﺟﻮد در ﺻﻔﺤﻪ داﺧﻠ ﻧﺎﻣﺮﺋ ، اﯾﻦ اﻃﻼﻋﺎت در ﺻﻔﺤﻪ ﺑﯿﺮوﻧ اﻋﻤﺎل ﻣ -

ﺷﺪﻧﺪ .

ﺷﻞ ٤ ﻧﻤﺎی ﺳﺎﺧﺘﺎری iFrame

اﯾﻦ روش در واﻗ ﯾ راه ﻏﯿﺮ ﻣﻌﻤﻮل ﺑﺮای رﺳﯿﺪن ﺑﻪ ﻫﺪف ﺑﻮد. ﻣﺪﺗ ﮐﻪ از اﯾﻦ

راﻫ ﺎر ﺳﭙﺮی ﺷﺪ، W3C ﺑﺎﻻﺧﺮه اﺳﺘﺎﻧﺪارد XMLHTTPRequest را در ﺳﺎل ٢٠٠۶ ﺑﻪ

7

ﻋﻨﻮان ﯾ ﭘﯿﺸﻨﻮﯾﺲ ﻋﻤﻠﯿﺎﺗ اراﺋﻪ ﮐﺮد ﮐﻪ ﺑﻼﻓﺎﺻﻠﻪ ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮﻫﺎی ﻣﻄﺮح ﻣﺎﻧﻨﺪ

Firefox و IE ﭘﯿﺎدهﺳﺎزی ﮔﺮدﯾﺪ. اﯾﻦ اﺳﺘﺎﻧﺪارد اﻣ ﺎن ارﺳﺎل درﺧﻮاﺳﺖﻫﺎی HTTP از

ﻃﺮﯾﻖ ﺟﺎواﺳ ﺮﯾﭙﺖ – ﺑﺪون ﺑﺮوزﺷﺪن ﮐﻞ ﺻﻔﺤﻪ – و درﯾﺎﻓﺖ ﭘﺎﺳ آن در ﯾ ﻣﺘﻐﯿﺮ

ﺟﺎواﺳ ﺮﯾﭙﺖ را ﺑﻪ ﺻﻮرت آﺳﻨﮑﺮون ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﻧﻤﺎﯾﺪ و ﻣﻬﻤﺘﺮﯾﻦ ﺟﻬﺶ در ﺗﮑﻨﻮﻟﻮژی وب

ﺗﻠﻘ ﻣ ﮔﺮدد.

ﭘﺲ از آن واژهﻫﺎی وب ٢ و آژاﮐﺲ (AJAX) ﮐﻪ در واﻗ ﻣﺨﻔﻒ ﻋﺒﺎرت

Asynchronous Javascript And XML ﯾﺎ ﺟﺎواﺳ ﺮﯾﭙﺖ آﺳﻨﮑﺮون ﺑﻪ ﻫﻤﺮاه XML اﺳﺖ

(XMLHTTPRequest) ﻣﻌﻤﻮل ﺷﺪﻧﺪ و ﺗﮑﻨﻮﻟﻮژی وب ﺟﺪﯾﺪ ﭘﺎ ﺑﻪ ﻋﺮﺻﻪ ﮔﺬاﺷﺖ.

ﺷﻞ ٥ﮐﻠﯿﺪواژهﻫﺎی ﻣﻬﻢ ﻣﻄﺮح در وب ٢

ﺟﺎواﺳ ﺮﯾﭙﺘ ﮐﻪ در اﺑﺘﺪا ﺑﺮای ﺑﻪ ﺣ ﺮﮐﺖ دراوردن و ﺟﻠﻮهﻫﺎی وﯾﮋه ﺻﻔﺤﺎت اﯾﺴﺘﺎی وب

ﭘﺎ ﺑﻪ ﻋﺮﺻﻪ ﮔﺬاﺷﺘﻪ ﺑﻮد، ﭘﺲ از ﻇﻬﻮر اﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﺑﻪ ﻗﺴﻤﺖ ﻋﻤﺪه ﺗﻤﺎم ﻧﺮماﻓﺰارﻫﺎی وﺑﯽ

ﺗﺒﺪﯾﻞ ﮔﺸﺖ، زﯾﺮا درﺧﻮاﺳﺖﻫﺎی آﺳ ﻨﺮون ﺑﺎﯾﺪ ﺑﺎ ﺟﺎواﺳ ﺮﯾﭙﺖ ارﺳﺎل ﻣﯿﺸﺪ، درﯾﺎﻓﺖ ﻣ -

8

ﺷﺪ و دادهﻫﺎی آن در ﺻﻔﺤﻪ اﻋﻤﺎل ﻣ ﺷﺪ. در واﻗ ﺻﻔﺤﺎت ﺗﻨﻬﺎ ﺑﻪ ﯾ ﭘﻮﺳﺘﻪ ﺑﺮای

دﺳﺘﮑﺎری ﺗﻮﺳﻂ ﺟﺎواﺳ ﺮﯾﭙﺖ ﺗﺒﺪﯾﻞ ﺷﺪه ﺑﻮدﻧﺪ.

درﺻﺪ ﺣﺠﻤ ﺟﺎواﺳ ﺮﯾﭙﺖ ﺑﻪ ﻃﻮر ﻣﺘﻮﺳﻂ در ﺳﺎﯾﺖﻫﺎی از ٢% ﻪﺑ ٧۵% رﺳﯿﺪه ﺑﻮد و

درﺻﺪ ﭘﺮدازﺷ ﮐﻪ ﻣﺤﺘﻮای ﻣﺨﺘﻠﻒ ﺳﺎﯾﺖ ﺑﺮ روی ﻣﺸﺘﺮی ﻻزم داﺷﺖ، از ۵% ﻪﺑ ٩٩%

اﻓﺰاﯾﺶ ﯾﺎﻓﺖ.

ﮐﺎوﺷ ﺮﻫﺎی ﻗﺪﯾﻤ ﻣﺎﻧﻨﺪ Firefox و IE ﺗﻤﺮﮐﺰ اﺻﻠ ﺧﻮد را ﺑﺮ روی ﻣﻮﺗﻮر ﭘﺮدازش

HTML و ﺗﺼﺎوﯾﺮ ﻗﺮار داده ﺑﻮدﻧﺪ، و ﺟﺎواﺳ ﺮﯾﭙﺖ را ﺑﺎ ﺳﺮﻋﺖ ﮐﻤ ﺑﺎر ﻣ ﮐﺮدﻧﺪ. ﮔﻮﮔﻞ

اﻗﺪام ﺑﻪ ﺗﻮﻟﯿﺪ Google Chrome ﮐﺮد ﮐﻪ دو ﺳﺎل زﻣﺎن ﺻﺮف ﺑﻬﯿﻨﻪﺳﺎزی ﻣﻮﺗﻮر اﺟﺮای

ﺟﺎواﺳ ﺮﯾﭙﺖ آن ﺷﺪه ﺑﻮد و ﻫﻤﯿﻦ ﻣﻬﻢ ﺑﺎﻋﺚ ﺷﺪ ﺗﺎ اﻣﺮوزه ﮐﺎوﺷ ﺮ ﻣﺬﮐﻮر رﺗﺒﻪ ﯾ ﮐﺎرﺑﺮان

را ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص دﻫﺪ.

در ﺳﺎﻟﻬﺎی اﺧﯿﺮ، ﻋﺪم وﺟﻮد اﻣ ﺎﻧﺎت ﺧﺎص ﻣﺎﻧﻨﺪ ﭘﺮدازش ﺳﻪ ﺑﻌﺪی و اﻧﯿﻤﯿﺸﻦ در وب،

ﻣﻨﺠﺮ ﺑﻪ اﺳﺘﺎﻧﺪارد ﺷﺪن HTML 5 ﺷﺪ. اﯾﻦ ﻧﺴﺨﻪ از HTML ﻫﻨﻮز ﺑﻪ اﺳﺘﺎﻧﺪارد و ﭘﯿﺎده -

ﺳﺎزی ﻗﻄﻌ ﻧﺮﺳﯿﺪه اﺳﺖ و ﻣﻌﻀﻼت اﻣﻨﯿﺘ ﻓﺮاواﻧ در آن ﮐﺸﻒ ﻣﯿﺸﻮﻧﺪ. ﻫﻤﭽﻨﯿﻦ ﻫﺮ

ﮐﺎوﺷ ﺮی ﺑﻪ ﯾ ﻧﻮع آﻧﺮا ﭘﯿﺎدهﺳﺎزی ﻧﻤﻮده اﺳﺖ و ﺗﻨﻮع اﻣ ﺎﻧﺎت آن ﻧﯿﺰ ﻗﺎﺑﻞ ﺗﻮﺟﻪ اﺳﺖ.

٢٬٣ ﻣﻌﻤﺎری وب:

ﭘﺮوﻓﺴﻮر دﯾﻮﯾﺪ ﭘﺘﺮﺳﻮن، ﻧﻮﯾﺴﻨﺪه ﮐﺘﺎب ﻣﻌﺮوف ﻣﻌﻤﺎری ﮐﺎﻣﭙﯿﻮﺗﺮ و اﺳﺘﺎد داﻧﺸ ﺎه

ﺑﺮﮐﻠ ﮐﻪ از داﻧﺸﻤﻨﺪان ﺻﺎﺣﺐ ﻧﺎم و ﺗﺎﺛﯿﺮﮔﺬار ﺳﺨﺖ اﻓﺰار اﺳﺖ، ﺑﻪ ﺗﺎزﮔ ﭘﺎ در ﻋﺮﺻﻪ ﻧﺮم -

اﻓﺰار و SaaS ﮔﺬارده اﺳﺖ. وی در ﮐﻼس ﻣﺮﺑﻮط ﺑﻪ اﯾﻦ ﻣﻮﺿﻮع ﮐﻪ ﺑﻪ ﻫﻤﺮاﻫ دﮐﺮﺘ

Armando Fox در داﻧﺸ ﺎه ﺑﺮﮐﻠ اراﺋﻪ ﻣ ﮐﺮد، ﻋﺒﺎرت ﻗﺎﺑﻞ ﺗﻮﺟﻬ را ذﮐﺮ ﻣ ﺪﻨﮐ:

9

«ﻣﺎ در ﺻﻨﻌﺖ ﺳﺨﺖاﻓﺰار، ﻣﺠﺒﻮرﯾﻢ ﺑﻪ ﺷﺪت ﻣﺤﺼﻮل را ﺗﺴﺖ و ﺑﺮرﺳ ﮐﻨﯿﻢ. ﻫﺰﯾﻨﻪ

ﺟﻤ آوری و اﺻﻼح ﻣﺤﺼﻮل ﻣﻌﯿﻮب ﺑﺴﯿﺎر ﮔﺰاف اﺳﺖ. اﯾﻦ ﻃﺮز ﻓﮑﺮ در اﺑﺘﺪا ﺑﻪ ﺻﻨﻌﺖ ﻧﺮم -

اﻓﺰار ﻧﯿﺰ ﻣﻨﺘﻘﻞ ﺷﺪه ﺑﻮد وﻟ در واﻗ ﻧﺮماﻓﺰار ﻣﺎﻫﯿﺘﺎ ﮔﻮﻧﻪ دﯾ ﺮی اﺳﺖ. ﻧﺮماﻓﺰار را ﻣ ﺗﻮان

ﻫﺮروز اﺻﻼح و ﺑﺮوز رﺳﺎﻧ ﮐﺮد و اﯾﻦ ﺑﻪ ﻣﻌﻨ ﻋﺪم ﻧﯿﺎز ﺑﻪ ﺗﮑﻤﯿﻞ ﻧﻬﺎﯾﯽ آن در ﯾ ﻓﺎز

اﺳﺖ.»

ﻢﺘﺴﯿﺳﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب، ﻫﺮ روز و ﺣﺘ ﻫﺮ ﺳﺎﻋﺖ ارﺗﻘﺎ ﻣ ﯾﺎﺑﻨﺪ. ﻣﻨﻈﻮر از اﯾﻦ ارﺗﻘﺎ،

ﺗﻐﯿﯿﺮ ﻣﺤﺘﻮی ﻧﯿﺴﺖ، ﺑﻠ ﻪ ﺗﻐﯿﯿﺮ ﻧﺮماﻓﺰار و ﮐﺪ اﺳﺖ. ﻫﻤﭽﻨﯿﻦ ﺳﯿﺴﺘﻢﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب

ﺑﺴﯿﺎر اﺑﻌﺎدﭘﺬﯾﺮ (Scalable) ﻫﺴﺘﻨﺪ، ﯾﻌﻨ ﻣﻤ ﻦ اﺳﺖ در ﻋﺮض ﯾ ﻣﺎه ﺗﻌﺪاد ﻣﺨﺎﻃﺒﺎن

آﻧﻬﺎ ١٠ ﺑﺮاﺑﺮ ﺷﻮد.

ﺑﺮای ﺗﺎﻣﯿﻦ اﯾﻦ ﻧﯿﺎز - ﮐﻪ در ﻧﺮماﻓﺰارﻫﺎی ﺑﺪوی ﺑﺪﯾﻦ ﺷ ﻞ وﺟﻮد ﻧﺪاﺷﺖ – ﻣﻠﺰم ﺑﻪ

اﺳﺘﻔﺎده از ﻣﻌﻤﺎری و اﻟ ﻮﻫﺎی ﺗﻮﺳﻌﻪ ﻣﺨﺼﻮﺻ ﻫﺴﺘﯿﻢ. ﻫﻤﭽﻨﯿﻦ ﭼﻬﺎرﭼﻮبﻫﺎ و ﻧﺮم -

اﻓﺰارﻫﺎی ﺷﺨﺺ ﺛﺎﻟﺚ (Third Party) ﻧﻘﺶ ﻣﻬﻤ در ﺻﻮرت ﺗﻮﺳﻌﻪ ﺳﯿﺴﺘﻢﻫﺎی وﺑﯽ

اﯾﻔﺎ ﻣ ﮐﻨﻨﺪ، ﮐﻪ اﻟﺒﺘﻪ ﺑﺎﻋﺚ ﻣﻌﻀﺎﻻت اﻣﻨﯿﺘ ﻓﺮاواﻧ ﻧﯿﺰ ﻣ ﺪﻧﻮﺷ.

در ﺣﺎل ﺣﺎﺿﺮ ﻣﻌﻤﺎری ﺳﻪ ﻻﯾﻪ واﺳﻂ ﮐﺎرﺑﺮی – ﻖﻄﻨﻣ – داده و ﻣﺸﺘﻘﺎت آن ﺑﯿﺸﺘﺮﯾﻦ

اﺳﺘﻔﺎده را در ﻢﺘﺴﯿﺳﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب دارﻧﺪ. اﻟ ﻮی MVC و Component Based

MVC ﻫﻢ ﺗﻘﺮﯾﺒﺎ ﺑﻪ اﻟ ﻮی ﺛﺎﺑﺖ ﺳﯿﺴﺘﻢﻫﺎی وﺑﯽ ﭘﺮﺗﻐﯿﯿﺮ ﺗﺒﺪﯾﻞ ﺷﺪه اﺳﺖ.

٢٬٤ ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﻣﻮرد اﺳﺘﻔﺎده در وب:

وب ﺑﻪ ﻋﻨﻮان ﯾ ﺑﺴﺘﺮ ﺣﺎوی ﺗﮑﻨﻮﻟﻮژیﻫﺎی و ﭘﺮوﺗﮑﻞﻫﺎی ﻣﺘﻌﺪدی اﺳﺖ ﮐﻪ آﺷﻨﺎﯾﯽ ﺑﺎ

آﻧﻬﺎ ﺑﺮای ﺑﺮرﺳ وب از دﯾﺪﮔﺎه اﻣﻨﯿﺖ اﻃﻼﻋﺎت ﺿﺮورﯾﺴﺖ. در اداﻣﻪ اﯾﻦ ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﺑﻪ

اﺧﺘﺼﺎر ﺑﺮرﺳ ﻣ ﮔﺮدﻧﺪ:

10

٢٬۴٬١ HTTP اچ ﺗ ﺗ ﭘﯽ، ﭘﺮوﺗﮑﻞ اﻧﺘﻘﺎل اﺑ ﺮﻣﺘﻦ (Hypertext Transfer Protocol) ﺑﺴﺘﺮ اﻧﺘﻘﺎل

داده در وب اﺳﺖ. اﯾﻦ ﭘﺮوﺗﮑﻞ ﯾ ﭘﺮوﺗﮑﻞ ﺷﺒ ﻪ در ﺳﻄ ﻧﺮماﻓﺰار اﺳﺖ ﮐﻪ درﮔﺎه ﭘﯿﺶ -

ﻓﺮ ض و ا ﺧ ﺘ ﺼ ﺎ ﺻ آ ن درﮔﺎه TCP 80 ﻣ ﺑﺎﺷﺪ.

ﺷﻞ ٦ HTTPS ﻧﺴﺨﻪ اﻣﻦ ﺷﺪه و رﻣﺰﮔﺬاری ﺷﺪه HTTP

ﻧﮑﺘﻪ ﻗﺎﺑﻞ ﺗﻮﺟﻪ در ﻣﻮرد اﯾﻦ ﭘﺮوﺗﮑﻞ آﻧﺴﺖ ﮐﻪ ﺑﻪ دﻟﯿﻞ اﻣﻨﯿﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻪ آن ﻧﺴﺒﺖ ﺑﻪ

ﺑﻘﯿﻪ ﭘﺮوﺗﮑﻞﻫﺎ (ﮐﻪ ﺑﻪ دﻟﯿﻞ ﺳﺎدﮔ وب اوﻟﯿﻪ و ﯾ ﻃﺮﻓﻪ ﺑﻮدن آن ﺑﻮده اﺳﺖ) در اﮐﺜﺮ

ﻓﺎﯾﺮوالﻫﺎ اﺟﺎزه ﻋﺒﻮر دارد. اﯾﻦ ﻧﮑﺘﻪ ﺑﺎﻋﺚ ﺷﺪه ﺑﺴﯿﺎری ﺗﮑﻨﻮﻟﻮژیﻫﺎی دﯾ ﺮ ﻧﯿﺰ ﺧﻮد را ﺑﺮ

اﯾﻦ ﺑﺴﺘﺮ اﻧﻄﺒﺎق دﻫﻨﺪ، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل RPC ﺟﺪﯾﺪ ﺑﻪ ﻧﺎم SOAP از اﯾﻦ ﺑﺴﺘﺮ ﻧﯿﺰ ﭘﺸﺘﯿﺒﺎﻧ

ﻣ ﮐﻨﺪ.

HTTP ﻣﺎﻫﯿﺘﺎ ﯾ ﭘﺮوﺗﮑﻞ درﺧﻮاﺳﺖ/ﭘﺎﺳﺨ اﺳﺖ، ﯾﻌﻨ ﺷﯿﻮه اﺻﻠ ﮐﺎرﮐﺮد آن

درﯾﺎﻓﺖ ﯾ درﺧﻮاﺳﺖ از ﻣﺸﺘﺮی و ارﺳﺎل ﯾ ﭘﺎﺳ ﺑﻪ وی اﺳﺖ. اﯾﻦ رﻓﺘﺎر ﭘﺮوﺗﮑﻞ در ﺑﺮﺧ

از ﻣﻮارد ﻣﻄﻠﻮب ﻧﯿﺴﺖ ﮐﻪ ﻣﻨﺠﺮ ﺑﻪ HTTP Streaming ﺷﺪه اﺳﺖ.

11

درﺧﻮاﺳﺖﻫﺎی HTTP ﭼﻬﺎر ﻧﻮع اﺻﻠ دارﻧﺪ: GET/POST/DELETE/PUT ﺎﻬ ﺗ ﻪﮐ

GET,POST ﮐﺎرﺑﺮد ﮔﺴﺘﺮدهای ﯾﺎﻓﺘﻪاﻧﺪ. ﺑﺪﻧﻪ درﺧﻮاﺳﺖ HTTP در ﻗﺎﻟﺐ زﯾﺮ اﺳﺖ:

POST /enlighten/calais.asmx/Enlighten HTTP/1.1

Host: .opencalais.com

Content-Type: application/x-www--urlencoded

Content-Length: 370

licenseID=string&content=string¶msXML=string

در واﻗ ﻫﺮ درﺧﻮاﺳﺖ و ﭘﺎﺳ HTTP ﯾ ﻗﺴﻤﺖ ﺳﺮآﯾﻨﺪ و ﯾ ﺑﺪﻧﻪ دارد. در ﺳﺮآﯾﻨﺪ

ﺪﻌﺗاد ﺧﻂ وﺟﻮد دارد ﮐﻪ اوﻟ آﻧﻬﺎ ﻣﺸﺨﺺ ﮐﻨﻨﺪه ﻣﻮﺟﻮدﯾﺖ اﺻﻠ درﺧﻮاﺳﺖ اﺳﺖ و ﻣﺎﺑﻘ

آﻧﻬﺎ ﭘﺎراﻣﺘﺮﻫﺎ را ﺑﻪ ﯾ ﻋﻼﻣﺖ ﮐﻮﻟﻮن (دو ﻧﻘﻄﻪ) از ﻣﻘﺪار آﻧﻬﺎ ﻣﺘﻤﺎﯾﺰ ﻣ ﺳﺎزد.

ﺳﭙﺲ ﺑﻌﺪ از ﯾ ﺧﻂ ﺧﺎﻟ ، ﺑﺪﻧﻪ درﺧﻮاﺳﺖ ﯾﺎ ﭘﺎﺳ ذﮐﺮ ﻣ ﺷﻮد. در ﯾ درﺧﻮاﺳﺖ،

ﺧﻂ اول ﺑﺎﯾﺪ ﺷﺎﻣﻞ ﻧﻮع درﺧﻮاﺳﺖ ﺑﺎﺷﺪ، ﮐﻪ ﺑﺎ ﯾ ﻓﺎﺻﻠﻪ از آدرس آن و ﺳﭙﺲ ﺑﺎ ﯾ ﻓﺎﺻﻠﻪ

دﯾ ﺮ از ﻧﺴﺨﻪ HTTP ﺟﺪا ﺷﺪه ﺑﺎﺷﺪ.

ﭘﺎﺳ ﻧﯿﺰ ﻗﺎﻟﺒﯽ ﻣﺸﺎﺑﻪ زﯾﺮ دارد:

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: 34

12

Response Body

در ﭘﺎﺳ ﻧﯿﺰ ﺧﻂ اﺑﺘﺪاﯾﯽ، ﻣﺸﺨﺺ ﮐﻨﻨﺪه وﺿﻌﯿﺖ ﭘﺎﺳ اﺳﺖ. ﮐﻠﻤﻪ اول ﻧﺴﺨﻪ ﭘﺮوﺗﮑﻞ،

ﮐﻠﻤﻪ دوم ﮐﺪ ﭘﺎﺳ (ﮐﻪ ﺣﺪود ٢۵ ﺣﺎﻟﺖ ﻣﺠﺎز ﺑﯿﻦ ١٠٠ و ۵٠٠ دارد) و ﮐﻠﻤﻪ ﺳﻮم ﺗﻮﺿﯿﺢ

ﮐﺪ ﻣﺬﮐﻮر اﺳﺖ.

ﯾ از وﯾﮋﮔ ﻫﺎﯾﯽ ﮐﻪ در ﻧﺴﺨﻪ ١٬١ ﺑﻪ اﯾﻦ ﭘﺮوﺗﮑﻞ اﻓﺰوده ﺷﺪه اﺳﺖ، اﻣ ﺎن درﯾﺎﻓﺖ

ﻗﺴﻤﺘ از ﯾ ﭘﺎﺳ اﺳﺖ. اﯾﻦ اﻣ ﺎن ﺑﺎ ﻋﻨﻮان HTTP Range ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮد ﮐﻪ ﺑﺎ

اﺳﺘﻔﺎده از آن ﻣ ﺗﻮان ﯾ ﺑﺮد از ﭘﺎﺳ را اﻧﺘﺨﺎب ﮐﺮد ﺗﺎ ﺳﺮور ارﺳﺎل ﮐﻨﺪ. ﮐﺎرﺑﺮد اﺻﻠ اﯾﻦ

وﯾﮋﮔ در درﯾﺎﻓﺖ ﻓﺎﯾﻠﻬﺎی ﺑﺰرگ از ﺳﺮور اﺳﺖ، در ﺻﻮرﺗ ﮐﻪ اﺗﺼﺎل ﻣﻨﻘﻄ ﺷﻮد، ﻣ ﺗﻮان

آﻧﺮا اداﻣﻪ داد. ﻫﻤﭽﻨﯿﻦ ﻣ ﺗﻮان ﺑﻪ ﺻﻮرت ﻫﻤﺮوﻧﺪ ﻗﺴﻤﺖﻫﺎی ﻣﺨﺘﻠﻒ ﭘﺎﺳ را درﯾﺎﻓﺖ ﮐﺮد.

ﺑﺎ روی ﮐﺎر آﻣﺪن اﯾﻦ وﯾﮋﮔ ، ﭘﺮوﺗﮑﻞ FTP ﮐﺎرﺑﺮد درﯾﺎﻓﺖ ﻓﺎﯾﻞ ﺧﻮد را از دﺳﺖ داد.

HTTP از آﻧﺠﺎﯾﯽ ﮐﻪ ﭘﺮوﺗﮑﻞ زﯾﺮﺳﺎﺧﺘ وب اﺳﺖ، ﻧﮑﺎت ﺟﺰﺋ ﻓﺮاواﻧ در ﺑﺤﺚ اﻣﻨﯿﺖ

دارد ﮐﻪ ﺑﻪ ﺻﻮرت ﻣﻨﻘﻄ در اداﻣﻪ ﺑﺤﺚ ﺧﻮاﻫﺪ ﺷﺪ.

٢٬۴٬٢ HTML اچ ﺗ ام ال، ﯾﻌﻨ زﺑﺎن ﺑﺮﭼﺴﺒﯽ اﺑ ﺮﻣﺘﻦ (Hypertext Markup Language). اﯾﻦ زﺑﺎن

ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐﻫﺎ اﺳﻨﺎد وﺑﯽ را اراﺋﻪ ﻣ دﻫﺪ. HTML ﻧﻮﻋ از ﺳﻨﺪ XML اﺳﺖ، در

ﺣﺎﻟ ﮐﻪ XML ﺑﺴﯿﺎر ﺑﻌﺪ از HTML و ﭘﺲ از ﭼﻨﺪﯾﻦ اﺳﺘﺎﻧﺪاردﺳﺎزی ﺑﻪ وﺟﻮد آﻣﺪه اﺳﺖ.

13

ﺷﻞ ٧ ﺷﻤﺎﯾﻞ ﺳﺎده ﯾ ﺳﻨﺪ HTML

اﺳﻨﺎد HTML ﻣﻌﻤﻮﻻ در ﻗﺴﻤﺖ ﺑﺪﻧﻪی ﯾ ﭘﺎﺳ HTTP ﺑﻪ ﻣﺸﺘﺮی ارﺳﺎل ﻣ -

ﺷﻮﻧﺪ.ﮐﺎوﺷ ﺮ ﻣﺸﺘﺮی اﯾﻦ اﺳﻨﺎد را ﭘﺮدازش ﮐﺮده، از روی آﻧﻬﺎ ﯾ ﺳﺎﺧﺘﺎر درﺧﺘ از اﺷﯿﺎ

اﯾﺠﺎد ﻣ ﮐﻨﺪ ﮐﻪ ﺑﺎ ﻧﺎم Document Object Model ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮد. ﺳﭙﺲ ﺑﺮ اﺳﺎس

DOM ﺻﻔﺤﻪ را ﭘﺮدازش ﮐﺮده ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ.

ﻗﺎﻟﺐ ﮐﻠ ﯾ ﺳﻨﺪ HTML ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ:

Page Title

some text here

ﻫﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ در ﻣﺜﺎل ﻓﻮق ﻣﺸﺨﺺ اﺳﺖ، ﻣﻌﻤﻮﻻ در ﯾ HTML ﺑﻪ ﻓﺎﯾﻠﻬﺎی دﯾ ﺮی ارﺟﺎع داده ﺷﺪهاﺳﺖ. ﯾ از وﻇﺎﯾﻒ ﮐﺎوﺷ ﺮ وب آﻧﺴﺖ ﮐﻪ ﭘﺲ از درﯾﺎﻓﺖ ﻓﺎﯾﻞ اﺻﻠ ﺳﻨﺪ و

14

ﭘﺮدازش آن، ﺗﻤﺎﻣ ﻓﺎﯾﻠﻬﺎی ارﺟﺎع ﺷﺪه را ﻧﯿﺰ ﺑﻪ ﺗﻔﮑﯿ از ﺳﺮور درﺧﻮاﺳﺖ و درﯾﺎﻓﺖ ﻧﻤﺎﯾﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ ﺻﻔﺤﻪ را ﺗﻤﺎم و ﮐﻤﺎل ﻧﻤﺎﯾﺶ دﻫﺪ. در واﻗ ﻗﺴﻤﺖ ﻋﻤﺪه ﺑﺎر ﺷﺪن ﻫﺮ ﺻﻔﺤﻪ وب ﻣﺮﺑﻮط ﺑﻪ درﯾﺎﻓﺖ ﻓﺎﯾﻠﻬﺎی ﺟﺎﻧﺒﯽ ﭘﺮ ﺣﺠﻢ آن – ﻣﺎﻧﻨﺪ ﺗﺼﺎوﯾﺮ – اﺳﺖ و ﺳﻨﺪ HTML ﺣﺠﻢ ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﻧﺪارد.

٢٬۴٬٣ CSS ﭼﻨﺪﮔﺎﻫﯿﺴﺖ ﮐﻪ در راﺳﺘﺎی ﺗﻔﮑﯿ ﻣﺤﺘﻮی از ﻗﺎﻟﺐ ﺑﻨﺪی، اﺳﺘﻔﺎده از ﺑﺮﭼﺴﺐﻫﺎی

ﻗﺎﻟﺐﺑﻨﺪی HTML ﯾ رﻓﺘﺎر ﻧﺎﻣﻄﻠﻮب ﺗﻠﻘ ﻣ ﺷﻮد و ﮐﻠﯿﻪ ﻗﺎﻟﺐ ﺑﻨﺪی ﺻﻔﺤﺎت وب ﺑﻪ

CSS ﺳﭙﺮده ﺷﺪه اﺳﺖ. CSS ﻣﺨﻔﻒ ﻋﺒﺎرت Casacading Style Sheets اﺳﺖ، ﺑﻪ ﻣﻌﻨ

ﺻﻔﺤﺎت ﻗﺎﻟﺐ ﺑﻨﺪی ﮐﺮﮐﺮهای، ﮐﻪ ﺑﺮ روی ﯾ ﺪﯾ ﺮ ﺳﻮار ﻣ ﺷﻮﻧﺪ و ﻗﺎﻟﺐ را ﺗﺸ ﯿﻞ ﻣ دﻫﻨﺪ.

ﺷﻞ ٨ ﮐﻠﯿﺪواژهﻫﺎی ﻣﻄﺮح در CSS، ﯾ ﻃﺮاح وب ﺑﺎﯾﺪ ﺑﻪ اﯾﻦ ﻣﻔﺎﻫﯿﻢ ﻣﺴﻠﻂ ﺑﺎﺷﺪ

در ﮔﺬﺷﺘﻪ ﻫﻨﮕﺎم ﮐﺎرﺑﺮدﻫﺎی اﺑﺘﺪای HTML، ﺟﻬﺖ ﺗﻐﯿﯿﺮ رﻧﮓ ﯾ ﻣﺘﻦ از ﺑﺮﭼﺴﺐ font اﺳﺘﻔﺎده ﻣ ﺷﺪ. اﯾﻦ رﻓﺘﺎر دﯾ ﺮ ﻣﻄﻠﻮب ﻧﯿﺴﺖ زﯾﺮا از ﯾ ﺳﻨﺪ HTML اﻧﺘﻈﺎر ﻣ رود

ﮐﻪ ﻣﺤﺘﻮای ﻣﻨﻄﻘ و ﻣﻌﻨ دار ﺻﻔﺤﻪ را در ﺑﺮ داﺷﺘﻪ ﺑﺎﺷﺪ. اﻣﺮوزه HTML ﺗﻨﻬﺎ ﺗﻮﺳﻂ

اﻧﺴﺎنﻫﺎ ﻣﺼﺮف ﻧﻤ ﺷﻮد و ﺑﺴﯿﺎری ﻧﺮماﻓﺰارﻫﺎ و ﻣﺎﺷﯿﻦﻫﺎ ﻫﺴﺘﻨﺪ ﮐﻪ اﯾﻦ اﺳﻨﺎد را درﯾﺎﻓﺖ

15

ﮐﺮده، ﺗﺠﺰﯾﻪ و ﺗﺤﻠﯿﻞ ﻣ ﮐﻨﻨﺪ. ﺑﺮای اﯾﻦ اﺑﺰار ﻗﺎﻟﺐ ﺑﻨﺪی ﺻﻔﺤﻪ اﻫﻤﯿﺖ ﺧﺎﺻ ﻧﺪارد و

ﺗﻤﺮﮐﺰ آﻧﻬﺎ ﺑﺮ روی ﻣﺤﺘﻮاﺳﺖ.

CSS در ﻫﺮ دﺳﺘﻮر ﺧﻮد، ﺑﻪ ﯾ ﯾﺎ ﭼﻨﺪ ﺑﺮﭼﺴﺐ از ﯾ ﻓﺎﯾﻞ HTML ارﺟﺎع ﻣ دﻫﺪ و ﺑﺎ

اﺳﺘﻔﺎده از ﺻﻔﺎت ﺧﺎﺻ رﻓﺘﺎرﻫﺎی ﻧﻤﺎﯾﺸ آﻧﻬﺎ را ﮐﻨﺘﺮل ﻣ ﮐﻨﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﺮای ﻗﺮﻣﺰ

و ﮐﻠﻔﺖ ﮐﺮدن ﺧﻄﻮط ﻣﻮﺟﻮد در ﺟﺪاول ﯾ ﺻﻔﺤﻪ، ﻣ ﺗﻮان از CSS زﯾﺮ ﺑﻬﺮه ﺟﺴﺖ:

table td {

border: 2px solid;

border-color: red;

}

از دﯾ ﺮ ﻣﺰاﯾﺎی CSS آﻧﺴﺖ ﮐﻪ ﺑﺎ ﺳﺎدﮔ ﻣ ﺗﻮان ﺑﺎ ﺑﺎر ﮐﺮدن CSSﻫﺎی ﻣﺨﺘﻠﻒ

ﺑﺮای ﯾ ﺻﻔﺤﻪ، ﻗﺎﻟﺐﻫﺎی ﻣﺨﺘﻠﻔ ﺑﺪان داد. ﻧﮑﺘﻪ ﺣﺎﺋﺰ اﻫﻤﯿﺖ CSS از دﯾﺪﮔﺎه اﻣﻨﯿﺖ وب

آﻧﺴﺖ ﮐﻪ ﺻﻔﺎت آن ﻣ ﺗﻮاﻧﻨﺪ ﻣﻘﺎدﯾﺮ ﻣﺘﻐﯿﺮ ﻧﯿﺰ درﯾﺎﻓﺖ ﮐﻨﻨﺪ. اﯾﻦ ﻣﻘﺎدﯾﺮ ﻣﺘﻐﯿﺮ ﺗﻮﺳﻂ

Javascript اﺟﺮا و ﭘﺮدازش ﻣ ﺷﻮد و اﻣ ﺎن اﺟﺮای ﮐﺪ در ﻓﺎﯾﻞﻫﺎی CSS را ﻧﯿﺰ ﻓﺮاﻫﻢ ﻣ -

آورد .

٢٬۴٬۴ Javascript ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﻗﺒﻼ ذﮐﺮ ﺷﺪ، ﺟﺎواﺳ ﺮﯾﭙﺖ ﺑﺎ اﻧﺸﻌﺎب از ECMAScript ﺑﻪ ﻋﻨﻮان زﺑﺎﻧ

ﺑﺮای اﻓﮑﺖ دادن ﺑﻪ ﺻﻔﺤﺎت اﯾﺴﺘﺎی وب (HTML) در ﺳﺎل ١٩٩۴ ﻂﺳﻮﺗ Netscape اﯾﺠﺎد

ﮔﺮدﯾﺪ. در ﺳﺎل ١٩٩۶ ﻫﻢ ﻣﺎﯾ ﺮوﺳﺎﻓﺖ اﯾﻦ ﺗﮑﻨﻮﻟﻮژی را در ﮐﺎوﺷ ﺮ IE ﺧﻮد اﺿﺎﻓﻪ ﻧﻤﻮد.

16

ﺷﻞ9 ﻧﻤﺎﯾﻪ jQuery، ﻣﺤﺒﻮبﺗﺮﯾﻦ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺟﺎواﺳﺮﯾﭙﺖ

ﺟﺎواﺳ ﺮﯾﭙﺖ ﯾ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯿﺴﺖ ﮐﻪ ﻣﺘﻐﯿﺮﻫﺎی آن ﻧﻮع ﭘﻮﯾﺎ دارﻧﺪ، ﻣﺒﺘﻨ ﺑﺮ ﺷ ء

(Object Based) اﺳﺖ و ﺗﻮﺳﻂ ﻣﻔﺴﺮ اﺟﺮا ﻣ ﮔﺮدد. ﺗﻮاﺑﻊ ﺗﻮدرﺗﻮ و Closure ﻧﯿﺰ ﺗﻮﺳﻂ

اﯾﻦ زﺑﺎن ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺷﻮﻧﺪ.

ﺗﻔﺎوت ﻋﻤﺪه ﺟﺎواﺳ ﺮﯾﭙﺖ و ECMAScript در وﺟﻮد ﭼﻨﺪﯾﻦ ﺷ ء ﺳﻄ اول در

ﺟﺎواﺳ ﺮﯾﭙﺖ اﺳﺖ، ﮐﻪ ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮ وب ﺑﺮای آن ﻣﻬﯿﺎ ﻣ ﮔﺮدد. ﻣﻬﻤﺘﺮﯾﻦ اﯾﻦ اﺷﯿﺎء

ﺷ ء document و window اﺳﺖ ﮐﻪ اوﻟ DOM ﺳﻨﺪ HTML را در اﺧﺘﯿﺎر ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ

ﻗﺮار ﻣ دﻫﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ اﺟﺰای ﺻﻔﺤﻪ را ﺗﻐﯿﯿﺮ دﻫﺪ و دوﻣ ﭘﻨﺠﺮه ﮐﺎوﺷ ﺮ را در اﺧﺘﯿﺎر ﺑﺮﻧﺎﻣﻪ -

ﻧﻮﯾ ﺲ ﻣ ﮔﺬارد ﺗﺎ ﺑﺎ وﯾﮋﮔ ﻫﺎ و اﺑﻌﺎد آن ﺗﻌﺎﻣﻞ داﺷﺘﻪ ﺑﺎﺷﺪ.

ﺟﺎواﺳ ﺮﯾﭙﺖ زﺑﺎن ﻣﺤﺪودﯾﺴﺖ و اﻣ ﺎن دﺳﺘﺮﺳ ﺑﻪ ﺳﯿﺴﺘﻢ ﻓﺎﯾﻞ و ﺳﺨﺖ اﻓﺰارﻫﺎی

ﺑﺴﺘﺮ ﺧﻮد را ﻧﺪارد و ﺗﺎ ﻗﺒﻞ از AJAX اﺟﺎزه دﺳﺘﺮﺳ ﺑﻪ ﻣﻨﺎﺑﻊ اﯾﻨﺘﺮﻧﺖ را ﻫﻢ – ﺑﻪ ﺻﻮرت

ﻣﺴﺘﻘﯿﻢ – ﻧﺪاﺷﺖ. در ﺣﺎل ﺣﺎﺿﺮ دﺳﺘﻪ ﺑﺴﯿﺎر ﻣﻬﻤ از ﻣﺨﺎﻃﺮات وب ﺑﺎ ﻧﺎم XSS ﺑﺮ اﺳﺎس

اﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﺑﻨﺎ ﺷﺪهاﻧﺪ.

ﺟﺎواﺳ ﺮﯾﭙﺖ ﺑﺮای ﺗﻌﺎﻣﻞ ﺑﻬﺘﺮ ﺑﺎ ﮐﺎرﺑﺮ و ﺻﻔﺤﻪ، از ﺗﻌﺪادی رﺧﺪاد (Event) ﺑﻬﺮه ﻣ -

ﮔﯿﺮد ﮐﻪ ﺑﺎ اﺗﻔﺎق اﻓﺘﺎدن ﻫﺮﮐﺪام از آﻧﻬﺎ ﯾ ﮐﺪ ﺟﺎواﺳ ﺮﯾﭙﺖ ﻣ ﺗﻮان اﺟﺮا ﮔﺮدد. ﺑﻪ ﻋﻨﻮان

ﻣﺜﺎل در ﺻﻮرﺗ ﮐﻪ ﺑﺨﻮاﻫﯿﻢ ﻫﻨﮕﺎﻣ ﮐﻪ ﮐﺎرﺑﺮ ﻧﺸﺎﻧﮕﺮ ﻣﺎوس را ﺑﺮ روی ﯾ ﺗﺼﻮﯾﺮ ﻣﻨﺘﻘﻞ

ﮐﺮد، ﭘﯿﺎﻣ ﺑﻪ وی ﻧﺸﺎن دﻫﯿﻢ ﻣ ﺗﻮاﻧﯿﻢ از ﺟﺎواﺳ ﺮﯾﭙﺖ زﯾﺮ اﺳﺘﻔﺎده ﻧﻤﺎﯾﯿﻢ:

17

ﺑﻪ دﻟﯿﻞ ﻣﺤﺒﻮﺑﯿﺖ وب، ﺳﺎدﮔ ﺟﺎواﺳ ﺮﯾﭙﺖ و ﻗﺪﯾﻤ ﺑﻮدن و اﺳﺘﺎﻧﺪارد ﺑﻮدن

آن، اﮐﻨﻮن ﺑﺴﯿﺎری از ﺑﺮﻧﺎﻣﻪﻫﺎی ﻣﺨﺘﻠﻒ (ﻏﯿﺮ وﺑﯽ) از اﯾﻦ ﺗﮑﻨﻮﻟﻮژی و زﺑﺎن اﺳﺘﻔﺎده ﻣ -

ﮐﻨﻨﺪ .

٢٬۴٬۵ AJAX ﻣﺨﻔﻒ ﻋﺒﺎرت Asynchronous Javascript And XML آژاﮐﺲ ﺗﮑﻨﻮﻟﻮژی ارﺗﺒﺎط

ﺟﺎواﺳ ﺮﯾﭙﺖ ﺑﺎ ﺳﺮور ﺧﻮد ﺟﻬﺖ درﯾﺎﻓﺖ داده و ﻧﻤﺎﯾﺶ داده ﺑﺪون ﺑﺮوزرﺳﺎﻧ ﺻﻔﺤﻪ اﺳﺖ.

ﺷﻞ ١٠ ﻧﻤﺎﯾﻪ آژاﮐﺲ

18

ﺑﻪ دﻟﯿﻞ اﯾﻨﮑﻪ در اﺑﺘﺪا دادهﻫﺎی درﯾﺎﻓﺘ از ﻧﻮع XML ﺑﻮدهاﻧﺪ و ﺗﻮﺳﻂ ﺟﺎواﺳ ﺮﯾﭙﺖ

ﭘﺮدازش ﺷﺪه ﺑﻪ ﻧﻮع دﻟﺨﻮاه ﺗﺒﺪﯾﻞ ﻣ ﺷﺪﻧﺪ، اﯾﻦ ﺗﮑﻨﻮﻟﻮژی «ﺟﺎواﺳ ﺮﯾﭙﺖ آﺳﻨﮑﺮون ﺑﻪ

ﻫﻤﺮاه XML» ﻧﺎم ﮔﺮﻓﺘﻪ اﺳﺖ. در ﺣﺎل ﺣﺎﺿﺮ ﺑﯿﺸﺘﺮ از ﻗﺎﻟﺐ JSON ﺑﺮای درﯾﺎﻓﺖ اﻃﻼﻋﺎت

ﺗﻮﺳﻂ آزاﮐﺲ اﺳﺘﻔﺎده ﻣ ﺷﻮد.

JSON ﻫﻢ ﺣﺠﻢ ﺑﺴﯿﺎر ﮐﻤﺘﺮی دارد ﻫﻢ ﺑﻪ ﺻﻮرت ﭘﯿﺶ ﻓﺮض ﺗﻮﺳﻂ ﻣﻔﺴﺮ ﺟﺎواﺳ ﺮﯾﭙﺖ

ﻗﺎﺑﻞ ﭘﺮدازش اﺳﺖ. ﯾ ﻧﻤﻮﻧﻪ داده JSON ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ:

{ “key”:”value”,

“key2”:”value2”,

“key3”: {

“key3-1”:”value3-1”,

“key3-2”:”value3-2” }

}

ﻟﺬا ﺑﺎ داﺷﺘﻦ اﯾﻦ داده ﺑﻪ ﺻﻮرت ﯾ ﻣﺘﻦ درﯾﺎﻓﺖ ﺷﺪه از ﺳﺮور، ﺑﺎ دﺳﺘﻮر زﯾﺮ ﺑﻪ ﺳﺎدﮔ

ﻣ ﺗﻮان آﻧﺮا در ﻗﺎﻟﺐ ﯾ ﻣﺘﻐﯿﺮ ﺟﺎواﺳ ﺮﯾﭙﺖ درآورد:

eval( “ variable = “+jsondata)

ﻗﺒﻞ از وﺟﻮد آژاﮐﺲ، ﺟﺎواﺳ ﺮﯾﭙﺖ ﻣ ﺗﻮاﻧﺴﺖ ﺑﺎ اﻓﺰودن ﯾ اﻟﻤﺎن ﺑﻪ ﺻﻔﺤﻪ

داده ﭘﻮﯾﺎﯾﯽ از ﺻﻔﺤﻪ وب را ﺑﺎر ﻧﻤﺎﯾﺪ، اﻣﺎ اﻣ ﺎن داﺷﺘﻦ اﯾﻦ داده در ﮐﺪ ﺟﺎواﺳ ﺮﯾﭙﺖ ﺑﻪ

ﺳﺎدﮔ ﻓﺮاﻫﻢ ﻧﺒﻮد. ﺑﻪ ﻋﺒﺎرت دﻗﯿﻖ ﺟﺎواﺳ ﺮﯾﭙﺖ اﻣ ﺎن ارﺳﺎل ﯾ درﺧﻮاﺳﺖ ﺑﻪ ﺳﺮور را

داﺷﺖ وﻟ اﻣ ﺎن ﻣﺸﺎﻫﺪه ﭘﺎﺳ آﻧﺮا ﻧﺪاﺷﺖ.

19

اﻣﺮوز ﻫﻢ ﺟﺎواﺳ ﺮﯾﭙﺖ و آژاﮐﺲ ﺗﻨﻬﺎ در ﻣﺤﺪوده Same Origin Policy ﻣ ﺗﻮاﻧﻨﺪ ﺑﺎ

ﺳﺮور ﺧﻮد ﺗﻤﺎس ﺣﺎﺻﻞ ﻧﻤﺎﯾﻨﺪ، ﺑﺪﯾﻦ ﻣﻌﻨ ﮐﻪ ﺟﺎواﺳ ﺮﯾﭙﺖ از ﻫﺮ ﺳﺮوری ﮐﻪ ﺑﺎر ﺷﺪه

ﺑﺎﺷﺪ ﺗﻨﻬﺎ ﺑﺎ ﻫﻤﺎن ﺳﺮور اﻣ ﺎن ارﺗﺒﺎط دارد.

اﺳﺘﻔﺎده از JSONP ﯾﺎ JSON with Padding ﯾ از روﺷﻬﺎی ﻣﺎﻫﯿﺘﺎ ﻧﺎ اﻣﻦ دور زدن

Same Origin Policy در ﻫﻨﮕﺎﻣﯿﺴﺖ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﺑﺮ روی ﭼﻨﺪ ﺳﺎﯾﺖ ﺑﻪ ﻃﻮر ﺗﻮزﯾﻊ

ﺷﺪه ﮐﺎر ﻣ ﮐﻨﺪ.

٢٬۴٬۶ Web Server وب ﺳﺮور، ﺗﮑﻨﻮﻟﻮژی ﺳﺮوﯾﺲ دادن ﭘﺮوﺗﮑﻞﻫﺎی HTTP و HTTPS اﺳﺖ. ﯾ وب

ﺳﺮور ﭘﺲ از اﺟﺮا، ﺑﺮ روی ﭘﻮرتﻫﺎی ﻣﺸﺨﺺ اﯾﻦ دو ﭘﺮوﺗﮑﻞ (ﺑﻪ ﺗﺮﺗﯿﺐ ٨٠ و ۴۴٣) ﻣﻨﺘﻈﺮ

ﻣ ﻣﺎﻧﺪ و درﺧﻮاﺳﺖﻫﺎی HTTP درﯾﺎﻓﺖ ﺷﺪه را ﭘﺎﺳ ﻣ ﮔﻮﯾﺪ.

ﺷﻞ ١١ ﻧﻤﺎﯾﯽ از ﺑﺎر ﺷﺪن ﯾ ﺳﻨﺪ از دﯾﺪ وب ﺳﺮور

20

HTTPS ﻫﻤﺎن ﭘﺮوﺗﮑﻞ HTTP اﺳﺖ ﮐﻪ در ﻻﯾﻪ زﯾﺮﯾﻦ ﺧﻮد ﺑﺮ روی ﭘﺮوﺗﮑﻞ SSL (ﺎﯾ

ﻧﺴﺨﻪ ﺟﺪﯾﺪ آن TLS) ﺗﮑﯿﻪ ﻣ ﺪﻨﮐ. اﯾﻦ ﭘﺮوﺗﮑﻞﻫﺎ وﻇﯿﻔﻪ رﻣﺰﮔﺬاری دادهﻫﺎ را ﺑﺮ ﻋﻬﺪه

دارﻧﺪ، ﻟﺬا در ﺻﻮرﺗ ﮐﻪ ﺷﺨﺺ ﺛﺎﻟﺜ ارﺗﺒﺎط اﯾﻨﮕﻮﻧﻪ را ﺷﻨﻮد ﮐﻨﺪ، دادهﻫﺎی ﻧﺎﻣﻔﻬﻮم

درﯾﺎﻓﺖ ﻣ ﮐﻨﺪ و ﻧﻤ ﺗﻮاﻧﺪ ﺗﺸﺨﯿﺺ دﻫﺪ ﮐﻪ ﻣﺨﺎﻃﺐ در ﺣﺎل ﻣﺮور ﭼﻪ ﺳﺎﯾﺘ و ﭼﻪ ﺻﻔﺤﺎﺗ

اﺳﺖ، ﺑﻠ ﻪ ﺗﻨﻬﺎ ﺑﻪ آی ﭘﯽ ﻣﻘﺼﺪ دﺳﺘﺮﺳ داﺷﺘﻪ ﻣ ﺗﻮاﻧﺪ ﺳﺮور ﻣﺨﺎﻃﺐ را ﺗﺸﺨﯿﺺ دﻫﺪ.

ﺳﺮورﻫﺎی وب ﻣﺤﺘﻮا را ﺑﻪ دو ﺻﻮرت اﯾﺴﺘﺎ و ﭘﻮﯾﺎ ﺑﻪ ﮐﺎرﺑﺮان ﺗﺤﻮﯾﻞ ﻣ دﻫﻨﺪ. در ﻣﺪل

اﯾﺴﺘﺎ، ﺳﺮور ﺑﺎ ﺗﺸﺨﯿﺺ ﻣﻘﺼﺪ درﺧﻮاﺳﺖ، ﻓﺎﯾﻞ ﻣﺮﺑﻮﻃﻪ را از ﻃﺮﯾﻖ ﭘﺮوﺗﮑﻞ HTTP ﻪﺑ

ﻣﺸﺘﺮی ﺗﺤﻮﯾﻞ ﻣ دﻫﺪ. ﻣﻌﻤﻮﻻ ﺳﺮورﻫﺎ ﺑﺎ اﺳﺘﻔﺎده از ﺗﻨﻈﯿﻤﺎت ﺧﺎﺻ ﺑﻪ ﺗﻌﺪادی

VirtualHost ﺗﻘﺴﯿﻢ ﻣ ﺷﻮﻧﺪ ﺗﺎ ﭼﻨﺪﯾﻦ ﺳﺎﯾﺖ ﺑﺘﻮاﻧﻨﺪ ﺑﺮ روی ﯾ ﺳﺮور ﻗﺮار ﺑ ﯿﺮﻧﺪ.

در ﻣﺪل ﭘﻮﯾﺎ، ﺳﺮور ﺑﺎ ﺗﺸﺨﯿﺺ ﻧﻮع درﺧﻮاﺳﺖ ﻣﺸﺘﺮی و ﺑﺮ اﺳﺎس ﺗﻨﻈﯿﻤﺎت ﺧﻮد، ﻗﻄﻌﻪ

ﮐﺪ ﺧﺎﺻ را اﺟﺮا ﻣ ﻧﻤﺎﯾﺪ و ﺧﺮوﺟ آﻧﺮا ﺑﻪ ﮐﺎرﺑﺮ ﺗﺤﻮﯾﻞ ﻣ دﻫﺪ. ﮐﺪ ﻣﺮﺑﻮﻃﻪ ﻣﻌﻤﻮﻻ ﺑﺎ ﯾ

از زﺑﺎنﻫﺎی ﺳﻤﺖ ﺳﺮور (Server Side Includes) ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺳﺮور وب ﻧﻘﻄﻪ ﺷﺮوع ﯾ ﭘﺮوﺳﻪ وب اﺳﺖ، ﺳﺮﻋﺖ و ﮐﺎراﯾﯽ آن اﻫﻤﯿﺖ

ﺑﺴﺰاﯾﯽ دارد. درﺻﺪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ از ﺣﻤﻼت ﺟﻠﻮﮔﯿﺮی از ﺳﺮوﯾﺲ (Denial of Service) ﺮﺑ

روی ﺳﺮورﻫﺎی وب اﻧﺠﺎم ﻣ ﮔﯿﺮﻧﺪ، زﯾﺮا ﺑﻪ ازای ﻫﺮ درﺧﻮاﺳﺖ ﮐﺎرﺑﺮ، ﺳﺮور ﺑﺎﯾﺪ ﺣﺠﻢ ﻗﺎﺑﻞ

ﺗﻮﺟﻬ ﮐﺎر اﻧﺠﺎم دﻫﺪ.

از دﯾﺪﮔﺎه ﮐﺎراﯾﯽ، ﺳﺮورﻫﺎ ﺑﻪ دو دﺳﺘﻪ Threaded و Processed ﺗﻘﺴﯿﻢ ﻣ ﺷﻮﻧﺪ. در

ﻧﻮع اول، ﺳﺮور ﻫﺮ درﺧﻮاﺳﺖ را ﺑﻪ ﯾ ﻧ ﺟﺪاﮔﺎﻧﻪ اﺧﺘﺼﺎص ﻣ دﻫﺪ و ﻧ ﻣﺮﺑﻮﻃﻪ وﻇﯿﻔﻪ

اﺟﺮای درﺧﻮاﺳﺖ را دارد.در ﻣﺪل دوم ﺳﺮور ﺑﻪ ازای ﻫﺮ درﺧﻮاﺳﺖ ﯾ ﮐﺎرﺑﺮ، ﯾ ﻓﺮآﯾﻨﺪ

ﺪﯾﺪﺟ اﯾﺠﺎد ﻣ ﮐﻨﺪ و ﺳﺮوﯾﺲدﻫ ﮐﺎرﺑﺮ را ﺑﻪ آن ﻓﺮآﯾﻨﺪ ﻣ ﺳﭙﺎرد.

21

ﭘﺮ واﺿ اﺳﺖ ﮐﻪ روش اول ﺑﺎزدﻫ ﺑﺴﯿﺎر ﺑﺎﻻﺗﺮی دارد و ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻪﺗﺮی ﮐﺴﺐ

ﻣ ﮐﻨﺪ، وﻟ اﮔﺮ ﯾ از ﻧ ﻫﺎ دﭼﺎر ﻣﺸ ﻞ ﺷﻮد، ﯾﺎ ﻣﻌﻀﻞ اﻣﻨﯿﺘ ﺑﺮای آن ﭘﯿﺶ ﺑﯿﺎﯾﺪ، ﺗﻤﺎم

ﻧ ﻫﺎی دﯾ ﺮ ﺗﺤﺖ ﺗﺎﺛﯿﺮ ﻗﺮار ﺧﻮاﻫﻨﺪ ﮔﺮﻓﺖ. در ﻣﺪل ﻓﺮآﯾﻨﺪی در ﺻﻮرﺗ ﮐﻪ ﯾ از ﻓﺮآﯾﻨﺪﺎﻫ

ﻫ ﺷﻮد ﯾﺎ ﻣﺸ ﻞﺳﺎز ﺑﺎﺷﺪ، ﻣﺸ ﻠ ﺑﺮای ﻣﺎﺑﻘ ﻓﺮآﯾﻨﺪﻫﺎ ﻣﺘﺼﻮﯾﺮ ﻧﯿﺴﺖ.

ﻫﻤﭽﻨﯿﻦ از ﻧﻈﺮ ﻣﺪ اﺟﺮا ﻣ ﺗﻮان وب ﺳﺮورﻫﺎ را ﺑﻪ دو دﺳﺘﻪ ﻫﺴﺘﻪای و ﮐﺎرﺑﺮی ﺗﻘﺴﯿﻢ

ﻧﻤﻮد. وب ﺳﺮورﻫﺎی ﻫﺴﺘﻪای، در ﺣﻠﻘﻪ ﺻﻔﺮ ﺳﯿﺴﺘﻢ و ﺑﺎ دﺳﺘﺮﺳ ﻫﺴﺘﻪ (Kernel) اﺟﺮا

ﻣ ﺷﻮﻧﺪ، ﻟﺬا ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﻣﻼﺣﻈﻪای دارﻧﺪ. ﻣﺪل ﮐﺎرﺑﺮی در ﻓﻀﺎی ﮐﺎرﺑﺮ (ﺣﻠﻘﻪ ﯾ ﺑﻪ ﺑﺎﻻ)

اﺟﺮا ﻣ ﮔﺮدد و ﺳﺮﻋﺖ ﺑﺴﯿﺎر ﮐﻤﺘﺮی دارد.ﻣﺪل ﻫﺴﺘﻪای در ﺻﻮرﺗ ﮐﻪ دﭼﺎر ﺣﻤﻠﻪ ﯾﺎ ﻣﻌﻀﻞ

ﺷﻮد، ﺑﺎﻋﺚ ﺗﻮﻗﻒ (Halt) ﮐﻞ ﺳﯿﺴﺘﻢ ﻣ ﺷﻮد و ﻗﺎﺑﻞ ﺑﺎزﯾﺎﺑﯽ ﻧﯿﺴﺖ. ﻣﺪل ﮐﺎرﺑﺮی در ﻣﻘﺎﺑﻞ

اﯾﻦ ﻣﺸ ﻼت ﻣﻘﺎومﺗﺮ اﺳﺖ.

وب ﺳﺮورﻫﺎی ﻣﻌﺮوﻓ ﮐﻪ در ﺣﺎل ﺣﺎﺿﺮ در ﻓﻀﺎی اﯾﻨﺘﺮﻧﺖ وﺟﻮد دارﻧﺪ، ﻋﺒﺎرﺗﻨﺪ از:

٢٬٤٬٦٬١ Apache در ﺣﺎل ﺣﺎﺿﺮ ﻧﺴﺨﻪ آن ٢٬۴ ﺑﻮده، ﺗﻮﺳﻂ ﺑﻨﯿﺎد ﻣﺘﻦ ﺑﺎز آﭘﺎﭼ اراﺋﻪ ﻣ ﺷﻮد. آﭘﺎﭼ در

ﻣﺪ ﮐﺎرﺑﺮی و ﻣﺒﺘﻨ ﺑﺮ ﻓﺮآﯾﻨﺪ اﺟﺮا ﻣ ﺷﻮد. ﺑﯿﺶ از ۶۵% ﮐﻞ وب ﺳﺮورﻫﺎی اﯾﻨﺘﺮﻧﺘ از اﯾﻦ

ﻧﺮماﻓﺰار اﺳﺘﻔﺎده ﻣ ﻧﻤﺎﯾﻨﺪ. آﭘﺎﭼ اﻣ ﺎن اﺟﺮا و ﭘﺸﺘﯿﺒﺎﻧ ﺗﻤﺎم ﻣﺪﻫﺎ و زﺑﺎنﻫﺎی وب را

داراﺳﺖ.

22

ﺷﻞ ١٢ ﻧﻤﺎﯾﻪ آﭘﺎﭼ (وب ﺳﺮور)

٢٬٤٬٦٬٢ (Internet Information Services (IIS وب ﺳﺮور ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﮐﻪ ﻣﻌﻤﻮﻻ ﺑﺮ ﺑﺴﺘﺮ ﻣﺎﯾ ﺮوﺳﺎﻓﺘ اﺟﺮا ﻣ ﺷﻮد. ﻣﺪ اﺟﺮای آن در

ﻫﺴﺘﻪ اﺳﺖ و ﻣﺒﺘﻨ ﺑﺮ ﻧ ﻋﻤﻞ ﻣ ﮐﻨﺪ. ﮐﻤﺘﺮ از ١۵% وب ﺳﺎﯾﺖﻫﺎی دﻧﯿﺎ از اﯾﻦ ﺳﺮور

اﺳﺘﻔﺎده ﻣ ﻧﻤﺎﯾﻨﺪ.

ﺷﻞ ١٣ ﺻﻔﺤﻪ ﭘﯿﺸﻔﺮض IIS 7

23

٢٬٤٬٦٬٣ nginx ﯾ ﺳﺮور ﻣﺘﻦ ﺑﺎز و ﺳﺎده ﺗﻮﺳﻂ ﯾ ﺗﻮﺳﻌﻪ دﻫﻨﺪه روﺳ . ﺗﻘﺮﯾﺒﺎ ١٠ درﺻﺪ ﺳﺎﯾﺘﻬﺎی

اﯾﻨﺘﺮﻧﺘ از اﯾﻦ ﺳﺮور اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ. ﻣﺰﯾﺖ اﺻﻠ اﯾﻦ ﺳﺮور ﺳﺮﻋﺖ ﺑﺴﯿﺎر ﺑﺎﻻ و ﭘﯿﭽﯿﺪﮔ

ﺑﺴﯿﺎر ﭘﺎﯾﯿﻦ آن اﺳﺖ. ﻣﻌﻤﻮﻻ ﺟﺎﯾ ﺰﯾﻨ ﺑﺮای آﭘﺎﭼ ﺗﻠﻘ ﻣ ﺷﻮد.

ﺷﻞ ١٤ ﻧﻤﺎﯾﻪ nginx

· Google Web Server : وب ﺳﺮور ﻣﻮرد اﺳﺘﻔﺎده ﺗﻮﺳﻂ ﮔﻮﮔﻞ ﮐﻪ ﻣﺘﻦ ﺑﺎز ﺷﺪه

اﺳﺖ. ﺣﺪود ٣% ﺳﺎﯾﺖﻫﺎی اﯾﻨﺘﺮﻧﺘ از اﯾﻦ ﺗﮑﻨﻮﻟﻮژی اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ ﮐﻪ اﮐﺜﺮ

آﻧﻬﺎ ﻣﺘﻌﻠﻖ ﺑﻪ ﮔﻮﮔﻞ اﺳﺖ.

· lighttpd: ﻧﺎم ﻓﺎﯾﻞ اﺟﺮاﯾﯽ آﭘﺎﭼ ، httpd ﺑﻪ ﻣﻌﻨ HTTP Daemon ﯾﺎ ﻏﻮل

اراﺋﻪ دﻫﻨﺪه اچ ﺗ ﺗ ﭘﯽ اﺳﺖ. وب ﺳﺮور lighttpd ﺑﺎ ﻫﺪف اﯾﺠﺎد ﻧﺴﺨﻪ ﻣﺸﺎﺑﻪ

وﻟ ﺑﺴﯿﺎر ﺳﺎده و ﺳﺒ آﭘﺎﭼ اﯾﺠﺎد ﺷﺪه اﺳﺖ و ﺑﺎ روی ﮐﺎر آﻣﺪن nginx روﻧﻖ

ﺧﻮد را از دﺳﺖ داده اﺳﺖ.

24

ﺷﻞ ١٥ درﺻﺪ ﻣﺼﺮف وب ﺳﺮورﻫﺎی ﻣﺨﺘﻠﻒ در ﺳﺎﻟﻬﺎی ﻣﺨﺘﻠﻒ (ﮔﺰارش ﺷﺪه ﺗﻮﺳﻂ ﻧﺖ ﮐﺮاﻓﺖ)

از وبﺳﺮورﻫﺎی ﻣﻌﺮﻓ ﺷﺪه، ﺗﻤﺎم آﻧﻬﺎ ﺑﺮ روی ﻫﻤﻪ ﺳ ﻮﻫﺎ ﻗﺎﺑﻞ اﺟﺮا ﻫﺴﺘﻨﺪ ﻣ ﺮ IIS

ﮐﻪ ﺗﻨﻬﺎ ﺑﺮ روی ﻧﺴﺨﻪﻫﺎی ﺳﺮور وﯾﻨﺪوز ﻗﺎﺑﻞ اﺟﺮاﺳﺖ.

٢٬۴٬٧ Server Side Scripts وب اﯾﺴﺘﺎ، اﻣﺮوزه ﺗﻘﺮﯾﺒﺎ از دور ﺧﺎرج ﺷﺪه اﺳﺖ و وبﻫﺎی ﭘﻮﯾﺎ ﺗﻤﺎم اﯾﻨﺘﺮﻧﺖ را ﭘﺮ ﮐﺮده -

اﻧﺪ. ﺣﺘ ﺳﺎﯾﺖ ﻣﻌﺮﻓ ﯾ ﻣﻮﺳﺴﻪ ﺳﺎده ﻧﯿﺰ از اﻣ ﺎﻧﺎت ﭘﻮﯾﺎ ﺟﻬﺖ ﺗﻤﺎس ﺑﺎ ﻣﺸﺘﺮﯾﺎ ن و

ردﮔﯿﺮی آﻧﺎن اﺳﺘﻔﺎده ﻣ ﻧﻤﺎﯾﺪ.

25

در اﺑﺘﺪا از زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﻣﻌﻤﻮﻟ ﻣﺎﻧﻨﺪ C و ++C و Perl ﺑﺮای ﻧﻮﺷﺘﻦ وب ﭘﻮﯾﺎ

اﺳﺘﻔﺎده ﻣ ﺷﺪ. ﺑﻪ اﯾﻦ ﺑﺮﻧﺎﻣﻪﻫﺎ CGI Script ﻣ ﮔﻔﺘﻨﺪ. ﻣﺸ ﻞ اﺻﻠ ﺳ ﺟ آی در اﯾﻦ

ﺑﻮد ﮐﻪ ﻧﻪ ﺗﻨﻬﺎ ﻣﺤﺘﻮای ﺻﻔﺤﻪ ﺧﺮوﺟ ، ﺑﻠ ﻪ ﺳﺮآﯾﻨﺪﻫﺎی HTTP را ﻧﯿﺰ ﺑﺎﯾﺪ ﻣﺪﯾﺮﯾﺖ ﻣ ﮐﺮد.

ﺷﻞ ١٦ ﮔﺮدش ﮐﺎر اﺟﺮای ﯾCGI 

ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﻗﺒﻼ ﻣﺸﺎﻫﺪه ﺷﺪ، ﺳﺮآﯾﻨﺪ درﺧﻮاﺳﺖ HTTP ﺣﺎوی ﭘﺎراﻣﺘﺮﻫﺎی ﻣﻬﻤﯿﺴﺖ

ﮐﻪ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﺑﺎﯾﺪ ﺗﻔﮑﯿ و ﺗﻔﻬﯿﻢ ﺷﻮﻧﺪ. ﻫﻤﭽﻨﯿﻦ ﺑﺪﻧﻪ درﺧﻮاﺳﺖ HTTP ﻣ ﺗﻮاﻧﺴﺖ

ﺣﺎوی دادهﻫﺎی ارﺳﺎﻟ ﺑﻪ ﺳﺮور ﺑﺎﺷﺪ. ﺳﺮآﯾﻨﺪ ﭘﺎﺳ ﻧﯿﺰ ﻣ ﺑﺎﯾﺴﺖ دارای اﺳﺘﺎﻧﺪاردﻫﺎ و

ﻗﻮاﻋﺪ ﺧﺎﺻ ﻣ ﺑﻮد ﮐﻪ رﻋﺎﯾﺖ و اﯾﺠﺎد ﺗﻤﺎﻣ آﻧﻬﺎ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ، ﮐﺎر را ﺑﺴﯿﺎر دﺷﻮار

ﻣ ﮐﺮد.

ﻧﮑﺘﻪ ﺑﺴﯿﺎر ﻣﻬﻢ دﯾ ﺮی ﮐﻪ در وب ﻣﻄﺮح ﺑﻮد، ﺣﺠﻢ زﯾﺎد ﺧﺮوﺟ ﺑﻪ ﻧﺴﺒﺖ ﮐﺪ ﺑﻮد. اﮐﺜﺮ

ﺑﺮﻧﺎﻣﻪﻫﺎی ﺗﺤﺖ وب ﺑﯿﺶ از ٩٠% ﺣﺠﻢ ﮐﺪ ﺧﻮد را ﺑﻪ اﯾﺠﺎد ﺧﺮوﺟ ﻫﺎی ﻻزم اﺧﺘﺼﺎص

26

ﻣ دﻫﻨﺪ و ﺗﻨﻬﺎ ١٠% ﺑﺮای ﭘﺮدازش دادهﻫﺎ و ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﻪ ﺻﺮف ﻣ ﺷﻮد، و اﻣ ﺎﻧﺎت

ﺧﺮوﺟ دادن زﺑﺎنﻫﺎﯾﯽ ﻣﺎﻧﻨﺪ C ﺑﺴﯿﺎر ﻣﺤﺪود و دﺷﻮار ﺑﻮد (printf).

CGI از ﺳﺎل ١٩٩۵ ﻣﻮﺟﻮد ﺑﻮد وﻟ از ﺳﺎل ١٩٩٨ زﺑﺎنﻫﺎی ﺟﺪﯾﺪی ﺑﺎ ﺗﻤﺮﮐﺰ ﺑﺮ روی

ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ وب ﺑﻪ ﻣﯿﺎن آﻣﺪﻧﺪ. ASP ﻣﺎﯾ ﺮوﺳﺎﻓﺖ از ﻗﺪﯾﻤ ﺗﺮﯾﻦ آﻧﻬﺎﺳﺖ. وﯾﮋﮔ ﺑﺎرز اﯾﻦ

زﺑﺎنﻫﺎ در اﯾﻦ اﺳﺖ ﮐﻪ ﺧﻮد ﺳﺮآﯾﻨﺪ و ﺑﺪﻧﻪ درﺧﻮاﺳﺖ HTTP را ﭘﺮدازش ﮐﺮده، در ﻗﺎﻟﺐﻫﺎی

ﺑﺴﯿﺎر ﺳﺎده ﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﺗﺤﻮﯾﻞ ﻣ دﻫﻨﺪ. ﻫﻤﭽﻨﯿﻦ ﺳﺮآﯾﻨﺪﻫﺎی ﭘﺎﺳ را ﺑﻪ ﺳﺎدﮔ ﺑﺮ

اﺳﺎس ﺧﺮوﺟ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر اﯾﺠﺎد و ارﺳﺎل ﻣ ﻧﻤﺎﯾﻨﺪ. ﻫﻤﭽﻨﯿﻦ اﯾﻦ زﺑﺎن-

ﻫﺎ اﮐﺜﺮا اﻣ ﺎن ﺗﻮﺳﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺳﺮﯾﻊ (RAD) را دارا ﻫﺴﺘﻨﺪ ﺗﺎ ﺑﻪ ﺳﺎدﮔ و ﺳﺮﻋﺖ ﺑﺘﻮان

ﺻﻔﺤﺎت وب ﭘﻮﯾﺎ را ﺑﺎ آﻧﻬﺎ اﯾﺠﺎد ﻧﻤﻮد.

زﺑﺎنﻫﺎی ﻣﻄﺮح ﺳﻤﺖ ﺳﺮور ﺑﻪ ﺷﺮح زﯾﺮ ﻫﺴﺘﻨﺪ:

٢٬٤٬٧٬١ PHP ﭘﯽ اچ ﭘﯽ، ﺑﻪ ﻋﻨﻮان ﻣﻌﺮوﻓﺘﺮﯾﻦ و ﭘﺮ اﺳﺘﻔﺎدهﺗﺮﯾﻦ زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﺗﺤﺖ وب، در ﺣﺎل

ﺣﺎﺿﺮ ﺑﯿﺶ از ٧۵ درﺻﺪ ﮐﻞ ﺳﺎﯾﺖﻫﺎی ﭘﻮﯾﺎی اﯾﻨﺘﺮﻧﺖ را از آن ﺧﻮد ﮐﺮده اﺳﺖ. ﭘﯽ اچ ﭘﯽ

زﺑﺎﻧ ﺑﺴﯿﺎر ﻗﺪرﺗﻤﻨﺪ، ﺳﺮﯾﻊ و ﺳﺎده اﺳﺖ.

ﺷﻞ ١٧ ﻧﻤﺎﯾﻪ ﺳﺎده و ﻣﺤﺒﻮب PHP

27

ﻧﻮع دﻫ ﻣﺘﻐﯿﺮﻫﺎ ﺑﻪ ﺻﻮرت آزاد، ﺑﺎﻋﺚ ﻣ ﺷﻮد ﺑﺮﻧﺎﻣﻪﺲﯾﻮﻧ PHP ﺧﻮد را درﮔﯿﺮ

ﻣﺘﻐﯿﺮﻫﺎ و ﻧﻮع آﻧﻬﺎ ﻧﮑﻨﺪ و ﺗﻨﻬﺎ ﺑﻪ داده اﻫﻤﯿﺖ دﻫﺪ. ﻫﻤﭽﻨﯿﻦ ﺗﻤﺎم ﻗﺴﻤﺖﻫﺎی ﯾ ﺑﺮﻧﺎﻣﻪ

ﮐﻪ ﺑﯿﻦ دو ﺑﺮﭼﺴﺐ ﺷﺮوع و ﭘﺎﯾﺎن PHP ﻧﺒﺎﺷﺪ، ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر ﺗﻮﺳﻂ ﻣﻔﺴﺮ آن ﺑﻪ ﻋﻨﻮان

ﺧﺮوﺟ ﺗﻠﻘ ﻣ ﺷﻮد، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﮐﺪ زﯾﺮ ﺑﻪ ﺳﺎدﮔ ﯾ ﻓﺮم اﯾﺠﺎد ﮐﺮده و ﻣﻘﺪار ﻓﯿﻠﺪ ﻧﺎم

آﻧﺮا ﺑﺮ اﺳﺎس دادهﻫﺎی ورودی ﮐﺎرﺑﺮ ﻣﺸﺨﺺ ﻣ ﺳﺎزد :

’ />

ﻫﻤﭽﻨﯿﻦ ﭘﯽ اچ ﭘﯽ دارای داﻣﻨﻪ وﺳﯿﻌ از ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎ و ﻗﻄﻌﻪ ﮐﺪﻫﺎی ﻣﺮﺑﻮط ﺑﻪ

وب اﺳﺖ. ﻣﻬﻤﺘﺮﯾﻦ وﯾﮋﮔ ﭘﯽ اچ ﭘﯽ ﮐﻪ آﻧﺮا ﺗﺎ اﯾﻦ ﺣﺪ ﻣﺘﻤﺎﯾﺰ ﮐﺮدهاﺳﺖ، ﭼﻨﺪﺳ ﻮﯾﯽ ﺑﻮدن

و ﻋﺪم اﺗﮑﺎ ﺑﻪ ﺳ ﻮ اﺳﺖ. ﯾ ﻧﺮماﻓﺰار ﻧﻮﺷﺘﻪ ﺷﺪه ﺗﻮﺳﻂ ﭘﯽ اچ ﭘﯽ، ﺑﺮ روی اﻧﻮاع ﺳﺮورﻫﺎ

ﯾ ﺠﻮر ﮐﺎر ﻣ ﮐﻨﺪ و ﺑﻪ ﻏﯿﺮ از ﯾ ﭘﺎﯾ ﺎه داده ﺳﺎده (ﮐﻪ ﻣﻌﻤﻮﻻ MyQSL اﺳﺖ) اﺣﺘﯿﺎج ﺑﻪ

ﺗﻨﻈﯿﻤﺎت دﯾ ﺮی ﻧﺪارد.

اﮐﺜﺮ ﻧﺮماﻓﺰارﻫﺎی ﻣﺘﻦ ﺑﺎز و ﺑﺴﯿﺎر ﻣﻌﺮوف ﻣﻮﺟﻮد ﺑﺮ روی وب، ﻣﺎﻧﻨﺪ وردﭘﺮس،

ﻼﻣﻮﺟ، ،MyBB و ... ﮐﻪ ﺑﯿﺶ از ٣٠% ﮐﻞ ﺳﺎﯾﺘﻬﺎی اﯾﻨﺘﺮﻧﺘ را از آن ﺧﻮد ﮐﺮده -

اﻧﺪ، ﻣﺒﺘﻨ ﺑﺮ PHP و MySQL ﺪﻨﺘﺴﻫ.

ﭘﯽ اچ ﭘﯽ ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض زﺑﺎن ﺳﺎده و ﺳﻄ ﭘﺎﯾﯿﻨﯿﺴﺖ. اﻣ ﺎﻧﺎت اوﻟﯿﻪ وب و

HTTP درون PHP ﮔﻨﺠﺎﻧﯿﺪه ﺷﺪهاﻧﺪ اﻣﺎ اﻣ ﺎﻧﺎت ﭘﯿﺸﺮﻓﺘﻪﺗﺮ ﮐﻪ اﮐﺜﺮ ﻧﺮماﻓﺰارﻫﺎی اﻣﺮوزی

وب ﺑﻪ آﻧﻬﺎ اﺣﺘﯿﺎج دارد، ﺑﺮ روی زﺑﺎن ﺗﻌﺒﯿﻪ ﻧﺸﺪهاﺳﺖ. از اﯾﻦ رو اﺗﮑﺎ ﺑﻪ ﭼﻬﺎرﭼﻮبﻫﺎی

ﺗﻮﺳﻌﻪ وب (Web Application Framework) در اﯾﻦ زﺑﺎن ﺑﺴﯿﺎر ﺑﺴﯿﺎر ﻣﻌﻤﻮل اﺳﺖ.

28

ﻣﺘﺎﺳﻔﺎﻧﻪ اﮐﺜﺮ اﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎ ، ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﻣﻌﻤﻮﻟ و ﻣﺘﻦﺑﺎز ﻃﺮاﺣ ﺷﺪهاﻧﺪ و

اﯾﻦ اﻣﺮ ﻣﻨﺠﺮ ﺑﻪ ﻋﺪم رﻋﺎﯾﺖ اﺻﻮل اﻣﻨﯿﺘ در اﮐﺜﺮ آﻧﻬﺎ ﮔﺮدﯾﺪه اﺳﺖ.

٢٬٤٬٧٬٢ ASP ASP اوﻟﯿﻪ ﻣﺎﯾ ﺮوﺳﺎﻓﺖ، ﺷﺒﺎﻫﺘ زﯾﺎدی ﺑﻪ PHP داﺷﺖ، ﺑﺎ اﯾﻦ ﺗﻔﺎوت ﮐﻪ ﺗﻨﻬﺎ ﺑﺮ روی

وﯾﻨﺪوز و IIS ﻗﺎﺑﻞ اﺟﺮا ﺑﻮد و ﻫﻤﭽﻨﯿﻦ ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎی ﺟﺎﻧﺒﯽ ﺑﺴﯿﺎر ﮐﻢ و ﻣﺤﺪودی داﺷﺖ. از

ﺳﺎل ٢٠٠٠ ﮐﻪ ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﺑﺴﺘﻪ ﺗﮑﻨﻮﻟﻮژی NET. ﺧﻮد را ﻣﻌﺮﻓ ﻧﻤﻮد، ASP ﺑﺨﺸ از اﯾﻦ

ﺑﺴﺘﻪ ﮔﺮدﯾﺪه ﺑﺎ ﻧﺎم ﺗﺠﺎری ASP.NET اراﺋﻪ ﮔﺮدﯾﺪ.

ﺷﻞ ١٨ ﻧﻤﺎﯾﻪ ASPX

ASP.NET ﺑﯿﺸﺘﺮ از اﯾﻨﮑﻪ ﯾ زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﺑﺎﺷﺪ، ﯾ ﺑﺴﺘﺮ اﺳﺖ. اﯾﻦ ﺑﺴﺘﺮ

ﺗﻮﺳﻂ دو زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﮐﺎرﺑﺮ ﭘﺴﻨﺪ ﻣﺎﯾ ﺮوﺳﺎﻓﺖ، VB.NET و C#.NET ﻗﺎﺑﻞ اﺳﺘﻔﺎده

اﺳﺖ. VB.NET زﺑﺎﻧ ﺑﺴﯿﺎر ﺳﺎده ﺑﺎ ﮐﻤﺘﺮﯾﻦ اﺻﻮل ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯿﺴﺖ ﮐﻪ ﺑﺮای ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن

ﻣﺒﺘﺪی ﺑﺴﯿﺎر ﻣﻄﻠﻮب اﺳﺖ. #C زﺑﺎﻧ ﺳﺎﺧﺖﯾﺎﻓﺘﻪ و ﺑﺮوزﺷﺪه ﺑﺮ اﺳﺎس ++C اﺳﺖ. از

آﻧﺠﺎﯾﯽ ﮐﻪ ﺑﺴﯿﺎری از ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﻣﺤﯿﻂ NET. (در اﯾﺮان) از وی ﺑﯽ اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ،

اﮐﺜﺮ ﺑﺮﻧﺎﻣﻪﻫﺎی اﯾﻦ ﺳ ﻮ ﺑﺴﯿﺎر ﺿﻌﯿﻒ و ﻧﺎ اﻣﻦ ﻃﺮاﺣ ﻣ ﺷﻮد.

وﯾﮋﮔ ﻣﻬﻢ ASP.NET، ﺳﺎدﮔ آن اﺳﺖ. ﺑﯿﺸﺘﺮ ﮐﺎر ﯾ ﺑﺮﻧﺎﻣﻪ ASP.NET را ﻣﺤﯿﻂ

ﺗﻮﺳﻌﻪ ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﻣﻮﺳﻮم ﺑﻪ Visual Studio اﻧﺠﺎم ﻣ دﻫﺪ و ﺣﺠﻢ ﮐﻤﺘﺮی از ﮐﺎر ﺑﻪ

ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻣﺤﻮل ﻣ ﺷﻮد. ﻧﮑﺎت ﻣﻨﻔ آن اﺗﮑﺎی ﺑﯿﺶ از ﺣﺪ ﺑﻪ ﻣﺤﺼﻮﻻت ﻣﺎﯾ ﺮوﺳﺎﻓﺖ، از

ﺟﻤﻠﻪ وﯾﻨﺪوز، SQL Server و IIS اﺳﺖ ﮐﻪ ﻫﻤ از ﻫﻤﭙﺎﯾﺎن ﻣﺘﻦﺑﺎز ﺧﻮد ﺑﺴﯿﺎر ﻋﻘﺐ

ﻫﺴﺘﻨﺪ و ﻫﺰﯾﻨﻪ ﺑﺎﻻﯾﯽ ﻧﯿﺰ ﺑﺮای ﺗﻬﯿﻪ آﻧﻬﺎ ﺑﺎﯾﺪ ﭘﺮداﺧﺖ ﺷﻮد.

29

ASP.NET ﺧﻮد ﺑﺮ روی NET Framework. ﺑﻨﺎ ﺷﺪه ﮐﻪ ﻣﺠﻤﻮﻋﻪ ﮐﺎﻣﻞ و ﺑﯽ ﻧﻘﺼ

از ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎ، ﺗﻮاﺑﻊ و ﮐﻼسﻫﺎی ﻻزم ﺑﺮای ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯿﺴﺖ و ﺟﺎﯾ ﺰﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺘﻦ

ﺑﺎز اﺳﺘﻔﺎده ﺷﺪه در PHP ﻣ ﺑﺎﺷﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ اﯾﻦ ﺗﮑﻨﻮﻟﻮژیﻫﺎ در اﯾﺮان راﯾ ﺎن ﻫﺴﺘﻨﺪ، و ﮐﺎر ﺑﺎ آﻧﻬﺎ ﺑﺮای ﻣﺒﺘﺪﯾﺎن ﺑﺴﯿﺎر

ﺳﺎده اﺳﺖ، ﺑﯿﺸﺘﺮ ﺑﺎزار وب اﯾﺮان را اﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﭘﺮ ﮐﺮده اﺳﺖ.

٢٬٤٬٧٬٣ ( (JSP ﺟﺎوا ﻫﻢ ﭘﺲ از ﭼﻨﺪی، ﺧﻮد را ﺑﻪ زﺑﺎنﻫﺎی ﺗﺤﺖ وب اﻓﺰود. JSP

ﯾﺎ Java Server Pages ﺗﮑﻨﻮﻟﻮژیای ﻣﺸﺎﺑﻪ CGI اﺳﺖ ﮐﻪ از زﺑﺎن

ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﺟﺎوا اﺳﺘﻔﺎده ﻣ ﻧﻤﺎﯾﺪ. ﭘﯿﺪاﯾﺶ اﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﺑﻪ دﻟﯿﻞ

ﻣﺘﻌﺪد ﺑﻮدن ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﺟﺎوا و ﭘﺎﯾﺪاری ﺑﺴﯿﺎر ﺑﺎﻻی آﻧﻬﺎ ﺑﻪ اﯾﻦ زﺑﺎن

ﻗﺪﯾﻤ و ﻧﺎﺳﺮﯾﻊ داﻧﺴﺘﻪ ﻣ ﺷﻮد. ﺷﻞ ١٩ ﻧﻤﺎﯾﻪ ﺟﺎوا

JSP ﻣﻌﻤﻮﻻ ﺑﺮ روی Apache Tomcat ﺳﺮوﯾﺲ دﻫ ﻣ ﺷﻮد، ﺑﺴﯿﺎر ﮐﻨﺪ اﺳﺖ و ﻣﺸ ﻞ

اﺻﻠ آن ﻋﺪم اﻣ ﺎن ﺧﺮوﺟ دادن وﺳﯿﻊ اﺳﺖ، ﮐﻪ ﺑﺎﻋﺚ ﺷﺪه ﻣﻌﻤﺎری وبﻫﺎی ﺟﺎوا ﺑﺎ

ASP و PHP ﺗﻔﺎوت ﻋﻤﺪهای داﺷﺘﻪ ﺑﺎﺷﺪ.

٢٬٤٬٧٬٤ ColdFusion ColdFusion ﺗﮑﻨﻮﻟﻮژی وب اﻧﺤﺼﺎری Adobe اﺳﺖ. وﯾﮋﮔ ﻫﺎی ﺧﻮب و ﻗﺎﺑﻞ ﺗﻮﺟﻬ

در اﯾﻦ زﺑﺎن ﮔﻨﺠﺎﻧﯿﺪه ﺷﺪه اﺳﺖ.

30

ﺷﻞ ٢٠ ﺻﻔﺤﻪ ﻧﺼﺐ ColdFusion ﺣﺎوی ﻧﻤﺎﯾﻪ آن

وﻟ از آﻧﺠﺎﯾﯽ ﮐﻪ اﮐﺜﺮ اﯾﻦ اﻫﺪاف ﺗﻮﺳﻂ ASP.NET ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﺑﺮآورده ﻣﯿﺸﺪ،

ﻣﺨﺎﻃﺒﯿﻦ ﺑﺴﯿﺎر ﮐﻤ ﺑﻪ اﯾﻦ زﺑﺎن روی آوردﻧﺪ.

٢٬٤٬٧٬٥ Perl زﺑﺎن ﺑﺴﯿﺎر ﻗﺪﯾﻤ و ﻧﺎﻣﻨﻈﻢ، ﻣﻮرد ﻋﻼﻗﻪ ﺧﻮرهﻫﺎی ﮐﺎﻣﭙﯿﻮﺗﺮ. ﭘﺮل از ﻗﺪﯾﻤ ﺗﺮﯾﻦ زﺑﺎن -

ﻫﺎی ﻣﺘﻦ ﺑﺎز اﺳﺖ و اﻣ ﺎﻧﺎت ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﻧﯿﺰ داراﺳﺖ. از ﺑﯿﻦ زﺑﺎ نﻫﺎی دﯾ ﺮ، ﭘﺮل ﺑﯿﺸﺘﺮﯾﻦ

ﺷﺒﺎﻫﺖ را ﺑﻪ ﭘﯽاچﭘﯽ دارد.ﮐﺎرﺑﺮد ﻋﻤﺪه ﭘﺮل در ﻧﻮﺷﺘﻦ اﺳ ﺮﯾﭙﺖﻫﺎی ﺗﺤﺖ ﺗﺮﻣﯿﻨﺎل ﺑﺮای

ﺳﯿﺴﺘﻢﻫﺎی ﯾﻮﻧﯿ ﺲ اﺳﺖ، ﺗﺎ ﺟﺎﯾﯽ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻫﺎی ﺑﺴﯿﺎر ﺑﺰرﮔ ﻧﯿﺰ ﺑﺮ اﺳﺎس ﭘﺮل اﯾﺠﺎد

ﺷﺪهاﻧﺪ.

ﺷﻞ ٢١ ﻧﻤﺎﯾﻪ زﺑﺎن ﻗﺪﯾﻤ و ﻣﺤﺒﻮب ﭘﺮل

31

ﻗﺒﻞ از ﺑﻪ ﻣﯿﺪان آﻣﺪن ﭘﯽاچﭘﯽ، ﭘﺮل درﺻﺪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ از ﺳﺎﯾﺖﻫﺎی ﭘﻮﯾﺎ را ﺳﺮوﯾﺲ-

دﻫ ﻣ ﮐﺮد. ﺑﻪ دﻟﯿﻞ دﺷﻮاری ﺳﯿﻨﺘﮑﺲ و زﺑﺎن ﭘﺮل و ﻣﻨﺎﺳﺐ ﺑﻮدن آن ﺗﻨﻬﺎ ﺑﺮای ﮐﺎرﺑﺮان

ﻧﺴﺒﺘﺎ ﺣﺮﻓﻪای، اﻣﺮوزه در وب ﺟﺎﯾ ﺎه ﮐﻤﺮﻧﮕ دارد.

٢٬٤٬٧٬٦ Ruby روﺑﯽ زﺑﺎﻧﯿﺴﺖ ﻧﺴﺒﺘﺎ ﻗﺪﯾﻤ ﮐﻪ ﭼﻨﺪﺳﺎﻟﯿﺴﺖ روﻧﻖ ﮔﺮﻓﺘﻪاﺳﺖ. در ﻃﺮاﺣ روﺑﯽ ﺳﻌ

ﺷﺪه از ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﺟﺪﯾﺪ زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪﺳﺎزی اﺳﺘﻔﺎده ﺷﻮد. ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن روﺑﯽ ﻋﻼﻗﻪ

زﯾﺎدی ﺑﻪ اﯾﻦ زﺑﺎن دارﻧﺪ و دﻟﯿﻞ اﺻﻠ اﺳﺘﻔﺎده از آﻧﺮا «ﻟﺬت در ﻫﻨﮕﺎم ﺑﺮﻧﺎﻣﻪﻧﻮﺷﺘﻦ ﺑﺎ آن»

ﻣﯿﺪاﻧﻨﺪ.

ﺷﻞ ٢٢ ﻧﻤﺎﯾﻪ زﺑﺎن ﺟﺪﯾﺪ و ﻣﺤﺒﻮب روﺑﯽ

روﺑﯽ از ﻧﻈﺮ ﺳﺮﻋﺖ ﮐﻤ ﮐﻨﺪ اﺳﺖ و ﺑﻪ ﻣﺎﻧﻨﺪ C اﻣ ﺎﻧﺎﺗ را در اﺧﺘﯿﺎر ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻗﺮار

ﻣ دﻫﺪ ﮐﻪ ﻣﻨﺠﺮ ﺑﻪ ﻧﺎﺧﻮاﻧﺎﯾﯽ ﺑﺮﻧﺎﻣﻪ و درﺻﺪ ﺧﻄﺎی ﺑﺎﻻی آن ﻣ ﺷﻮد. ﺑﺮای ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ

وب، روﺑﯽ ﺑﺮ ﭼﻬﺎرﭼﻮب Rails ﺗﮑﯿﻪ ﻣ ﻧﻤﺎﯾﺪ.

٢٬٤٬٧٬٧ Python ﭘﺎﯾﺘﻮن زﺑﺎن ﺑﺴﯿﺎر ﻗﺪرﺗﻤﻨﺪ و ﻗﺪﯾﻤﯿﺴﺖ ﮐﻪ ﺑﯿﺸﺘﺮﯾﻦ ﺷﯿﺐ رﺷﺪ را در ﺗﻌﺪاد ﺑﺮﻧﺎﻣﻪﻫﺎ،

ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن و ﻣﺨﺎﻃﺒﺎن دارد. ﺧﻮاﻧﺎﯾﯽ ﺑﺎﻻی ﮐﺪ، ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻪ و ﭘﻮﺷﺶ ﮐﺎﻣﻞ

32

ﮐﺘﺎﺑﺨﺎﻧﻪای، ﺑﻪ ﻫﻤﺮاه ﭘﺸﺘﯿﺒﺎﻧ از ﺗﮑﻨﻮﻟﻮژیﻫﺎی روز زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ، ﭘﺎﯾﺘﻮن را ﺑﻪ

ﯾ ﺑﺴﺘﻪ ﮐﺎﻣﻞ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﺗﺒﺪﯾﻞ ﮐﺮدهاﺳﺖ.

ﺷﻞ ٢٣ ﻧﻤﺎﯾﻪ ﻣﻌﺮوف ﭘﺎﯾﺘﻮن

ﻋﻼﻗﻤﻨﺪان ﺑﻪ ﭘﺎﯾﺘﻮن ﺑﺮ اﺳﺎس ﭼﻬﺎرﭼﻮب django، ﮐﺪﻫﺎی ﭘﺎﯾﺘﻮن ﻣﻨﺎﺳﺐ وب ﻣ -

ﻧﻮﯾﺴﻨﺪ. در ﺣﺎل ﺣﺎﺿﺮ ﺗﻌﺪاد ﺳﺎﯾﺖﻫﺎی ﻧﯿﺮو ﮔﺮﻓﺘﻪ از ﭘﺎﯾﺘﻮن ﺑﺴﯿﺎر ﭘﺎﯾﯿﻦ اﺳﺖ، در ﺣﺎﻟ ﮐﻪ

ﺑﯿﺸﺘﺮ ﻧﺮماﻓﺰارﻫﺎی ﻏﯿﺮوﺑﯽ ﺗﻮﻟﯿﺪ ﺷﺪه در ﺳﺎﻟﻬﺎی اﺧﯿﺮ ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ زﺑﺎن اﯾﺠﺎد ﺷﺪهاﻧﺪ.

ﭘﺎﯾﺘﻮن ﻧﯿﺰ ﺑﻪ ﻣﺎﻧﻨﺪ روﺑﯽ و ﺟﺎوا، ﻣﻔﺴﺮی ﺑﻮده ﺑﺮ روی ﻫﻤﻪ ﺳ ﻮﻫﺎ ﺑﻪ ﺳﺎدﮔ اﺟﺮا ﻣ -

ﺷﻮد .

ﺷﻞ ٢٤ درﺻﺪ اﺳﺘﻔﺎده از زﺑﺎنﻫﺎی ﺳﻤﺖ ﺳﺮور در ﺳﺎﯾﺘﻬﺎی ﻣﺨﺘﻠﻒ

33

٢٬٤٬٧٬٨ دﯾﺮ زﺑﺎنﻫﺎ

زﺑﺎنﻫﺎی ﻣﺘﻌﺪد دﯾ ﺮی ﻧﯿﺰ در ﺗﻮﺳﻌﻪ وب وﺟﻮد دارد ﮐﻪ ﺑﻪ دﻟﯿﻞ ﮐﻤﺮﻧﮓﺗﺮ ﺑﻮدن آﻧﻬﺎ در

اﯾﻦ ﺳﻨﺪ ﺑﺪاﻧﻬﺎ اﺷﺎرهای ﻧﺸﺪه اﺳﺖ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻣ ﺗﻮان ﺑﻪ زﺑﺎنﻫﺎی Pascal ،C،

Lua ،Scala و Tcl اﺷﺎره ﻧﻤﻮد.

٢٬۴٬٨ Server از ﻣﻬﻤﺘﺮﯾﻦ ﻣﺴﺎﺋﻞ ﻣﻄﺮح در ﻫﺮ ﺳﯿﺴﺘﻢ ﻧﺮماﻓﺰاری، دادهﻫﺎی ﻣﺎﻧﺎ (Persistent)

ﻫﺴﺘﻨﺪ. ﻣ ﺗﻮان ﮔﻔﺖ ٧٠ درﺻﺪ ﮐﺎر ﻫﺮ ﺳﯿﺴﺘﻢ ﻧﺮماﻓﺰاری ﻣﺪﯾﺮﯾﺖ دادهﻫﺎی ﻣﺎﻧﺎی آن

اﺳﺖ، ﻟﺬا اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎی ﻧﺮماﻓﺰاری اﻣﺮوزی ﺑﺮای ﻣﺪﯾﺮﯾﺖ اﯾﻦ دادهﻫﺎ و ﮐﺎﻫﺶ ﻫﺰﯾﻨﻪ

ﺗﻮﻟﯿﺪ، از ﭘﺎﯾ ﺎه داده اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ.

ﭘﺎﯾ ﺎه داده ﻋﻼوه ﺑﺮ ﻣﺪﯾﺮﯾﺖ دادهﻫﺎی ﻣﺎﻧﺎ، اﻣ ﺎﻧﺎت ﺑﺴﯿﺎر دﯾ ﺮی از ﺟﻤﻠﻪ

ﮔﺰارﺷ ﯿﺮی، آﻣﺎرﮔﯿﺮی، ﭘﺸﺘﯿﺒﺎنﮔﯿﺮی و ﻏﯿﺮه را اﻧﺠﺎم ﻣ دﻫﺪ و ﻫﺰﯾﻨﻪ ﺗﻮﻟﯿﺪ و ﻧﮕﻬﺪاری

ﻧﺮماﻓﺰار را ﺑﯿﺶ از ۵٠% ﮐﺎﻫﺶ ﻣ دﻫﺪ.

ﺷﻞ ٢٥ ﻧﻤﺎﯾﻪ ﭘﺎﯾﺎه داده

34

ﻣﻬﻤﺘﺮﯾﻦ وﻇﺎﯾﻒ ﯾ ﭘﺎﯾ ﺎه داده، ﻣﻬﯿﺎ ﮐﺮدن ﭼﻬﺎر وﯾﮋﮔ ACID در ﻣﺪﯾﺮﯾﺖ

دادهﻫﺎی ﻣﺎﻧﺎﺳﺖ:

· Atomicity: ﻋﻤﻠﯿﺎت دادهای، اﺗﻤ ﺑﺎﺷﺪ، ﯾﻌﻨ اﻧﺠﺎم ﺷﺪن ﻧﯿﻤ از آن ﻣﻤ ﻦ ﻧﺒﺎﺷﺪ و

ﻫﻤﻪ آن ﯾﺎ ﯾ ﺠﺎ اﻧﺠﺎم ﺷﻮد ﯾﺎ ﻧﺸﻮد.

· Consistency: ﺻﺤﺖ ارﺗﺒﺎﻃﺎت ﺑﯿﻦ دادهﻫﺎ ﺧﺮاب ﻧﺸﻮد. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل اﮔﺮ ﯾ ﮐﺎرﺑﺮ،

ﺟﻮﻣﻮدﯾﺖ ﺑﻪ ﻧﺎم ﻣﺸﺨﺼﺎت ﮐﺎرﺑﺮی دارد، اﻣ ﺎن وﺟﻮد ﯾ ﮐﺎرﺑﺮ در ﺳﯿﺴﺘﻢ ﺑﺪون

داﺷﺘﻦ ﻣﺸﺨﺼﺎت ﮐﺎرﺑﺮی ﻧﺒﺎﺷﺪ.

· Isolation: ﺗﺮاﮐﻨﺶﻫﺎﯾﯽ ﮐﻪ ﺑﻪ ﺻﻮرت ﻣﻮازی در ﺳﯿﺴﺘﻢ در ﺣﺎل اﻧﺠﺎم ﻫﺴﺘﻨﺪ، ﻫﻤﺎن

ﻪﺠﯿﺘﻧای را ﺣﺎﺻﻞ ﮐﻨﻨﺪ ﮐﻪ وﻗﺘ ﺑﻪ ﺻﻮرت ﺳﺮی اﺟﺮا ﺷﻮﻧﺪ ﺧﻮاﻫﻨﺪ ﮐﺮد.

· Durability: دادهﺎﻧ ﻣ ﺎﻫ ﺑﺎﺷﺪ، ﯾﻌﻨ ﭘﺲ از اﺗﻤﺎم ﯾ ﺗﺮاﮐﻨﺶ، ﺣﺘ اﮔﺮ ﺑﺮق ﻗﻄ ﺷﺪ

دادهﻫﺎ دﺳﺘﺨﻮش ﺗﻐﯿﯿﺮ ﻧﺸﻮد.

ﻫﻤﭽﻨﯿﻦ ﯾ ﭘﺎﯾ ﺎه داده ﻣﻌﻤﻮﻻ ﺑﺎﯾﺪ ﻫﻤﺮوﻧﺪی ﺗﺮاﮐﻨﺶﻫﺎ را ﻧﯿﺰ ﻓﺮاﻫﻢ آورد، ﺑﺪﯾﻦ

ﻣﻌﻨ ﮐﻪ اﮔﺮ ﺻﺪ ﻧﻔﺮ ﻫﻤﺰﻣﺎن دﺳﺘﺮﺳ ﺑﻪ داده ﯾﺎ ﮔﺰارش ﺧﺎﺻ را ﻃﻠﺐ ﮐﺮدﻧﺪ، ﺑﺎ ﺳﺮﻋﺖ و

ﺑﺪون ﺗﺎﺧﯿﺮ ﺑﻪ ﻫﺮ ﺻﺪ ﻧﻔﺮ آﻧﻬﺎ ﺳﺮوﯾﺲرﺳﺎﻧ ﮐﻨﺪ.

وﯾﮋﮔ ﻫﺎی ﻓﻮق، در ﯾ ﺳﯿﺴﺘﻢ ﻣﺒﺘﻨ ﺑﺮ وب، ﮐﻪ ﺗﺮاﮐﻨﺶﻫﺎی ﺑﺎﻻ و ﮔﺎﻫﺎ اﻧﻔﺠﺎری

(Bursty) دارد، اﻫﻤﯿﺖ دوﭼﻨﺪاﻧ ﭘﯿﺪا ﻣ ﮐﻨﻨﺪ، ﻟﺬا ﭘﺎﯾ ﺎه داده ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﺑﻪ ﺑﻬﺘﺮﯾﻦ وﺟﻪ

ﻫﻤﺮوﻧﺪی را ﺑﺎ دﻗﺖ ﮐﺎﻓ ﻣﻬﯿﺎ ﻧﻤﺎﯾﺪ.

ﭘﺎﯾ ﺎهﻫﺎی ﻣﻄﺮح ﺷﺪه، از ﻧﻮع راﺑﻄﻪای (RDBMS) ﻫﺴﺘﻨﺪ. اﻣﺮوزه ﭘﺎﯾ ﺎهﻫﺎی داده

ﺟﺪﯾﺪی ﮐﻪ ﺑﺎ ﻧﺎم ﻧﻮع NoSQL ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮﻧﺪ وارد ﺑﺎزار ﺷﺪهاﻧﺪ ﮐﻪ راﺑﻄﻪای ﻧﯿﺴﺘﻨﺪ و

ﺧﻮاص ﻓﻮق را ﺑﻪ ﺻﻮرت ﮐﺎﻣﻞ ﻣﻬﯿﺎ ﻧﻤ ﮐﻨﻨﺪ (ﯾ ﭙﺎرﭼ را ﺑﻪ ﺻﻮرت ﻟﺤﻈﻪای ﻧﺪارﻧﺪ). 35

اﯾﻦ ﭘﺎﯾ ﺎهﻫﺎی داده ﺑﺎ ﻫﺪف Scalability ﮐﻪ در ﺳﯿﺴﺘﻢﻫﺎی اﻣﺮوزی ﺑﺴﯿﺎر ﻣﻬﻢ اﺳﺖ ﺑﻪ

ﻣﯿﺪان آﻣﺪهاﻧﺪ و اﺻﻮل آﻧﻬﺎ ﻣﺘﻔﺎوت ﻣ ﺑﺎﺷﺪ. از ﻣﻬﻤﺘﺮﯾﻦ آﻧﻬﺎ ﻣ ﺗﻮان Riak و MongoDB

را ﻧﺎم ﺑﺮد.

ﺷﻨﺎﺧﺖ وﯾﮋﮔ ﻫﺎ و ﺗﻔﺎوتﻫﺎی ﭘﺎﯾ ﺎهﻫﺎی RDBMS ﻣﻌﺮوف اﻣﺮوزی، اﻫﻤﯿﺖ ﺑﺴﺰاﯾﯽ

دارد، ﻟﺬا در اداﻣﻪ اﯾﻦ ﺳﯿﺴﺘﻢﻫﺎ ﻣﻮرد ﺑﺮرﺳ ﻗﺮار ﺧﻮاﻫﻨﺪ ﮔﺮﻓﺖ.

٢٬٤٬٨٬١ Oracle ﻏﻮل ﭘﺎﯾ ﺎهﻫﺎی ﺗﺠﺎری، ﺑﺎ ﭘﺸﺘﯿﺒﺎﻧ ﺷﺮﮐﺘ ﮐﻪ ﺟﺰو ١٠٠ ﮐﻤﭙﺎﻧ ﺑﺰرگ دﻧﯿﺎ ﻣﺤﺴﻮب

ﻣ ﺷﻮد، ﺗﻘﺮﯾﺒﺎ ﺗﻤﺎﻣ اﻣ ﺎﻧﺎت ﺗﺌﻮری و ﻋﻤﻠ ﻣﻄﺮح در ﻋﻠﻢ ﭘﺎﯾ ﺎهداده را در ﺑﺮ ﻣ ﮔﯿﺮد.

اﯾﻦ ﭘﺎﯾ ﺎه داده ﻣﻨﺎﺳﺐ ﺳﯿﺴﺘﻢﻫﺎی ﺑﺴﯿﺎر ﺑﺰرگ اﺳﺖ، ﺑﺮای ﻣﺜﺎل ﮐﺎرت ﺳﻮﺧﺖ در اﯾﺮان

ﺗﻮﺳﻂ اﯾﻦ ﭘﺎﯾ ﺎه داده ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮔﺮدد.

ﺷﻞ ٢٦ ﻧﻤﺎﯾﻪ اوراﮐﻞ، از ﺑﺰرﮔﺘﺮﯾﻦ ﮐﻤﭙﺎﻧﻫﺎی ﮐﺎﻣﭙﯿﻮﺗﺮی

از ﻣﻌﻀﻼت اﺻﻠ اﯾﻦ ﭘﺎﯾ ﺎه داده ﻧﯿﺎز ﺑﻪ ﺑﺴﺘﺮ ﺳﺨﺖاﻓﺰاری ﺑﺴﯿﺎر ﻗﻮی و ﻧﯿﺎز ﺑﻪ ﻣﺪﯾﺮ

ﭘﺎﯾ ﺎه ﺗﻤﺎم وﻗﺖ اﺳﺖ.

٢٬٤٬٨٬٢ SQL Server ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﺑﺎ ﻫﻤ ﺎری Sybase ﭘﺎﯾ ﺎه داده اﻧﺤﺼﺎری ﺧﻮد را اراﺋﻪ داده اﺳﺖ. اﯾﻦ

ﭘﺎﯾ ﺎه داده ﺣﺠﻢ ﺑﺴﯿﺎر ﺑﺎﻻ و ﺳﺮﻋﺖ ﻣﺘﻮﺳﻄ دارد و اﻣ ﺎﻧﺎت ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﻧﯿﺰ اراﺋﻪ ﻧﻤ -

دﻫﺪ. ﺿﻤﻨﺎ ﻗﯿﻤﺖ ﻧﺴ ﺨ ﻪﻫﺎی ﺗﺠﺎری و ﻣﻔﯿﺪ آن ﻧﯿﺰ ﺑﺴﯿﺎر ﺑﺎﻻﺳﺖ. ﺗﻨﻬﺎ وﯾﮋﮔ ﻣﺜﺒﺖ اﯾﻦ

ﭘﺎﯾ ﺎه داده ﻫﻤﺨﻮاﻧ ﺧﻮب آن ﺑﺎ ﻣﺤﺼﻮﻻت ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار ﻣﺎﯾ ﺮوﺳﺎﻓﺖ (NET.) اﺳﺖ. 36

ﺷﻞ ٢٧ ﻧﻤﺎﯾﻪ SQL Server، ﻣﺤﺼﻮل ﻣﺤﺒﻮب و ﻣﻨﻔﻮر ﻣﺎﯾﺮوﺳﺎﻓﺖ

ﻧﺴﺨﻪﻫﺎی ﻣﻬﻢ اﯾﻦ ﺳﯿﺴﺘﻢ (2000,2005,2008) از اﺳﺘﺎﻧﺪاردﻫﺎی ﻣﺘﻔﺎوﺗ اﺳﺘﻔﺎده

ﻣ ﮐﻨﻨﺪ و ﺗﺒﺪﯾﻞ آﻧﻬﺎ ﺑﻪ ﯾ ﺪﯾ ﺮ اﻣﺮ ﺳﺎدهای ﻧﯿﺴﺖ.

٢٬٤٬٨٬٣ PostgreSQL ﭘﺎﯾ ﺎهداده ﻣﺘﻦ ﺑﺎز، ﻣﻮرد ﻋﻼﻗﻪ ﻟﯿﻨﻮﮐﺲ ﮐﺎرﻫﺎ. اﯾﻦ ﺳﯿﺴﺘﻢ از ﻧﺴﺨﻪ ٨ ﺑﻪ ﺑﻌﺪ (ﻧﺴﺨﻪ

ﺟﺎری آن ٩ اﺳﺖ) اﻣ ﺎﻧﺎت اﺳﺘﺎﻧﺪارد و ﻗﺎﺑﻞ ﻗﺒﻮﻟ را اراﺋﻪ ﮐﺮدهاﺳﺖ، وﻟ ﮐﺎر ﺑﺎ آن ﮐﻤ

ﻣﺸ ﻞ اﺳﺖ و ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ اﺳﺘﻘﺒﺎل ﮐﻤ از آن ﻣ ﺷﻮد.

ﺷﻞ ٢٨ ﻧﻤﺎﯾﻪ Postgre، ﭘﺎﯾﺎه داده ﻧﺎﺷﻨﺎس ﻣﺎﻧﺪه

٢٬٤٬٨٬٤ MySQL ﻣﺎی اﺳ ﯿﻮل، ﻣﻌﺮوفﺗﺮﯾﻦ ﭘﺎﯾ ﺎه داده در ﺣﺎل اﺳﺘﻔﺎده اﺳﺖ، ﮐﻪ اﺑﺘﺪا ﺗﻮﺳﻂ ﺷﺮﮐﺖ

MySQL AB در ﺳﻮﺋﺪ اﯾﺠﺎد ﺷﺪ. اﯾﻦ ﭘﺎﯾ ﺎه داده ﺑﺴﯿﺎر ﺳﺮﯾﻊ، ﻗﺪرﺗﻤﻨﺪ و ﺟﻤ و ﺟﻮر

37

اﺳﺖ و ﺑﯿﺸﺘﺮ ﻧﺮماﻓﺰارﻫﺎی ﻣﺘﻦ ﺑﺎز از آن اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ. ﻧﺴﺨﻪ ﻣﺘﻦ ﺑﺎز آن ﻧﯿﺰ راﯾ ﺎن

اﺳﺖ.

ﺷﻞ ٢٩ ﻧﻤﺎﯾﻪ ﺑﺴﯿﺎر ﻣﺤﺒﻮب MySQL

در ﺣﺎل ﺣﺎﺿﺮ (ﺳﺎل ٢٠١٢) ۴٠% ﺳﯿﺴﺘﻢﻫﺎی ﻧﺮماﻓﺰاری از اﯾﻦ ﭘﺎﯾ ﺎه داده ﺑﻬﺮه ﻣ -

ﮔﯿﺮﻧﺪ ﮐﻪ ﻧﺴﺒﺖ ﺑﻪ ﺳﺎل ﮔﺬﺷﺘﻪ ٨ درﺻﺪ رﺷﺪ داﺷﺘﻪ اﺳﺖ.

ﺑﻪ دﻟﯿﻞ ﻣﺘﻦ ﺑﺎز ﺑﻮدن اﯾﻦ ﺳﯿﺴﺘﻢ، ﺳﺮﻋﺖ رﺷﺪ آن ﺑﺴﯿﺎر ﺑﺎﻻ ﺑﻮد و ﺑﺴﯿﺎری از ﻣﺸﺘﺮﯾﺎن

Oracle ﺗﺮﺟﯿﺢ ﻣﯿﺪادﻧﺪ اﻣ ﺎﻧﺎت ﮐﻤﺘﺮی داﺷﺘﻪ وﻟ ﻫﺰﯾﻨﻪ ﺑﺴﯿﺎر ﺑﺴﯿﺎر ﻧﺎﭼﯿﺰی را ﭘﺮداﺧﺖ

ﮐﻨﻨﺪ. ﺷﺮﮐﺖ اوراﮐﻞ در ﺳﺎل ٢٠١٠ MySQL را ﺧﺮﯾﺪ و از آن ﭘﺲ رﺷﺪ ﺑﺴﯿﺎر ﺳﺮﯾﻊ آن

ﻣﺘﻮﻗﻒ ﺷﺪ ﺗﺎ در ﺣﺪ ﭘﺎﯾ ﺎه دادهﻫﺎی ﻣﺘﻮﺳﻂ ﺑﺎﻗ ﺑﻤﺎﻧﺪ.

٢٬٤٬٨٬٥ SQLite ﭘﺎﯾ ﺎهداده ﻣﻨﺤﺼﺮ ﺑﻔﺮد و ﺟﻤ و ﺟﻮر (٢٧۵ ﮐﯿﻠﻮﺑﺎﯾﺖ). اس ﮐﯿﻮ ﻻﯾﺖ، ﺑﺮ ﺧﻼف دﯾ ﺮ

ﭘﺎﯾ ﺎهدادهﻫﺎ، اﺣﺘﯿﺎج ﺑﻪ ﻧﺼﺐ و وﺟﻮد ﯾ ﺳﺮور ﻧﺪارد، ﺑﻠ ﻪ ﮐﺘﺎﺑﺨﺎﻧﻪ آن ﻫﻢ ﻧﻘﺶ واﺳﻂ و

ﻫﻢ ﻧﻘﺶ ﺳﺮور را اﯾﻔﺎ ﻣ ﻧﻤﺎﯾﺪ.

38

ﺷﻞ ٣٠ ﻧﻤﺎﯾﻪ SQLite ﮐﻪ ﺳﺎدﮔ آﻧﺮا ﻣﻨﻌﮑﺲ ﻣﮐﻨﺪ

اﯾﻦ ﭘﺎﯾ ﺎهداده، ﮐﻞ دادهﻫﺎی ﯾ ﭘﺎﯾ ﺎه را درون ﯾ ﻓﺎﯾﻞ ﻗﺮار ﻣ دﻫﺪ (و ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ

ﻫﻤﺮوﻧﺪی ﺧﻮﺑﯽ ﻧﺪارد) اﻣﺎ ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻪ و اﻣ ﺎﻧﺎت ﺧﻮﺑﯽ داراﺳﺖ ﮐﻪ آﻧﺮا ﺑﺮای

ﮐﺎرﺑﺮدﻫﺎی ﺟﻤ و ﺟﻮر و ﺗﮏ ﮐﺎرﺑﺮه اﯾﺪهآل ﮐﺮده اﺳﺖ.

SQLite ﻧﯿﺰ ﻣﺘﻦ ﺑﺎز اﺳﺖ و از ﺳﺎل ٢٠٠٠ ﺗﺎﮐﻨﻮن ﺑﻪ ﺣﺪی رﺷﺪ داﺷﺘﻪ ﮐﻪ ﺣﺪود ﻧﯿﻤ

از ﻧﺮماﻓﺰارﻫﺎ ﺑﺮ آن ﺗﮑﯿﻪ ﻣ ﮐﻨﻨﺪ.

١٬١٬١٬١. ﻏﯿﺮه

ﭘﺎﯾ ﺎهﻫﺎی داده ﺑﺴﯿﺎر دﯾ ﺮی (ﻣﺎﻧﻨﺪ Sybase و Firebird) ﻧﯿﺰ وﺟﻮد دارﻧﺪ، وﻟ ﻣﺸﺘﺮی

ﺑﺴﯿﺎر ﮐﻤ ﺑﺮای آﻧﻬﺎ وﺟﻮد دارد. ﺗﻤﺎﻣ اﯾﻦ ﭘﺎﯾ ﺎهﻫﺎی داده از زﺑﺎن اﺳﺘﺎﻧﺪارد SQL ﺑﺮای

ﻋﻤﻠﯿﺎت ﺧﻮد اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ، ﺑﻪ اﯾﻦ ﺻﻮرت ﮐﻪ ﻧﺮماﻓﺰار ﻣﺮﺑﻮﻃﻪ ﺑﺎ اﺳﺘﻔﺎده از ﯾ ﮐﺘﺎﺑﺨﺎﻧﻪ

واﺳﻂ، دﺳﺘﻮر SQL ﻣﻮرد ﻧﻈﺮ (ﺷﺎﻣﻞ دﺳﺘﻮرات و دادهﻫﺎ) را ﺑﻪ ﺳﺮور آﻧﻬﺎ اﻧﺘﻘﺎل ﻣ دﻫﺪ،

ﻋﻤﻠﯿﺎت اﻧﺠﺎم ﻣ ﺷﻮد و ﭘﺎﺳ آن ﺑﻪ ﻧﺮماﻓﺰار ﺑﺎزﮔﺮداﻧﺪه ﻣ ﺷﻮد.

ﻻزم ﺑﻪ ذﮐﺮ اﺳﺖ ﮐﻪ درﺻﺪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ از ﻣﻌﻀﻼت اﻣﻨﯿﺘ ﺳﯿﺴﺘﻢﻫﺎی اﻣﺮوزی ﻣﺘﻮﺟﻪ

ﺳﯿﺴﺘﻢﻫﺎی ﭘﺎﯾ ﺎه داده اﺳﺖ.

39

ﺷﻞ ٣١ ﻧﺴﺒﺖ ﻧﺼﺐ و ﺗﺼﻤﯿﻢ ﺑﻪ ﻧﺼﺐ ﭘﺎﯾﺎهﻫﺎی داده ﻣﺨﺘﻠﻒ در ﺳﺎزﻣﺎنﻫﺎ

٢٬۴٬٩ HTML 5 ﯾ از ﻣﻌﻀﻼت اﺻﻠ HTML، ﻋﺪم ﭘﺸﺘﯿﺒﺎﻧ از ﺻﻮت و ﺗﺼﻮﯾﺮ ﻣﺘﺤﺮک ﺑﻮد، ﺑﻪ ﻃﻮری

ﮐﻪ اﮐﺜﺮ ﺳﺎﯾﺖﻫﺎ ﺑﻪ اﺳﺘﻔﺎده از اﻓﺰوﻧﻪﻫﺎی Adobe Flash Player روی ﻣ آوردﻧﺪ ﺗﺎ اﯾﻨﮕﻮﻧﻪ

ﻣﺤﺘﻮا را ﻧﯿﺰ ﭘﺸﺘﯿﺒﺎﻧ ﮐﻨﻨﺪ.

40

ﺷﻞ ٣٢ ﻧﻤﺎﯾﻪ HTML ﻧﺴﺨﻪ ۵

اﺳﺘﻔﺎده از اﻓﺰوﻧﻪ، ﻣﺎﻫﯿﺖ وب را ﮐﻪ ﭼﻨﺪﺳ ﻮﯾﯽ، اﺳﺘﺎﻧﺪارد ﺑﻮدن و اﻣﻦ ﺑﻮدن اﺳﺖ، زﯾﺮ

ﺳﻮال ﻣ ﺑﺮد. اﻓﺰوﻧﻪﻫﺎﯾﯽ ﮐﻪ ﺑﺮ روی ﮐﺎوﺷ ﺮﻫﺎ ﻧﺼﺐ ﻣ ﺷﻮﻧﺪ، ﻧﺮماﻓﺰارﻫﺎی ﻣﺴﺘﻘﻠ

ﻫﺴﺘﻨﺪ ﮐﻪ اﺻﻮل اﻣﻨﯿﺘ ﺧﻮد را ﻻزم دارﻧﺪ و در ﺑﺴﯿﺎری از ﻣﻮﺳﺴﺎت ﺑﺰرگ و ﻣﻬﻢ، ﻧﺼﺐ

اﯾﻨﮕﻮﻧﻪ اﻓﺰوﻧﻪﻫﺎ ﺑﺮ روی ﮐﺎوﺷ ﺮ ﻏﯿﺮﻣﺠﺎز اﺳﺖ.

HTML5 در ﺳﺎل ٢٠١١ اﺳﺘﺎﻧﺪارد ﺷﺪ ﺗﺎ ﺻﻮت و ﺗﺼﻮﯾﺮ و ﻫﻤﭽﻨﯿﻦ SVG (ﺗﺼﺎوﯾﺮ

ﺑﺮداری) را ﭘﺸﺘﯿﺒﺎﻧ ﻧﻤﺎﯾﺪ. ﻫﻤﭽﻨﯿﻦ ﭘﺸﺘﯿﺒﺎﻧ از ﮐﺸﯿﺪن و رﻫﺎ ﮐﺮدن (Drag & Drop) و

ﻫﻤﭽﻨﯿﻦ ﻣﻌﺮﻓ ﻧﺮماﻓﺰار ﺗﺤﺖ وب ﺟﻬﺖ ﺑﺎزﮐﺮدن ﻓﺎﯾﻠﻬﺎی ﻣﺨﺘﻠﻒ در ﮐﺎوﺷ ﺮ از وﯾﮋﮔ ﻫﺎی

ﺟﺪﯾﺪ ﻣﻮﺟﻮد در اﯾﻦ اﺳﺘﺎﻧﺪارد اﺳﺖ.

از آﻧﺠﺎﯾﯽ ﮐﻪ اﯾﻦ اﺳﺘﺎﻧﺪارد ﻫﻨﻮز ﻧﻮﭘﺎﺳﺖ، و داﻣﻨﻪ وﺳﯿﻌ از ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﺟﺪﯾﺪ را ﺑﻪ

ﯾ ﺒﺎره ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﺪ، از ﻧﻈﺮ اﻣﻨﯿﺖ ﺑﺴﯿﺎر آﺳﯿﺐ ﭘﺬﯾﺮ و ﺧﻮش ﭘﺘﺎﻧﺴﯿﻞ اﺳﺖ. در ﺣﺎل

ﺣﺎﺿﺮ ﻫﺮروز ﻣﻌﻀﻼت ﻣﺘﻌﺪدی ﺑﺮ روی اﯾﻦ اﺳﺘﺎﻧﺪارد ﮐﺸﻒ ﻣ ﺷﻮد و ﻫﺮ ﮐﺎوﺷ ﺮی ﻧﯿﺰ ﺑﻪ

ﺷﯿﻮه اﻧﺤﺼﺎری ﺧﻮﯾﺶ آﻧﺮا ﭘﯿﺎدهﺳﺎزی ﮐﺮده اﺳﺖ.

41

ﺷﻞ ٣٣ وﯾﮋﮔﻫﺎی ﻣﻬﻢ اﻓﺰوده ﺷﺪه در HTML 5

٢٬۴٬١٠ ﮐﺎوﺷﺮ وب

ﮐﺎوﺷ ﺮ وب، ﻧﺮماﻓﺰارﯾﺴﺖ ﮐﻪ ﺑﻪ ﺻﻮرت ﻣﺤﻠ (Native) ﺑﺮ روی ﺳ ﻮ (ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ +

ﺳﺨﺖ اﻓﺰار) اﺟﺮا ﻣﯿ ﺮدد و ﺻﻔﺤﺎت وب را ﺑﻪ ﺻﻮرت اﺳﺘﺎﻧﺪارد ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ. در واﻗ در

ﺳﺎدهﺗﺮﯾﻦ ﺗﻌﺮﯾﻒ، ﮐﺎوﺷ ﺮ وب ﻧﺮماﻓﺰارﯾﺴﺖ ﮐﻪ ﻓﺎﯾﻞﻫﺎی HTML را ﺑﺎز ﻣ ﮐﻨﺪ (ﺟﻬﺖ

ﺧﻮاﻧﺪن، ﻧﻪ ﻧﻮﺷﺘﻦ)

در اﺑﺘﺪا ﮐﺎوﺷ ﺮﻫﺎی وب ﺑﺴﯿﺎر ﺳﺎده و ﺳﺒ ﺑﻮدﻧﺪ، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﮐﺎوﺷ ﺮ Lynx

ﺗﺤﺖ ﮐﻨﺴﻮل ﺻﻔﺤﺎت HTML را ﺑﺮ روی ﺗﺮﻣﯿﻨﺎل ﻧﻤﺎﯾﺶ ﻣﯿﺪﻫﺪ و اﻣ ﺎﻧﺎت ﺧﻮﺑﯽ ﻧﯿﺰ

داراﺳﺖ. اﻣﺮوزه ﺑﺎ ﮔﺴﺘﺮش اﺳﺘﻔﺎده از Javascript و AJAX و ﻫﻤﭽﻨﯿﻦ اﺳﺘﺎﻧﺪارد ﺷﺪن

42

HTML 5، ﮐﺎوﺷ ﺮﻫﺎی وب ﺑﻪ ﯾ از ﭘﯿﭽﯿﺪهﺗﺮﯾﻦ ﻧﺮماﻓﺰارﻫﺎی ﻣﻮﺟﻮد ﺗﺒﺪﯾﻞ ﺷﺪهاﻧﺪ

وﺗﯿﻢﻫﺎی ﺑﺰرگ و ﻣﺘﺨﺼﺼ ﺑﺮ روی آﻧﻬﺎ ﮐﺎر ﻣ ﺪﻨﻨﮐ.

در ﺣﺎل ﺣﺎﺿﺮ اﮐﺜﺮ ﻧﺮماﻓﺰارﻫﺎ ﺧﻮد را ﺑﺮ روی ﺑﺴﺘﺮ وب ﻋﺮﺿﻪ ﻣ ﮐﻨﻨﺪ و اﯾﻦ ﯾﻌﻨ

ﮐﺎوﺷ ﺮ وب ﻗﺴﻤﺘ از ﺳ ﻮی اﺟﺮای ﺑﺮﻧﺎﻣﻪﻫﺎﺳﺖ. اﮐﻨﻮن ﺳﯿﺴﺘﻢﻫﺎی ﺑﺴﯿﺎر ﺳﺎده ﺑﺎ ﻧﺎم

ﺗﺠﺎری Thin Client وﺟﻮد دارﻧﺪ ﮐﻪ ﺗﻨﻬﺎ ﯾ ﮐﺎوﺷ ﺮ وب اﺟﺮا ﻣ ﮐﻨﻨﺪ و ﺑﻪ واﺳﻄﻪ آن ﻣ -

ﺗﻮاﻧﻨﺪ ﻧﺮماﻓﺰارﻫﺎی ﻣﺘﻌﺪدی (ﺣﺘ ﺳﯿﺴﺘﻢﻫﺎی ﻋﺎﻣﻞ) را ﺗﺤﺖ وب اﺟﺮا ﮐﻨﻨﺪ.

ﯾ ﮐﺎوﺷ ﺮ وب از ﺑﺨﺶﻫﺎی زﯾﺮ ﺗﺸ ﯿﻞ ﺷﺪه اﺳﺖ:

· ﻣﻮﺗﻮر ﭘﺮدازش (Rendeing Engine): اﯾﻦ ﻗﺴﻤﺖ وﻇﯿﻔﻪ ﺗﺒﺪﯾﻞ ﻓﺎﯾﻞ HTML

و اﺳﻨﺎد ﺿﻤﯿﻤﻪ آن ﺑﻪ ﯾ ﺗﺼﻮﯾﺮ را دارد. ﻓﺎﯾﻞﻫﺎی ﻣﺬﮐﻮر ﭘﺲ از ﭘﺮدازش ﺗﻮﺳﻂ

ﻣﻮﺗﻮر ﭘﺮدازﺷ ﺮ، ﺑﻪ ﺻﻮرت ﻗﺎﺑﻞ ﻧﻤﺎﯾﺶ ﮔﺮاﻓﯿ درآﻣﺪه ﺑﺮای ﮐﺎرﺑﺮ واﺿ و

ﻗﺎﺑﻞ ﻣﺮور ﻣ ﺷﻮﻧﺪ. از آﻧﺠﺎﯾﯽ ﮐﻪ وبﻫﺎی اﻣﺮوزی ﺑﺴﯿﺎر ﭘﯿﭽﯿﺪه ﻫﺴﺘﻨﺪ، ﺳﺮﻋﺖ

و دﻗﺖ اﯾﻦ ﺑﺨﺶ از ﮐﺎوﺷ ﺮ ﻣﻬﻤﺘﺮﯾﻦ وﯾﮋﮔ آن اﺳﺖ.

· اﻓﺰوﻧﻪﺎﻫ: اﮐﺜﺮ ﮐﺎوﺷ ﺮﻫﺎی اﻣﺮوزی، از اﻓﺰوﻧﻪﻫﺎی ﻣﺘﻌﺪدی ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺪﻨﻨﮐ.

ﮐﺎوﺷ ﺮﻫﺎ زﺑﺎن ﺑﺮﻧﺎﻪﻣﻧﻮﯾﺴ ﻣﻨﺤﺼﺮ ﺑﻪ ﺧﻮد را ﺗﻌﺮﯾﻒ ﻣ ﮐﻨﻨﺪ ﮐﻪ ﺗﻮﺳﻂ آﻧﻬﺎ

ﻣ ﺗﻮان اﻓﺰوﻧﻪﻫﺎﯾﯽ ﻃﺮاﺣ ﮐﺮد ﮐﻪ اﻣ ﺎﻧﺎت ﺧﺎﺻ را ﺑﻪ ﮐﺎوﺷ ﺮ اﺿﺎﻓﻪ ﻣ ﺪﻨﻨﮐ.

در ﺣﺎل ﺣﺎﺿﺮ اﻓﺰوﻧﻪﻫﺎ از ﯾ ﺗﻐﯿﯿﺮ ﻧﻤﺎﯾﺶ ﺳﺎده ﺗﺎ ﻣﺪﯾﺮﯾﺖ ﯾ ﭘﺎﯾ ﺎه داده

ﮐﺎﻣﻞ را در ﺑﺮ ﻣ ﮔﯿﺮﻧﺪ و ﻣﯿﻠﯿﻮنﻫﺎ اﻓﺰوﻧﻪ ﺑﺮای ﮐﺎوﺷ ﺮﻫﺎی ﻣﻌﺮوف وﺟﻮد دارد.

· ﻣﻮﺗﻮر اﺟﺮا: ﺑﺎ ﮔﺴﺘﺮده ﺷﺪن اﺳﺘﻔﺎده از Javascript، ﻣﻮﺗﻮر اﺟﺮا ﺑﺨﺶ ﻣﻬﻤ از

ﮐﺎوﺷ ﺮﻫﺎ ﺷﺪه اﺳﺖ. اﯾﻦ ﻣﻮﺗﻮر ﻣ ﺗﻮان ﮐﺪﻫﺎی ﺟﺎواﺳ ﺮﯾﭙﺖ را ﭘﺮدازش ﮐﺮده ﺑﺎ

ﺳﺮﻋﺖ و دﻗﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻬ اﺟﺮا ﻧﻤﺎﯾﺪ.

43

· ﻣﺪﯾﺮﯾﺖ ﺷﺒ ﻪ: ﮐﺎوﺷ ﺮ وب، ﺑﺮای ﺗﮑﻤﯿﻞ ﻧﻤﺎﯾﺶ ﯾ ﺳﻨﺪ HTML اﺣﺘﯿﺎج ﺑﻪ

درﯾﺎﻓﺖ ﺗﺼﺎوﯾﺮ، ﻓﺎﯾﻠﻬﺎی CSS، ﻓﺎﯾﻠﻬﺎی ﺟﺎواﺳ ﺮﯾﭙﺖ، ﻓﺎﯾﻠﻬﺎی اﻧﯿﻤﯿﺸﻦ، ﺻﻮت

و ﻏﯿﺮه دارد. ﻫﻤﭽﻨﯿﻦ درﺧﻮاﺳﺖﻫﺎی AJAX ﻧﯿﺰ ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮ ﻣﺪﯾﺮﯾﺖ ﻣ -

ﺷﻮﻧﺪ. اﮔﺮ ﮐﺎوﺷ ﺮﻫﺎ ﺑﺨﻮاﻫﻨﺪ ﺗﻤﺎم اﯾﻦ ﻓﺎﯾﻠﻬﺎ را ﯾ ﺠﺎ درﺧﻮاﺳﺖ دﻫﺪ، ﺷﺒ ﻪ

ﻣﺨﺘﻞ ﻣ ﺷﻮد. اﮔﺮ ﯾ ﯾ آﻧﻬﺎ را درﺧﻮاﺳﺖ دﻫﺪ، ﺑﺎر ﺷﺪن ﯾ ﺖﻋﺎﺳ ﻪﺤﻔﺻ-

ﻫﺎ ﺑﻪ ﻃﻮل ﻣ اﻧﺠﺎﻣﺪ. ﮐﺎوﺷ ﺮﻫﺎ ﺑﻪ ﺻﻮرت ﻫﻤﺮوﻧﺪ و ﺑﺮﻧﺎﻣﻪرﯾﺰی ﺷﺪه ﻗﻄﻌﺎت

ﻣﺨﺘﻠﻒ ﻫﺮ ﺻﻔﺤﻪ را درﯾﺎﻓﺖ، ﭘﺮدازش و اراﺋﻪ ﻣ ﺪﻨﻨﮐ.

· اﺑﺰار ﺟﺎﻧﺒﯽ: ﻣﺪﯾﺮﯾﺖ رﻣﺰﻫﺎی ﻋﺒﻮر ﺳﺎﯾﺖﻫﺎ، ﻣﺪﯾﺮﯾﺖ ﮐﻮﮐ ، ﻣﺪﯾﺮﯾﺖ ﺳﺎﯾﺖ-

ﻫﺎی ﻣﻮرد ﻋﻼﻗﻪ ﮐﺎرﺑﺮ و دﯾ ﺮ ﻣﻮارد رﯾﺰ و درﺷﺖ ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮﻫﺎی اﻣﺮوزی

ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺪﻧﻮﺷ.

ﻣﻌﻤﻮﻻ ﮐﺎوﺷ ﺮﻫﺎی وب، ﻣﺤﺘﻮای وب را در ﯾ ﺑﺴﺘﺮ ﺷﺒﯿﻪﺳﺎزی ﺷﺪه (Sandbox)

اﺟﺮا ﻣ ﮐﻨﻨﺪ و اﺟﺎزه دﺳﺘﺮﺳ ﻣﺴﺘﻘﯿﻢ ﺑﻪ ﻣﻨﺎﺑﻊ ﺣﺴﺎس ﺳﯿﺴﺘﻢ (ﺳﺨﺖ اﻓﺰار، ﺳﯿﺴﺘﻢ

ﻋﺎﻣﻞ و ...) را ﺑﻪ آن ﻧﻤ دﻫﻨﺪ. اﮔﺮ در ﺑﺮﻧﺎﻣﻪ ﮐﺎوﺷ ﺮ، ﻣﻌﻀﻞ اﻣﻨﯿﺘ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ،

ﯾ وب ﺳﺎﯾﺖ ﻣ ﺗﻮاﻧﺪ اﯾﻦ ﻣﺤﺪودﯾﺖﻫﺎ را ﭘﺸﺖ ﺳﺮ ﮔﺬاﺷﺘﻪ، دﺳﺘﺮﺳ ﻣﺴﺘﻘﯿﻢ ﺑﻪ ﺳﯿﺴﺘﻢ

اﯾﺠﺎد ﮐﻨﺪ و اﻣﻨﯿﺖ آﻧﺮا ﺗﺤﺖ ﻣﺨﺎﻃﺮه ﻗﺮار دﻫﺪ.

در اداﻣﻪ ﺑﻪ ﺑﺮرﺳ ﮐﺎوﺷ ﺮﻫﺎی ﻣﻬﻢ وب ﻣ ﭘﺮدازﯾﻢ:

٢٬٤٬١٠٬١ ﻣﺎﯾﺮوﺳﺎﻓﺖ اﯾﻨﺘﺮﻧﺖ اﮐﺴﭙﻠﻮرر

از آﻧﺠﺎﯾﯽ ﮐﻪ روﻧﻖ اﺳﺘﻔﺎده از وب ﺑﺎ وﯾﻨﺪوز ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﻫﻤﺮاه ﺑﻮد، ﮐﺎوﺷ ﺮ

ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﮐﻪ ﺑﻪ ﻫﻤﺮاه ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ وﯾﻨﺪوز ﻋﺮﺿﻪ ﻣ ﺷﺪ، ﺳﺎﻟﻬﺎ ﺑﯽ رﻗﯿﺐ ﺑﺎزار

ﮐﺎوﺷ ﺮﻫﺎ را در اﺧﺘﯿﺎر داﺷﺖ. در اﯾﻦ ﻣﯿﺎن Netscape Navigator ﺲﮐ ﻓﺮﯾﺎﻓ ﻪﺑ ﺎﻫﺪﻌﺑ ﻪﮐ

44

ﺗﺒﺪﯾﻞ ﺷﺪ ﻧﯿﺰ اﯾﺠﺎد ﺷﺪه ﺑﻮد وﻟ درﺻﺪ ﺑﺴﯿﺎر ﮐﻤ از ﮐﺎرﺑﺮان اﺣﺴﺎس ﻧﯿﺎزی ﺑﺮای اﺳﺘﻔﺎده

از آن داﺷﺘﻨﺪ.

اﯾﻨﺘﺮﻧﺖ اﮐﺴﭙﻠﻮرر در ﺗﺎرﯾﺦ ﺧﻮد دﭼﺎر ﺣﻤﻼت و ﻣﻌﻀﻼت اﻣﻨﯿﺘ ﺑﯽ ﺷﻤﺎری ﺑﻮده اﺳﺖ

و ﺑﺴﯿﺎر ﻧﺎ اﻣﻦ ﺗﻠﻘ ﻣ ﺷﻮد. ﻫﻤﭽﻨﯿﻦ ﺳﺮﻋﺖ اﯾﻦ ﮐﺎوﺷ ﺮ ﺑﻪ ﻧﺴﺒﺖ ﺑﻘﯿﻪ ﮐﺎوﺷ ﺮﻫﺎ ﺑﺴﯿﺎر

ﭘﺎﯾﯿﻦ اﺳﺖ و اﻣ ﺎﻧﺎت آن ﻧﯿﺰ ﻫﻤﻮاره ﻣﺤﺪود و ﻏﯿﺮ اﺳﺘﺎﻧﺪارد ﺑﻮده اﺳﺖ.

در ﺣﺎل ﺣﺎﺿﺮ ﻧﺴﺨﻪ ٩ و ١٠ اﯾﻦ ﮐﺎوﺷ ﺮ اﺳﺘﺎﻧﺪارد HTML5 را ﻧﯿﺰ ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﻨﺪ و

ﺑﻪ ﮐﯿﻔﯿﺖ ﻗﺎﺑﻞ ﻗﺒﻮﻟ ﻧﯿﺰ دﺳﺖ ﯾﺎﻓﺘﻪاﻧﺪ، وﻟ ﺑﺎ ﻫﺮ روز ﻣﻬﻤﺘﺮ ﺷﺪن وب، ﮐﺎرﺑﺮان اﯾﻦ

ﮐﺎوﺷ ﺮ ﻧﯿﺎز ﺑﻪ ﮐﺎوﺷ ﺮﻫﺎی ﺑﻬﺘﺮ را درک ﮐﺮده و ﺑﻪ آﻧﻬﺎ ﻣﻬﺎﺟﺮت ﮐﺮدهاﻧﺪ.

ﺷﻞ ٣٤ ﻧﻤﺎﯾﻪ آﺷﻨﺎی IE، ﺑﺴﯿﺎری از ﮐﺎرﺑﺮان، اﯾﻨﺘﺮﻧﺖ را ﺑﺎ اﯾﻦ ﻧﻤﺎ ﻣﺷﻨﺎﺳﻨﺪ

اﯾﻨﺘﺮﻧﺖ اﮐﺴﭙﻠﻮرر ﺗﻨﻬﺎ ﺑﺮ روی وﯾﻨﺪوز ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﻗﺎﺑﻞ اﺟﺮاﺳﺖ و ﻧﺴ ﺟﺪﯾﺪ آن ﻧﯿﺰ

ﺗﻨﻬﺎ ﺑﺮ روی ﻧﺴ ﺟﺪﯾﺪ وﯾﻨﺪوز ﻗﺎﺑﻞ اﺟﺮا ﻫﺴﺘﻨﺪ. اﯾﻦ ﮐﺎوﺷ ﺮ واﺑﺴﺘﮕ ﺷﺪﯾﺪی ﺑﻪ ﺳﯿﺴﺘﻢ

ﻋﺎﻣﻞ دارد.

45

ﺷﻞ ٣٥ ﻧﺴﺒﺖ اﺳﺘﻔﺎده از ﮐﺎوﺷﺮﻫﺎی ﻣﺨﺘﻠﻒ ﺗﺎ ﻗﺒﻞ از ﺳﺎل ٢٠١٠

٢٬٤٬١٠٬٢ Mozilla Firefox در ﺳﺎل ٢٠٠۴ ﭘﺲ از ﺣﺪود ١٠ ﺳﺎل رﻗﺎﺑﺖ ﺑﯽ ﺣﺎﺻﻞ ﺑﺎ IE ﻣﺎﯾ ﺮوﺳﺎﻓﺖ، Netscape

Navigator ﭘﺮوژه ﺧﻮد را ﻣﺘﻦ ﺑﺎز ﮐﺮد و ﮐﺪ ﻣﻨﺒﻊ آﻧﺮا در اﺧﺘﯿﺎر ﮐﺎرﺑﺮان و ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﻗﺮار

داد. ﺑﻪ ﺳﺮﻋﺖ ﭘﺮوژه ﻓﺎﯾﺮﻓﺎﮐﺲ ﺗﺤﺖ ﻣﻮﺳﺴﻪ ﻣﺘﻦ ﺑﺎز Mozilla ﺷ ﻞ ﮔﺮﻓﺖ و ﮐﺎوﺷ ﺮی

ﻗﺪرﺗﻤﻨﺪ ﺑﻪ ﻋﺮﺻﻪ آﻣﺪ ﮐﻪ روز ﺑﻪ روز رﺷﺪ ﮐﺮد. ﻓﺎﯾﺮﻓﺎﮐﺲ در ﮐﻤﺘﺮ از ﭼﻨﺪ ﺳﺎل ﯾ ﺳﻮم

ﮐﺎرﺑﺮان وب را ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص داد.

ﺷﻞ ٣٦ ﻧﻤﺎﯾﻪ ﻓﺎﯾﺮﻓﺎﮐﺲ

46

در ﺣﺎل ﺣﺎﺿﺮ ﻧﺴﺨﻪ ١٣ اﯾﻦ ﮐﺎوﺷ ﺮ ﺑﻪ ﻋﻨﻮان ﺣﺮﻓﻪای ﺗﺮﯾﻦ ﮐﺎوﺷ ﺮ ﻣﻨﺎﺳﺐ ﺑﺮای

ﮐﺎرﺑﺮان ﺣﺮﻓﻪای و ﺗﻮﺳﻌﻪدﻫﻨﺪﮔﺎن وب، از ﺗﻤﺎم اﺳﺘﺎﻧﺪاردﻫﺎی وب ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﺪ و

ﻣﯿﻠﯿﻮنﻫﺎ اﻓﺰوﻧﻪ ﻗﺪرﺗﻤﻨﺪ ﺑﺮای آن ﻃﺮاﺣ ﺷﺪه اﺳﺖ.

در ﺳﺎل اﺧﯿﺮ، ﻧﺴﺨﻪﻫﺎی ﺟﺪﯾﺪ ﻓﺎﯾﺮﻓﺎﮐﺲ ﺿﻌﻒ ﺳﺮﻋﺖ داﺷﺘﻨﺪ ﮐﻪ ﺑﺎ ﻗﺪرت ﮔﺮﻓﺘﻦ

اﻧﻔﺠﺎری Google Chrome، ﮐﺎرﺑﺮان ﺧﻮد را ﺑﻪ ﯾ ﺒﺎره از دﺳﺖ دادﻧﺪ. ﻓﺎﯾﺮﻓﺎﮐﺲ ﺑﺮ روی

ﻫﻤﻪ ﺳﯿﺴﺘﻢﻫﺎی ﻋﺎﻣﻞ ﻣﻮﺟﻮد، ﺣﺘ ﻣﻮﺑﺎﯾﻞﻫﺎ، ﻗﺎﺑﻞ اﺟﺮاﺳﺖ.

٢٬٤٬١٠٬٣ Opera ﮐﺎوﺷ ﺮ ﮐﻢ ﺳﺮ و ﺻﺪای اﭘﺮا، از ﺳﺎل ١٩٩۴ وﺟﻮد داﺷﺘﻪ و ﺑﯿﺶ از ٢٧٠ ﻣﯿﻠﯿﻮن ﮐﺎرﺑﺮ در

ﺳﺮاﺳﺮ ﺟﻬﺎن داراﺳﺖ. اﯾﻦ ﮐﺎوﺷ ﺮ ﻗﺪرﺗﻤﻨﺪ و ﺳﺮﯾﻊ، ﺑﻪ دﻟﯿﻞ ﻋﺪم ﭘﺸﺘﯿﺒﺎﻧ ﺗﻮﺳﻂ

ﮐﻤﭙﺎﻧ ﻫﺎی ﺑﺰرگ، ﻫﯿﭽﻮﻗﺖ ﺑﻪ ﻣﻌﺮوﻓﯿﺖ و ﮐﺎرﺑﺮد درﺧﻮد ﺧﻮد ﻧﺮﺳﯿﺪ.

ﺷﻞ ٣٧ ﻧﻤﺎﯾﻪ اﭘﺮا

ﻣﻬﻤﺘﺮﯾﻦ وﯾﮋﮔ اﭘﺮا، وﺟﻮد ﻧﺴﺨﻪ ﻣﻮﺑﺎﯾﻞ ﺑﺴﯿﺎر ﻗﺪرﺗﻤﻨﺪ آن اﺳﺖ ﮐﻪ ﺑﺴﯿﺎری از ﮐﺎرﺑﺮان

ﻣﻮﺑﺎﯾﻞ را ﺑﻪ ﺳﻤﺖ اﯾﻦ ﮐﺎوﺷ ﺮ ﺳﻮق داده اﺳﺖ. اﭘﺮا ﻧﯿﺰ ﺑﺮ روی ﻫﻤﻪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞﻫﺎ ﻗﺎﺑﻞ

اﺟﺮاﺳﺖ.

47

٢٬٤٬١٠٬٤ Google Chrome ﮐﺎوﺷ ﺮ ﮔﻮﮔﻞ، ﮐﺎوﺷ ﺮ ﺑﺴﯿﺎر ﻗﺪرﺗﻤﻨﺪ ﻧﯿﻤﻪ ﻣﺘﻦ ﺑﺎزﯾﺴﺖ ﮐﻪ از ﺳﺎل ٢٠٠٨ ﭘﺎ ﺑﻪ ﻋﺮﺻﻪ

ﮐﺎوﺷ ﺮﻫﺎی وب ﻧﻬﺎده اﺳﺖ. اﯾﻦ ﮐﺎوﺷ ﺮ ﺑﺮ اﯾﺪه ﻣﺤﻮری ﻣﻮﺗﻮر ﺑﺴﯿﺎر ﺳﺮﯾﻊ ﺟﺎواﺳ ﺮﯾﭙﺖ

ﺷ ﻞ ﮔﺮﻓﺘﻪ و ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ ﺳﺮﻋﺖ آن ﺑﻪ ﻃﺮز ﻗﺎﺑﻞ ﺗﻮﺟﻬ از دﯾ ﺮ ﮐﺎوﺷ ﺮﻫﺎ ﺑﯿﺸﺘﺮ اﺳﺖ.

ﻫﻤﭽﻨﯿﻦ ﻣﻌﻀﻞ ﻣﺼﺮف ﺣﺎﻓﻈﻪ ﺑﺴﯿﺎر ﺑﺎﻻی ﮐﺎوﺷ ﺮﻫﺎی اﻣﺮوزی (ﺑﻪ دﻟﯿﻞ ﺗﻨﻮع و

ﭘﯿﭽﯿﺪﮔ ﺑﺎﻻی وب) در اﯾﻦ ﮐﺎوﺷ ﺮ ﮐﻤﺘﺮ وﺟﻮد دارد. از ﻧﻈﺮ اﻣﻨﯿﺖ ﻧﯿﺰ Sandbox ﮐﺮوم

ﭼﻨﺪﺑﺮاﺑﺮ اﻣﻦﺗﺮ از دﯾ ﺮ ﮐﺎوﺷ ﺮﻫﺎﺳﺖ.

ﺷﻞ ٣٨ ﻧﻤﺎﯾﻪ ﮐﺮوم

در ﺣﺎل ﺣﺎﺿﺮ ﺑﺎ ﺑﻪ ﻋﺮﺻﻪ آﻣﺪن ﺗﻌﺪاد ﻗﺎﺑﻞ ﺗﻮﺟﻬ اﻓﺰوﻧﻪ و ﺑﺎﻟ ﺷﺪن اﯾﻦ ﮐﺎوﺷ ﺮ،

ﮐﺎرﺑﺮان آن ﺑﺴﯿﺎر زﯾﺎد ﺷﺪهاﻧﺪ و ﭘﯿﺶ ﺑﯿﻨ ﻣ ﺷﻮد در ﮐﻤﺘﺮ از ﯾ ﺳﺎل آﯾﻨﺪه ﻣﺤﺒﻮبﺗﺮﯾﻦ

ﮐﺎوﺷ ﺮ وب ﺑﺎﺷﺪ. ﻋﻼوه ﺑﺮ آن ﺷﺮﮐﺖ ﺑﺰرگ ﮔﻮﮔﻞ ﭘﺸﺘﯿﺒﺎﻧ اﯾﻦ ﮐﺎوﺷ ﺮ را اﻧﺠﺎم ﻣ دﻫﺪ.

ﮔﻮﮔﻞ ﮐﺮوم ﻧﯿﺰ ﻣﺎﻧﻨﺪ اﮐﺜﺮ ﮐﺎوﺷ ﺮﻫﺎی اﻣﺮوزی ﺑﺮ روی ﺗﻤﺎم ﺳ ﻮﻫﺎ ﻗﺎﺑﻞ اﺟﺮاﺳﺖ و

ﻧﺴﺨﻪﻫﺎی ﻣﻮﺑﺎﯾﻞ آن ﻧﯿﺰ در ﺣﺎل ﺗﮑﺎﻣﻞ ﻫﺴﺘﻨﺪ.

٢٬٤٬١٠٬٥ Apple Safari ﺳﺎﻓﺎری، ﮐﺎوﺷ ﺮ ﻣﺤﺒﻮب ﺳﯿﺴﺘﻢﻫﺎی اﭘﻞ اﺳﺖ. اﯾﻦ ﮐﺎوﺷ ﺮ ﮐﻪ ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض ﺑﺮ

روی ﺳﯿﺴﺘﻢﻫﺎی ﻋﺎﻣﻞ اﭘﻞ (Mac OS X, iOS) ﻗﺮار دارد، دارای ﻧﺴﺨﻪ ﻣﻮﺑﺎﯾﻞ و روﻣﯿﺰی

ﺑﺴﯿﺎر ﻗﺪرﺗﻤﻨﺪی و ﺳﺮﯾﻌﯿﺴﺖ.

48

ﺷﻞ ٣٩ ﻧﻤﺎﯾﻪ ﺳﺎﻓﺎری

ﺳﺎﻓﺎری اﻣ ﺎﻧﺎت ﻗﺎﺑﻞ ﺗﻮﺟﻬ دارد وﻟ دﻧﯿﺎی اﻓﺰوﻧﻪﻫﺎی آن ﮐﻤ ﮐﻮﭼ اﺳﺖ.

ﻫﻤﭽﻨﯿﻦ اﻣ ﺎﻧﺎت ﺑﺎرز ﺧﺎﺻ ﻧﺪارد ﺗﺎ ﺑﺮای ﮐﺎرﺑﺮاﻧ ﮐﻪ روی ﺳﯿﺴﺘﻢﻫﺎی ﻏﯿﺮ اﭘﻞ ﻣﺴﺘﻘﺮ

ﻫﺴﺘﻨﺪ، ﺟﺎﯾ ﺰﯾﻦ ﻣﻨﺎﺳﺒﯽ ﺑﺎﺷﺪ.

ﺷﻞ ٤٠ ﻧﺴﺒﺖ اﺳﺘﻔﺎده از ﮐﺎوﺷﺮﻫﺎی ﻣﺨﺘﻠﻒ، ﮔﺰارش ﺷﺪه ﺗﻮﺳﻂ وﯾﯿﻤﺪﯾﺎ

49

ﺑﺎ اﯾﻨﮑﻪ اﯾﻦ ﮐﺎوﺷ ﺮ ﻣﺨﺼﻮص ﺳﯿﺴﺘﻢﻫﺎی اﭘﻞ ﻃﺮاﺣ ﺷﺪه اﺳﺖ، ﺑﺮ روی ﺳﯿﺴﺘﻢ

ﻋﺎﻣﻞ وﯾﻨﺪوز ﻧﯿﺰ ﻧﺴﺨﻪ ﻗﺎﺑﻞ اﺟﺮا و ﮐﺎﻣﻠ دارد. ﻫﻤﭽﻨﯿﻦ ﺑﺮ ﺧﻼف اﮐﺜﺮ ﮐﺎوﺷ ﺮﻫﺎی ﻣﻮﺑﺎﯾﻞ،

ﺳﺎﻓﺎری ﻣﻮﺑﺎﯾﻞ از ﺟﺎواﺳ ﺮﯾﭙﺖ ﭘﺸﺘﯿﺒﺎﻧ ﮐﺎﻣﻞ ﻣ ﮐﻨﺪ (ﺑﻪ دﻟﯿﻞ ﻗﺪرﺗﻤﻨﺪ ﺑﻮدن ﻣﻮﺑﺎﯾﻞﻫﺎی

اﭘﻞ)

٢٬٤٬١٠٬٦ Mobile Browsers ﺑﺎ اﻓﺰاﯾﺶ روزاﻓﺰون اﺳﺘﻔﺎده از ﻣﻮﺑﺎﯾﻞ ﺑﻪ ﺟﺎی راﯾﺎﻧﻪ ﺷﺨﺼ ﺟﻬﺖ ﮐﺎوش وب (و

اﺳﺘﻔﺎده از ﻧﺮماﻓﺰارﻫﺎی ﺗﺤﺖ وب)، ﮐﺎوﺷ ﺮﻫﺎی ﻗﺪرﺗﻤﻨﺪ ﻣﻮﺑﺎﯾﻞ ﭼﺎﻟﺶ ﺟﺪﯾﺪی اﯾﺠﺎد

ﮐﺮدهاﻧﺪ. ﻣﻮﺑﺎﯾﻞﻫﺎ ﻣﻌﻤﻮﻻ ﭘﺮدازﻧﺪه ﺿﻌﯿﻔﺘﺮ و ﺣﺎﻓﻈﻪ ﺑﺴﯿﺎر ﺑﺴﯿﺎر ﮐﻤﺘﺮی از ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎی

روﻣﯿﺰی دارﻧﺪ و ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﻣﻮﺟﻮد ﺟﻬﺖ اراﺋﻪ وب ﺑﺮ روی آﻧﻬﺎ ﭘﺎﺳﺨ ﻮ ﻧﯿﺴﺖ. ﻫﻤﭽﻨﯿﻦ

اﮐﺜﺮ ﻣﻮﺑﺎﯾﻞﻫﺎ از ﭘﻬﻨﺎی ﺑﺎﻧﺪ ﮐﻤﺘﺮی ﻧﺴﺒﺖ ﺑﻪ اﯾﻨﺘﺮﻧﺖ ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎی روﻣﯿﺰی ﺑﺮﺧﻮردار

ﻫﺴﺘﻨﺪ و ﺑﺎﯾﺪ در ﻣﺼﺮف ﭘﻬﻨﺎی ﺑﺎﻧﺪ ﺻﺮﻓﻪﺟﻮﯾﯽ ﮐﻨﻨﺪ.

ﺷﻞ ٤١ در آﯾﻨﺪه ﺑﯿﺸﺘﺮ ﮐﺎرﺑﺮان وب ﺗﺤﺖ ﻣﻮﺑﺎﯾﻞ ﺧﻮاﻫﻨﺪ ﺑﻮد

در ﮔﺬﺷﺘﻪ ﻫﯿﭽ ﺪام از ﮐﺎوﺷ ﺮﻫﺎی ﻣﻮﺑﺎﯾﻞ از ﺟﺎواﺳ ﺮﯾﭙﺖ ﭘﺸﺘﯿﺒﺎﻧ ﻧﻤ ﮐﺮدﻧﺪ، زﯾﺮا

ﭘﺮدازﻧﺪه ﻣﻮﺑﺎﯾﻞﻫﺎ ﻗﺪرت ﮐﺎﻓ ﺑﺮای ﭘﺮدازش ﺟﺎواﺳ ﺮﯾﭙﺖ ﻧﺪاﺷﺖ. ﻫﻤﭽﻨﯿﻦ اﮐﺜﺮ ﺳﺎﯾﺖﻫﺎ

50

ﻧﺴﺨﻪ ﺧﺎﺻ ﺑﺮای ﻣﻮﺑﺎﯾﻞ داﺷﺘﻨﺪ ﮐﻪ ﻫﻢ ﺑﺴﯿﺎر ﺳﺒ ﺘﺮ ﺑﻮد و ﻫﻢ ﺳﺎدهﺗﺮ و ﻣﺨﺘﺼﺮﺗﺮ ﻃﺮاﺣ

ﺷﺪه ﺑﻮد ﺗﺎ ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮﻫﺎی ﻣﻮﺑﺎﯾﻞ ﻗﺎﺑﻞ ﭘﺮدازش ﺑﺎﺷﺪ.

در ﺣﺎل ﺣﺎﺿﺮ ﺑﺎ رﺷﺪ اﺑﻌﺎد و ﻗﺪرت ﻣﻮﺑﺎﯾﻞﻫﺎ، ﮐﺎوﺷ ﺮﻫﺎی ﮐﺎﻣﻠ ﺑﺮ روی آﻧﻬﺎ اراﺋﻪ ﺷﺪه

ﮐﻪ ﻫﻢ اﻣ ﺎن اﺟﺮای ﮐﺎﻣﻞ ﺟﺎواﺳ ﺮﯾﭙﺖ را داراﺳﺖ و ﻫﻢ ﻧﺴﺨﻪ روﻣﯿﺰی وب ﺳﺎﯾﺖﻫﺎ را ﺑﻪ

ﺳﺎدﮔ و ﺳﻬﻮﻟﺖ ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ.

در ﺣﺎل ﺣﺎﺿﺮ ﺳﯿﺴﺘﻢﻫﺎی ﻣﻮﺑﺎﯾﻞ اﭘﻞ از ﮐﺎوﺷ ﺮ ﻗﺪرﺗﻤﻨﺪ ﺳﺎﻓﺎری اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ و

اﮐﺜﺮ ﻣﻮﺑﺎﯾﻞﻫﺎی دﯾ ﺮ ﺑﺮ اﭘﺮای ﻣﻮﺑﺎﯾﻞ ﺗﮑﯿﻪ ﮐﺮدهاﻧﺪ.

٢٬٤٬١٠٬٧ ﻏﯿﺮه

ﮐﺎوﺷ ﺮﻫﺎی ﻣﺘﻌﺪد دﯾ ﺮی وﺟﻮد دارﻧﺪ ﮐﻪ ﻫﺮﮐﺪاک وﯾﮋﮔ ﻫﺎی ﺧﺎص ﺧﻮد را دارا

ﻫﺴﺘﻨﺪ. اﯾﻦ ﮐﺎوﺷ ﺮﻫﺎ ﺗﻮﺳﻂ ﺗﯿﻢﻫﺎی ﮐﻮﭼ ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺷﻮﻧﺪ و آﻧﻘﺪر وﯾﮋﮔ ﻫﺎی ﻣﻤﺘﺎز

ﻧﺪارﻧﺪ ﮐﻪ درﺻﺪ ﺧﺎﺻ ﮐﺎرﺑﺮ را ﺟﺬب ﺧﻮد ﻧﻤﺎﯾﻨﺪ.

در اﯾﻦ ﻣﯿﺎن ﮐﺎوﺷ ﺮﻫﺎی ﻣﺒﺘﻨ ﺑﺮ ﮐﻨﺴﻮل (CLI) اﻫﻤﯿﺖ ﺧﺎﺻ دارﻧﺪ زﯾﺮا ﺳﯿﺴﺘﻢﻫﺎی

ﺳﺮور و ﻟﯿﻨﻮﮐﺴ ﻣﻌﻤﻮﻻ ﻣﺒﺘﻨ ﺑﺮ ﮐﻨﺴﻮل ﻫﺴﺘﻨﺪ و اﻣ ﺎﻧﺎت ﺣﺪاﻗﻠ وب ﺑﺮ روی ﮐﻨﺴﻮل

ﻣﺪﯾﺮﯾﺖ اﯾﻦ ﺳﯿﺴﺘﻢﻫﺎ را ﺑﺴﯿﺎر ﺳﺎده ﻣ ﻧﻤﺎﯾﺪ. در اﯾﻦ ﻣﯿﺎن ﮐﺎوﺷ ﺮ Lynx ﻣﺤﺒﻮبﻦﯾﺮﺗ

ﮐﺎوﺷ ﺮ ﺗﺤﺖ ﮐﻨﺴﻮل ﺑﻮده ﮐﻪ از ﮐﺘﺎﺑﺨﺎﻧﻪ ﮐﻨﺴﻮﻟ NCURSES ﺟﻬﺖ اﯾﺠﺎد ﻣﺤﯿﻂ ﮐﺎرﺑﺮی

ﺧﻮد ﺑﻬﺮه ﻣ ﮔﯿﺮد.

51

ﺷﻞ ٤٢ رﺷﺪ اﺳﺘﻔﺎده از ﮐﺎوﺷﺮﻫﺎی دﯾﺮ از ﺳﺎل ٢٠٠٩

ﺷﻞ ٤٣ ﮔﺴﺘﺮه ﮐﺎوﺷﺮﻫﺎی وب در ﮐﺸﻮرﻫﺎ (آﺑﯽ: IE، ﻧﺎرﻧﺠ: ﻓﺎﯾﺮﻓﺎﮐﺲ، ﺳﺒﺰ: ﮐﺮوم، ﻗﺮﻣﺰ: اﭘﺮا)

52

٢٬٥ اﻟﮕﻮﻫﺎی ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار وب

ﺑﻪ دﻟﯿﻞ وﯾﮋﮔ ﻫﺎی ﻣﻨﺤﺼﺮ ﺑﻔﺮد ﻧﺮماﻓﺰار ﺗﺤﺖ وب - ﮐﻪ ﻣﻬﻤﺘﺮﯾﻦ آﻧﻬﺎ ﺗﻐﯿﯿﺮﭘﺬﯾﺮی ﺑﺎﻻی

آن اﺳﺖ – اﻟ ﻮﻫﺎی ﻣﻌﻤﻮل ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار ﭘﺎﺳﺨ ﻮ ﻧﯿﺴﺘﻨﺪ. در اﯾﻦ راﺳﺘﺎ اﻟ ﻮﻫﺎﯾﯽ ﺑﻪ ﻣﯿﺎن

آﻣﺪهاﻧﺪ ﮐﻪ در ﺣﺎل ﺣﺎﺿﺮ ﺑﺎﻟ ﺗﺮﯾﻦ آﻧﻬﺎ اﻟ ﻮی MVC و Component Based MVC اﺳﺖ.

اﯾﻦ دو اﻟ ﻮ و وﯾﮋﮔ ﻫﺎی آﻧﻬﺎ در اداﻣﻪ ﻣﻄﺮح ﻣ ﮔﺮدد:

٢٬۵٬١ MVC ام وی ﺳ ﻣﺨﻔﻒ Model-View-Controller، اﻟ ﻮﯾﯽ ﺑﺮای ﺗﻘﺴﯿﻢﺑﻨﺪی ﻣﻌﻨﺎﯾﯽ

وﻇﺎﯾﻒ در ﯾ ﺳﯿﺴﺘﻢ اﺳﺖ. در اﯾﻦ اﻟ ﻮ، ﻣﺪل ﺑﺨﺶﻫﺎﯾﯽ از ﺳﯿﺴﺘﻢ ﻫﺴﺘﻨﺪ ﮐﻪ وﻇﯿﻔﻪ

ﻨﻣﻄﻖ و ﻫﺴﺘﻪ ﺑﺮﻧﺎﻣﻪ را ﺑﻪ ﻋﻬﺪه دارﻧﺪ.

ﻪﻣﺎﻧﺮﺑﻧﻮﯾﺲ ﺑﻪ ﻫﻨﮕﺎم ﻃﺮاﺣ ﻣﺪل، ﺗﻮﺟﻬ ﺑﻪ ﻣﺎﻫﯿﺖ وﺑﯽ ﺑﺮﻧﺎﻣﻪ و وﯾﮋﮔ ﻫﺎی ﻇﺎﻫﺮی

آن ﻧﺪارﻧﺪ و ﺗﻨﻬﺎ ﺑﺮ روی ﻣﻨﻄﻖ و ﮐﺎرﮐﺮد ﻫﺴﺘﻪای ﺑﺮﻧﺎﻣﻪ ﺗﻤﺮﮐﺰ ﻣ ﻧﻤﺎﯾﺪ. ارﺗﺒﺎط ﺑﺎ ﭘﺎﯾ ﺎه داده

و دﯾ ﺮ اﻧﻮاع ﻣﺪﯾﺮﯾﺖ دادهﻫﺎ ﻧﯿﺰ از وﻇﺎﯾﻒ ﻣﺪل اﺳﺖ.

ﻫﺎﻇﺮ (View) ﻧﯿﺰ ﺗﻨﻬﺎ وﻇﯿﻔﻪ ﻧﻤﺎﯾﺶ را ﺑﺮ ﻋﻬﺪه دارد. ﺑﺨﺶ ﻇﺎﻫﺮ، ﻣﻘﺪاری داده را در

ﺐﻟﺎﻗﻫﺎی ﻣﻌﻤﻮل (ﺟﺪول، درﺧﺖ، ﻟﯿﺴﺖ، ﻋﻨﺼﺮ) درﯾﺎﻓﺖ ﮐﺮده، آﻧﻬﺎ را ﺑﺮ روی ﺻﻔﺤﻪ

ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ. ﯾ ﺳﯿﺴﺘﻢ MVC ﻣ ﺗﻮاﻧﺪ ﭼﻨﺪﯾﻦ ﻇﺎﻫﺮ ﻣﺨﺘﻠﻒ داﺷﺘﻪ ﺑﺎﺷﺪ، ﺑﻪ ﻋﻨﻮان

ﻣﺜﺎل ﯾ ﻇﺎﻫﺮ ﺳﺎده ﺑﺮای ﮐﺎرﺑﺮان ﻣﻮﺑﺎﯾﻞ و ﯾ ﻇﺎﻫﺮ ﮐﺎﻣﻞ ﺑﺮای ﮐﺎرﺑﺮان روﻣﯿﺰی.

ﮐﻨﺘﺮﻟ ﺮ در اﯾﻦ ﻣﯿﺎن، وﻇﯿﻔﻪ درﯾﺎﻓﺖ ورودی از ﮐﺎرﺑﺮ، ﭘﺮدازش اوﻟﯿﻪ آن (ﭘﺮدازش ﻏﯿﺮ

ﻣﻨﻄﻘ و رﺧﺪادی)، ﺗﺸﺨﯿﺺ ﻧﻮع درﺧﻮاﺳﺖ، ﻫﺪاﯾﺖ آن ﺑﻪ ﻣﺪلﻫﺎی ﻣﺮﺑﻮﻃﻪ، درﯾﺎﻓﺖ

ﺣﺎﺻﻞ اﺟﺮای ﻣﺪلﻫﺎ و اراﺋﻪ دادهﻫﺎی ﺑﺪﺳﺖ آﻣﺪه ﺑﻪ ﻇﺎﻫﺮ را دارد.

53

ﺮﺘﺸﯿﺑ ﮐﺪی ﮐﻪ در ﯾ ﮐﻨﺘﺮﻟ ﺮ اﻧﺠﺎم ﻣ ﺷﻮد، ﻣﺮﺑﻮط ﺑﻪ ﭘﺮدازش ورودی ﮐﺎرﺑﺮ و

ﻓﺮاﺧﻮاﻧ ﻣﺪلﻫﺎی ﻣﺮﺑﻮﻃﻪ اﺳﺖ.

در ﯾ ﺳﯿﺴﺘﻢ MVC، ﺑﻪ ازای ﻫﺮ ﺑﺨﺶ (و ﻣﻌﻤﻮﻻ ﻫﺮ ﺻﻔﺤﻪ) ﯾ ﮐﻨﺘﺮﻟ ﺮ، ﺻﻔﺮ ﺗﺎ

ﭼﻨﺪ ﻣﺪل و ﯾ ﯾﺎ ﭼﻨﺪ ﻇﺎﻫﺮ وﺟﻮد دارد. اﯾﻦ ﺗﻘﺴﯿﻢ ﺑﻨﺪی، ﺑﺎﻋﺚ اﺳﺘﻘﻼل ﻧﺴﺒﯽ ﺻﻔﺤﺎت

از ﯾ ﺪﯾ ﺮ و ﻫﻤﭽﻨﯿﻦ اﺳﺘﻘﻼل ﻧﺴﺒﯽ ﻣﻨﻄﻖ، ﻇﺎﻫﺮ و ورودی/ﺧﺮوﺟ ﺻﻔﺤﻪ از ﯾ ﺪﯾ ﺮ ﻣ -

ﺷﻮد و ﮐﺎر ﺗﯿﻤ ﺑﺮ روی ﭘﺮوژه را ﺑﺴﯿﺎر ﺳﺎده ﻣ ﺳﺎزد. ﻫﻤﭽﻨﯿﻦ ﺗﻐﯿﯿﺮات در ﻇﺎﻫﺮ ﺻﻔﺤﻪ،

ورودی/ﺧﺮوﺟ ﺻﻔﺤﻪ و ﻣﻨﻄﻖ ﺻﻔﺤﻪ ﻫﺮﮐﺪام ﺟﺪاﮔﺎﻧﻪ اﻧﺠﺎم و اﻋﻤﺎل ﻣ ﮔﺮدد.

ﻢﺘﺴﯿﺳﻫﺎی ﻣﺒﺘﻨ ﺑﺮ MVC، ﻣﻌﻤﻮﻻ ﯾ ﮐﻨﺘﺮﻟ ﺮ ﻣﺮﮐﺰی ﺑﻪ ﻧﺎم Front Controller

دارﻧﺪ ﮐﻪ وﻇﯿﻔﻪ درﯾﺎﻓﺖ ﻫﻤﻪ درﺧﻮاﺳﺖﻫﺎی ﮐﺎرﺑﺮ، ﺗﻔﮑﯿ و آدرسدﻫ آﻧﻬﺎ و اﺟﺮای

ﮐﻨﺘﺮﻟ ﺮ ﻣﺮﺑﻮﻃﻪ را دارد.

54

ﺷﻞ ٤٤ ﻣﻌﻤﺎری ﻣﺪل، ﻧﻤﺎ، ﮐﻨﺘﺮﻟﺮ

٢٬۵٬٢ Component Based MVC از ﻣﺸ ﻼت ﻋﻤﺪه MVC، اﺳﺘﻔﺎده ﻣﺠﺪد ﺑﺴﯿﺎر ﮐﻢ از ﮐﺪﻫﺎی آﻣﺎده اﺳﺖ. ﺑﻪ ﻋﻨﻮان

ﻣﺜﺎل اﮔﺮ دو ﺻﻔﺤﻪ ﻇﺎﻫﺮی ﺑﺴﯿﺎر ﺷﺒﯿﻪ و ﭘﯿﭽﯿﺪه داﺷﺘﻪ ﺑﺎﺷﻨﺪ، راه ﻣﻌﻤﻮﻟ ﺑﺮای اﺳﺘﻔﺎده

ﻣﺠﺪد از ﮐﺪ ﯾ در دﯾ ﺮی وﺟﻮد ﻧﺪارد. اﯾﻦ ﻣﺴﺌﻠﻪ در زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪﺳﺎزی ﺗﺤﺖ وﺑﯽ ﮐﻪ

ﺧﺮوﺟ اﻧﺒﻮه در آﻧﻬﺎ ﻣﺸ ﻞ اﺳﺖ (ﻣﺎﻧﻨﺪ ﺟﺎوا) ﺑﯿﺸﺘﺮ رخ ﻣ ﻧﻤﺎﯾﺪ.

راﻫ ﺎر اﺑﺘﺪاﯾﯽ اﯾﻨﮕﻮﻧﻪ زﺑﺎنﻫﺎ در ﺗﻮﺳﻌﻪ وب، ﺗﻮﺳﻌﻪ Component ﻣﺤﻮرﺑﻮد. در اﯾﻦ

روش، ﻫﺮ اﻟﻤﺎن ﻧﻤﺎﯾﺸ ﯾ ﻣﻮﻟﻔﻪ ﻣﺴﺘﻘﻞ اﺳﺖ ﮐﻪ ﭘﺲ از ﺗﻨﻈﯿﻢ ﭘﺎراﻣﺘﺮﻫﺎﯾﺶ، ﺧﺮوﺟ

ﻣﺮﺑﻮﻃﻪ را ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل، ﯾ ﺟﺪول ﯾ ﺷ ء اﺳﺖ ﮐﻪ ﭘﺲ از ﺗﻨﻈﯿﻢ 55

ﻣﻨﺒﻊ اﻃﻼﻋﺎت و وﯾﮋﮔ ﻫﺎی ﮐﻠ ﻇﺎﻫﺮی آن، ﺧﻮد را ﺑﺮ روی ﺻﻔﺤﻪ رﺳﻢ ﻣ ﮐﻨﺪ و ﮐﺪ رﺳﻢ

آن ﯾ ﺒﺎر ﺑﺮای ﻫﻤﯿﺸﻪ در ﺷ ء آن ﺗﻨﻈﯿﻢ ﺷﺪه اﺳﺖ.

ﻣﺸ ﻞ اﯾﻦ روش، ﻋﺪم اﻣ ﺎن ﭼﯿﺪﻣﺎن دﻟﺨﻮاه ﺻﻔﺤﻪ ﺑﻮد. در واﻗﻌﻪ ﭼﻬﺎرﭼﻮبﻞﺜﻣ ﯾﺎﻫ wicket ﻪﻣﺎﻧﺮﺑﻧﻮﯾﺲ را ﻣﺠﺒﻮر ﻣ ﮐﻨﻨﺪ ﺗﺎ ﺑﺮای ﻫﺮ ﺻﻔﺤﻪ، ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺒﯽ درﺧﺘ از ﻣﻮﻟﻔﻪﺎﻫ

ﺑﭽﯿﻨﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ ﺑﻪ ﺳﺎدﮔ آﻧﻬﺎ را اﺳﺘﻔﺎده ﻣﺠﺪد ﮐﻨﺪ.

ﻫﻤﭽﻨﯿﻦ ﺳﺎدﮔ ﻃﺮاﺣ MVC ﻧﯿﺰ در اﯾﻦ روش وﺟﻮد ﻧﺪاﺷﺖ، زﯾﺮا MVC ﻪﺑ ﺮﺘ ﯿﺑ

ﭼﯿﺰی ﮐﻪ ﮐﺎرﺑﺮ ﺳﯿﺴﺘﻢ از آن ﻣ ﺧﻮاﻫﺪ ﻧﺰدﯾ اﺳﺖ.

از ﺗﺮﮐﯿﺐ اﯾﻦ دو روش، Component Based MVC ﺑﻪ وﺟﻮد آﻣﺪ. اﯾﻦ اﻟ ﻮ، اﻣ ﺎن

ﻪﻔﻟﻮﻣ ﻒﯾﺮﻌﺗﻫﺎﯾﯽ ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﻞ و اﺳﺘﻔﺎده از آﻧﻬﺎ در View ﻫﺎ را ﻓﺮاﻫﻢ ﻣ آورد. ﺑﺪﯾﻦ

ﺻﻮرت ﺑﻪ ﺳﺎدﮔ ﺑﺎ Refactoring ﻣ ﺗﻮان اﺳﺘﻔﺎده ﻣﺠﺪد از ﮐﺪ را ﻓﺮاﻫﻢ آورد.

ﺑﺮای ﺗﻬﯿﻪ ﻣﻮﻟﻔﻪﻪﻣﺎ ﺮﺑ ،ﺎﻫﻧﻮﯾﺲ ارﺷﺪ ﮐﻪ ﺑﻪ ﺑﺨﺶﻫﺎی ﻣﺨﺘﻠﻒ ﮐﺪ اﺣﺎﻃﻪ ﮐﺎﻓ دارد،

ﺖﻤﺴﻗﻫﺎی ﻣﺸﺎﺑﻪ را ﺷﻨﺎﺳﺎﯾﯽ ﮐﺮده، آﻧﻬﺎ را ﻣﻮﻟﻔﻪ ﻣﺤﻮر ﮐﺮده و ﻣﻮﻟﻔﻪ ﻣﺮﺑﻮﻃﻪ را ﻣ ﺳﺎزد.

در ﺣﺎل ﺣﺎﺿﺮ اﯾﻦ روش ﻫﻨﻮز ﻣﺤﺒﻮﺑﯿﺖ ﺗﺠﺎری ﺐﺴﮐ ﻧﮑﺮده و در ﻓﺎز ﺑﻠﻮغ اﺳﺖ.

ﻧﺎم دﯾ ﺮ اﯾﻦ اﻟ ﻮ، Pull MVC اﺳﺖ زﯾﺮا ﻧﻤﺎ ﻇﺎﻫﺮ ﺧﻮد را از ﻣﻮﻟﻔﻪﻫﺎ ﺑﺎ ﮐﺸﯿﺪن درﯾﺎﻓﺖ

ﻣ ﺪﻨﮐ.

٢٬٦ ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب

وب، ﯾ ﺑﺴﺘﺮ ﺳﺎده و ﺟﻤ و ﺟﻮر ﺑﺮای اراﺋﻪ ﻣﯿﻠﯿﻮن ﻫﺎ ﮐﺎرﺑﺮد اﺳﺖ. وب ﻣﺎﻧﻨﺪ آﺟﺮ و

ﻓﻠﺰ اﺳﺖ، ﺑﺎ آﺟﺮ و ﻓﻠﺰ ﻣ ﺗﻮان ﯾ ﺳﺎﺧﺘﻤﺎن ﺳﺎﺧﺖ، اﻣﺎ اﮔﺮ ﻫﺰاران ﺷﺮﮐﺖ ﻗﺼﺪ ﺳﺎﺧﺘﻦ

56

ﻫﺰاران ﺳﺎﺧﺘﻤﺎن ﺑﺰرگ را داﺷﺘﻪ ﺑﺎﺷﻨﺪ، اﺻﻼ ﻣﻌﻘﻮل ﻧﯿﺴﺖ ﮐﻪ ﻫﻤﻪ از آﺟﺮ و ﻓﻠﺰ اﺳﺘﻔﺎده

ﮐﻨﻨﺪ. در ﻋﻮض از اﺑﺰار از ﭘﯿﺶ آﻣﺎده، ﻓﻠﺰﻫﺎی ﺑﺮش ﺧﻮرده ﻣﺨﺘﻠﻒ، آﺟﺮﻫﺎی ﻣﺨﺘﻠﻒ و ...

اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ و ﺑﺎ ﺻﺮف ﻫﺰﯾﻨﻪ و زﻣﺎن ﺑﺴﯿﺎر ﭘﺎﯾﯿﻨﺘﺮی ﺳﺎﺧﺘﻤﺎن ﺧﻮد را ﻣ ﺳﺎزﻧﺪ.

ﺣﺎل اﮔﺮ ﺑﺨﻮاﻫﻨﺪ ﺳﺎﺧﺘﻤﺎﻧ ﺑﺴﺎزﻧﺪ ﮐﻪ ﻫﻤﻪ اﯾﺪه ﻫﺎی آن ﺟﺪﯾﺪ ﺑﺎﺷﺪ، ﺑﺎﯾﺪ ﺧﻮد از اﺑﺘﺪا

آﺟﺮﻫﺎ و ﻓﻠﺰﻫﺎ را ﺗﺮاش دﻫﻨﺪ و اﺑﺰار ﺧﻮد را آﻣﺎده ﺳﺎزﻧﺪ.

ﺷﻞ ٤٥ ﺗﺎرﯾﺨﭽﻪ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺤﺒﻮب ﺗﻮﺳﻌﻪ وب در ﮐﻨﺎر ﮐﺎوﺷﺮﻫﺎ

٢٬۶٬١ اﻧﻮاع ﭼﻬﺎرﭼﻮب ﺑﻪ ﺗﻔﮑﯿ ﻧﻮع زﺑﺎن

ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب را ﻣ ﺗﻮان ﺑﻪ دو دﺳﺘﻪ ﮐﻠ ﺗﻘﺴﯿﻢ ﻧﻤﻮد:

اﻟﻒ) ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻮﺟﻮد ﺑﺮ روی زﺑﺎنﻫﺎی ﻏﯿﺮ وﺑﯽ

ب) ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻮﺟﻮد ﺑﺮ روی زﺑﺎنﻫﺎی وﺑﯽ

57

ﻻزم ﺑﻪ ذﮐﺮ اﺳﺖ ﮐﻪ ﺑﺮﺧ از ﭼﻬﺎرﭼﻮبﻫﺎ ﺑﺮ روی ﭼﻨﺪﯾﻦ زﺑﺎن ﻗﺮار دارﻧﺪ و

ﻣﺤﺪود ﺑﻪ ﯾ زﺑﺎن ﺑﺮﻧﺎﻣﻪﺳﺎزی ﻧﯿﺴﺘﻨﺪ، وﻟ اﯾﻦ ﺗﻔﮑﯿ از ﺳﻄﺤ ﺑﺎﻻﺗﺮ ﺑﻪ ﻣﻮﺿﻮع ﻣ -

ﻧﮕﺮد.

٢٬٦٬١٬١ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻮﺟﻮد ﺑﺮ روی زﺑﺎنﻫﺎی ﻏﯿﺮ وﺑﯽ

ﭼﻬﺎرﭼﻮبﻫﺎﯾﯽ ﮐﻪ ﺑﺮای زﺑﺎنﻫﺎی ﻏﯿﺮ وﺑﯽ ﻃﺮاﺣ ﺷﺪهاﻧﺪ، اﺑﺘﺪا ﺑﺎﯾﺪ ﮐﺪﻫﺎی ﻣﺮﺑﻮط ﺑﻪ

رﻓﺘﺎر ﭘﺮوﺗﮑﻞﻫﺎی وﺑﯽ را دارا ﺑﺎﺷﻨﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﭼﻬﺎرﭼﻮب django ﮐﻪ ﺑﺮای زﺑﺎن python وﺟﻮد دارد، رﻓﺘﺎر و وﯾﮋﮔ ﻫﺎی HTTP را در ﺧﻮد ﮔﻨﺠﺎﻧﯿﺪه اﺳﺖ.

در اداﻣﻪ اﯾﻦ دﺳﺘﻪ از ﭼﻬﺎرﭼﻮبﻫﺎ ﺑﺎﯾﺪ وﯾﮋﮔ ﻫﺎی ﺟﺎﻧﺒﯽ ﮐﻪ ﭼﻬﺎرﭼﻮبﻫﺎی زﺑﺎنﻫﺎی

وﺑﯽ دارﻧﺪ ﻧﯿﺰ دارا ﺑﺎﺷﻨﺪ. اﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎ ﺑﻪ دﻟﯿﻞ ﭘﯿﭽﯿﺪﮔ زﯾﺎد، ﻣﻌﻤﻮﻻ ﮐﻢ ﻫﺴﺘﻨﺪ وﻟ

اﺳﺘﻔﺎده ﻗﺎﺑﻞ ﺗﻮﺟﻬ از آﻧﺎن ﻣ ﮔﺮدد.

٢٬٦٬١٬٢ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻮﺟﻮد ﺑﺮ روی زﺑﺎنﻫﺎی وﺑﯽ

ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺨﺼﻮص زﺑﺎنﻫﺎی وﺑﯽ، ﺑﻪ ﭘﯿﺎدهﺳﺎزی وﯾﮋﮔ ﻫﺎی ﻣﺸﺘﺮک و ﭘﺮﮐﺎرﺑﺮد

اﻧﻮاع ﻧﺮماﻓﺰارﻫﺎی وب ﻣ ﭘﺮدازﻧﺪ. ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻨﻮع ﻧﯿﺎزﻫﺎی اﻧﻮاع ﻧﺮماﻓﺰارﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب،

ﺗﻨﻮع زﯾﺎدی ﻧﯿﺰ در اﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎ، اﻣ ﺎﻧﺎت و ﻣﺤﺪودﯾﺖﻫﺎﯾﺸﺎن وﺟﻮد دارد.

ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺨﺼﻮص زﺑﺎنﻫﺎی وﺑﯽ اﻣ ﺎﻧﺎت ﻣﺸﺘﺮﮐ را ﭘﯿﺎدهﺳﺎزی ﻣ ﮐﻨﻨﺪ ﮐﻪ در

اداﻣﻪ ﺑﺪاﻧﻬﺎ اﺷﺎره ﺧﻮاﻫﺪ ﺷﺪ.

٢٬۶٬٢ وﯾﮋﮔﻫﺎی ﻣﺸﺘﺮک ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب

اﮐﺜﺮ ﻧﺮماﻓﺰارﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب (و ﺣﺘ ﻧﺮماﻓﺰارﻫﺎی ﻣﯿﺰ ﮐﺎر) از اﻣ ﺎﻧﺎت ﻣﺸﺘﺮک ﺑﺴﯿﺎری

ﺑﻬﺮه ﻣ ﮔﯿﺮﻧﺪ. از اﯾﻦ اﻣ ﺎﻧﺎت ﻣ ﺗﻮان ﺑﻪ ﻣﺪﯾﺮﯾﺖ ﮐﺎﺑﺮان و ﻣﺪﯾﺮﯾﺖ ﻧﺸﺴﺖ اﺷﺎره ﻧﻤﻮد. در

اداﻣﻪ ﻣﻮارد ﻣﻬﻢ اﯾﻦ اﻣ ﺎﻧﺎت ﺑﻪ ﺗﻔﺼﯿﻞ ﻣﻮرد ﺑﺮرﺳ ﻗﺮار ﺧﻮاﻫﻨﺪ ﮔﺮﻓﺖ:

58

٢٬٦٬٢٬١ دﺳﺘﺮﺳ ﺑﻪ داده

از ﻣﻬﻤﺘﺮﯾﻦ و ﻣﻌﻤﻮلﺗﺮﯾﻦ وﻇﺎﯾﻒ ﯾ ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار، ﻣﺪﯾﺮﯾﺖ دﺳﺘﺮﺳ ﺑﻪ

ﭘﺎﯾ ﺎهداده اﺳﺖ. از آﻧﺠﺎﯾﯽ ﮐﻪ اﮐﺜﺮ ﮐﺎرﺑﺮدﻫﺎی دﯾ ﺮ ﭼﻬﺎرﭼﻮبﻫﺎ ﻧﯿﺰ ﻣﺒﺘﻨ ﺑﺮ ﯾ ﭘﺎﯾ ﺎهداده

اﺳﺖ، اﯾﻦ وﯾﮋﮔ اﺑﺘﺪا و ﺑﻪ ﻋﻨﻮان زﯾﺮﺳﺎﺧﺖ اﻣ ﺎﻧﺎت ﭼﻬﺎرﭼﻮب اراﺋﻪ ﻣ ﮔﺮدد.

ﺑﺮای دﺳﺘﺮﺳ ﺑﻪ ﭘﺎﯾ ﺎه داده، ﺳﻪ روش ﮐﻠ وﺟﻮد دارد ﮐﻪ در اداﻣﻪ ﺑﻪ ﺗﻔﺼﯿﻞ ﺑﺮرﺳ

ﺧﻮاﻫﻨﺪ ﺷﺪ. ﻻزم ﺑﻪ ذﮐﺮ اﺳﺖ ﮐﻪ دﺳﺘﺮﺳ ﺑﻪ داده از ﻣﻬﻤﺘﺮﯾﻦ ﻧﻘﺎط ﺿﻌﻒ و ﻗﻮت اﻣﻨﯿﺘ

ﯾ ﭼﻬﺎرﭼﻮب و ﻧﺮماﻓﺰارﻫﺎی ﺣﺎﺻﻞ از آن ﺧﻮاﻫﺪ ﺑﻮد ﮐﻪ در ﻣﻮرد ﻣﺨﺎﻃﺮات آن در ﺑﺨﺶ

ﻣﺨﺎﻃﺮات اﻣﻨﯿﺘ ﺑﺤﺚ ﺧﻮاﻫﺪ ﺷﺪ.

٢٬٦٬٢٬١٬١ دﺳﺘﺮﺳ ﺑﻪ داده ﻣﺴﺘﻘﯿﻢ (Native)

ﻫﺮ ﭘﺎﯾ ﺎهدادهای اﻣ ﺎﻧﺎت ﻣﻨﺤﺼﺮ ﺑﻔﺮد ﺧﻮد را دارد. ﻫﻤﭽﻨﯿﻦ ﻫﺮ ﭘﺎﯾ ﺎهدادهای ﺗﻮاﺑﻊ،

اﻣ ﺎﻧﺎت و رﻓﺘﺎرﻫﺎی ﺧﺎص ﺧﻮد را ﻧﯿﺰ داراﺳﺖ. ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﭘﺎﯾ ﺎﻫ ﺑﺮای ﻫﺮ ﭘﺎﯾ ﺎهداده و

ﻫﺮ زﺑﺎن ﺗﻮﺳﻌﻪ وب، ﯾ «واﺳﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﭘﺎﯾ ﺎﻫ » اﯾﺠﺎد ﻣ ﻪﻣﺎﻧ ﺑ ﺗ ﺪﻨﻨﮐﻧﻮﯾﺴﺎن زﺑﺎن

ﻣﺮﺑﻮﻃﻪ ﺑﺎ اﺳﺘﻔﺎده از آن ﺑﺘﻮاﻧﻨﺪ ﺑﻪ ﺳﺎدﮔ ﺑﺎ ﭘﺎﯾ ﺎهداده ﻣﺮﺑﻮﻃﻪ ﮐﺎر ﮐﻨﻨﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﻫﺮ ﭘﺎﯾ ﺎهداده ﺧﻮد دارای ﻣﻮﺗﻮر ﭘﺮدازﺷ و اﻣ ﺎن اﺟﺮای دﺳﺘﻮرات ﻣﺘﻨﻮع

اﺳﺖ، دادهﻫﺎﯾﯽ ﮐﻪ ﻧﺮماﻓﺰار از ﻃﺮﯾﻖ واﺳﻂ ﺑﻪ ﭘﺎﯾ ﺎه ارﺳﺎل ﻣ ﻧﻤﺎﯾﺪ اﻫﻤﯿﺖ اﺟﺮاﯾﯽ دارﻧﺪ و

در ﭘﺎﯾ ﺎه اﺟﺮا ﻣ ﺷﻮﻧﺪ. ﺗﻮﺟﻪ ﺑﻪ اﯾﻦ ﻧﮑﺘﻪ در ﺑﺮرﺳ اﻣﻨﯿﺘ ﭘﺎﯾ ﺎهﻫﺎی داده ﺑﺴﯿﺎر ﺣﺎﺋﺰ

اﻫﻤﯿﺖ اﺳﺖ.

از ﺑﺎرزﺗﺮﯾﻦ وﯾﮋﮔ ﻫﺎی زﺑﺎن PHP دارا ﺑﻮدن واﺳﻂ ﮐﺎر ﺑﺎ اﻧﻮاع ﭘﺎﯾ ﺎهدادهﻫﺎی ﻣﺘﻨﻮع

اﺳﺖ. ﮐﺎرﺷﻨﺎﺳﺎن ﯾ از دﻻﯾﻞ ﻣﺤﺒﻮﺑﯿﺖ اﯾﻦ زﺑﺎن را ﻫﻤﯿﻦ اﻣ ﺎن ذﮐﺮ ﮐﺮدهاﻧﺪ.

59

ﻣﺸ ﻞ ﻋﻤﺪه در اﺳﺘﻔﺎده از ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺤﻠ (Native) ﯾ ﭘﺎﯾ ﺎه داده در ﺑﺮﻧﺎﻣﻪ و

ﻫﻤﭽﻨﯿﻦ در ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻌﻪ وب، ﻣﺤﺪود ﮐﺮدن ﺳﯿﺴﺘﻢ ﺑﻪ آن ﺳﯿﺴﺘﻢ ﭘﺎﯾ ﺎﻫ و ﻟﺬا

ﻣﺤﺪود ﮐﺮدن ﻣﺨﺎﻃﺒﺎن آن ذﮐﺮ ﻣ ﺷﻮد. ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ اﮐﺜﺮ ﭼﻬﺎرﭼﻮبﻫﺎ از اﯾﻦ اﻣ ﺎن

اﺳﺘﻔﺎده ﻧﻤ ﺪﻨﯾﺎﻤﻧ.

ﻫﻤﭽﻨﯿﻦ ﺑﺮﺧ ﭘﺎﯾ ﺎهﻫﺎی ﭘﺮ ﻣﺨﺎﻃﺐ ﻣﺎﻧﻨﺪ MySQL دارای ﭼﻨﺪﯾﻦ واﺳﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ

در ﺑﻌﻀ زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪﺳﺎزی ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺮﺧ واﺳﻄﻬﺎ اﻣ ﺎﻧﺎت و ﭘﯿﭽﯿﺪﮔ ﺑﯿﺸﺘﺮی دارد.

ﺑﻪ ﻃﻮر ﮐﻠ در اﯾﻦ روش ﮐﺎر ﺑﺎ ﭘﺎﯾ ﺎهداده، ﻓﺮآﯾﻨﺪ زﯾﺮ ﻃ ﻣ ﮔﺮدد:

أ) اﺗﺼﺎل ﺑﻪ ﭘﺎﯾ ﺎه

در اﯾﻦ ﻣﺮﺣﻠﻪ، ﺑﺎ دﺳﺘﻮری ﺧﺎص (ﻣﺜﻼ ﺑﺮایMySQL , PHP دﺳﺘﻮر mysql_connect

اﺳﺘﻔﺎده ﻣ ﺷﻮد) و اراﺋﻪ ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر و ﻫﻤﭽﻨﯿﻦ آدرس ﺳﺮور ﭘﺎﯾ ﺎه ﺑﻪ آن، اﺗﺼﺎل

ﺑﻪ ﭘﺎﯾ ﺎه داده ﺑﺮﻗﺮار ﻣ ﺷﻮد.

آدرس ﺳﺮور ﭘﺎﯾ ﺎه ﻣﻌﻤﻮﻻ localhost ﺑﻪ ﻣﻌﻨ ﺳﯿﺴﺘﻤ ﮐﻪ ﺑﺮ روی آن ﺑﺮﻧﺎﻣﻪ اﺟﺮا

ﻣﯿﺸﻮد، ﻗﺮار ﻣ ﮔﯿﺮد زﯾﺮا در اﮐﺜﺮ ﻣﻌﻤﺎریﻫﺎی ﺳﺮور ﭘﺎﯾ ﺎه داده ﻧﯿﺰ ﺑﺮ روی ﻫﻤﺎن ﺳﯿﺴﺘﻢ

ﺳﺮور وب ﻗﺮار دارد. در ﺻﻮرﺗ ﮐﻪ ﺳﺮور ﭘﺎﯾ ﺎه ﺑﺮ روی ﯾ ﺳﯿﺴﺘﻢ اﺧﺘﺼﺎﺻ اﺟﺮا ﺷﺪه

ﺑﺎﺷﺪ، ﻣ ﺗﻮان آدرس آﻧﺮا اراﺋﻪ داد.

ﭘﺎﯾ ﺎهﻫﺎی داده دﺳﺘﺮﺳ ﺑﻪ ﻗﺴﻤﺖﻫﺎی ﻣﺨﺘﻠﻒ داده از ﺳﺮورﻫﺎی ﻣﺨﺘﻠﻒ و اﻧﻮاع اﯾﻦ

دﺳﺘﺮﺳ ﻫﺎ را ﺗﻮﺳﻂ ﻧﺎمﻫﺎی ﮐﺎرﺑﺮی و رﻣﺰﻫﺎی ﻋﺒﻮر ﻣﺤﺪود ﻣ ﮐﻨﻨﺪ، ﻟﺬا ﻧﺮماﻓﺰار ﻣﺮﺑﻮﻃﻪ

ﺟﻬﺖ اﺗﺼﺎل ﺑﺎﯾﺪ اﯾﻦ ﭘﺎراﻣﺘﺮﻫﺎ را اراﺋﻪ ﻧﻤﺎﯾﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ اﯾﻦ ﭘﺎراﻣﺘﺮﻫﺎ ﺑﻪ ﺻﻮرت ﮐﺪﺳﺨﺖ (Hardcode) در ﻣﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻗﺮار ﻣ -

ﮔﯿﺮﻧﺪ، در ﺻﻮرﺗ ﮐﻪ ﻧﻔﻮذﮔﺮی ﺑﻪ ﮐﺪ ﻣﻨﺒﻊ ﺑﺮﻧﺎﻣﻪ دﺳﺘﺮﺳ ﭘﯿﺪا ﮐﻨﺪ، آﻧﻬﺎ را ﺧﻮاﻫﺪ ﯾﺎﻓﺖ.

60

ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ ﻣﻌﻤﻮﻻ ﻣﺤﺪودﯾﺖ دﺳﺘﺮﺳ ﯾ ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر ﺑﻪ ﭘﺎﯾ ﺎهداده از روی

ﯾ ﺳﺮور ﺧﺎص ﻧﯿﺰ اﻋﻤﺎل ﻣ ﮔﺮدد (ﺗﺎ ﻧﻔﻮذﮔﺮ از روی راﯾﺎﻧﻪ ﺷﺨﺼ ﺧﻮد ﻧﺘﻮاﻧﺪ ﻣﺴﺘﻘﯿﻤﺎ ﺑﻪ

ﭘﺎﯾ ﺎه ﻣﺘﺼﻞ ﺷﻮد)

در ﺻﻮرﺗ ﮐﻪ راهاﻧﺪازی (ِ Deployment) ﻧﺮماﻓﺰار ﺑﺎ ﺑﯽ ﺣﻮﺻﻠ اﻧﺠﺎم ﺷﻮد، در

ﺗﻨﻈﯿﻤﺎت اﺗﺼﺎل ﺑﻪ ﭘﺎﯾ ﺎهداده آن، ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر ﻣﺪﯾﺮ ﭘﺎﯾ ﺎه داده ( root ﺎﯾ sysadmin) درج ﻣ ﺷﻮد ﺗﺎ ﻧﺮماﻓﺰار ﺑﺎ دﺳﺘﺮﺳ ﮐﺎﻣﻞ ﺑﻪ ﺳﺎدﮔ ﮐﺎر ﮐﻨﺪ. اﯾﻦ ﻋﻤﻞ از ﻣﻨﻈﺮ

اﻣﻨﯿﺘ ﺑﺴﯿﺎر ﺑﺴﯿﺎر ﺧﻄﺮﻧﺎک اﺳﺖ، زﯾﺮا در ﺻﻮرﺗ ﮐﻪ ﻧﻔﻮذﮔﺮی ﺑﺘﻮاﻧﺪ ﯾ ﺑﺮﻧﺎﻣﻪ روی ﺳﺮور

را ﻫ ﮐﻨﺪ، ﺑﻪ ﺗﻤﺎم دادهﻫﺎی ﺗﻤﺎم ﺑﺮﻧﺎﻣﻪﻫﺎی روی آن ﺳﺮور دﺳﺘﺮﺳ ﮐﺎﻣﻞ ﭘﯿﺪا ﺧﻮاﻫﺪ

ﮐﺮد.

ب) اﻧﺘﺨﺎب ﻣﻨﺒﻊ داده ﻣﺮﺑﻮﻃﻪ

ﻣﻌﻤﻮﻻ ﻫﺮ ﻧﺮماﻓﺰار ﺗﻨﻬﺎ ﺑﺎ ﯾ ﭘﺎﯾ ﺎه داﺧﻞ ﯾ ﺳﺮور ﭘﺎﯾ ﺎهداده ﮐﺎر ﻣ ﮐﻨﺪ، ﻟﺬا ﭘﺲ از

اﺗﺼﺎل ﻣ ﺗﻮاﻧﺪ ﺑﺎ دﺳﺘﻮر ﺧﺎﺻ (mysql_select_db در PHP,MySQL) آﻧﺮا اﻧﺘﺨﺎب ﻧﻤﺎﯾﺪ

ﺗﺎ ﺗﻤﺎم دﺳﺘﻮرات ﺑﻌﺪی در ﻗﺎﻟﺐ آن ﭘﺎﯾ ﺎه اﻧﺠﺎم ﺷﻮد و ﻧﯿﺎزی ﺑﻪ ذﮐﺮ ﺻﺮﯾﺢ ﻧﺎم آن ﻧﺒﺎﺷﺪ.

ت) ارﺳﺎل دﺳﺘﻮرات

ﻗﺴﻤﺖ ﻋﻤﺪه ﯾ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ارﺳﺎل دﺳﺘﻮرات SQL ﺑﻪ ﭘﺎﯾ ﺎهداده و ﺑﺮرﺳ ﺣﺎﺻﻞ آﻧﻬﺎ

ﻣ ﭘﺮدازد. دﺳﺘﻮرات ﭘﺎﯾ ﺎﻫ (SQL) ﺑﻪ ﺳﻪ دﺳﺘﻪ اﺻﻠ ﺗﻘﺴﯿﻢ ﻣ ﮔﺮدﻧﺪ:

Data Definition Language (DDL) (i : دﺳﺘﻮرات ﺗﻌﺮﯾﻒ داده ﮐﻪ

ﺖﻬﺟ ﺗﻌﯿﯿﻦ ﺳﺎﺧﺘﺎر ﺟﺪاول و ﻓﯿﻠﺪﻫﺎ ﯾ ﺒﺎر در اﺑﺘﺪای اﯾﺠﺎد ﭘﺎﯾ ﺎه

اﺳﺘﻔﺎده ﻣ ﺪﻧﻮﺷ

61

Data Manipulation Language (DML) (ii : دﺳﺘﻮرات ﺗﻐﯿﯿﺮ و

دﺳﺘﮑﺎری داده ﮐﻪ ﺟﻬﺖ ﮐﺎر ﺑﺎ دادهﻫﺎ در ﺗﻤﺎم ﻃﻮل ﻋﻤﺮ اﺳﺘﻔﺎده ﻣ -

ﺷﻮﻧﺪ.

Data Control Language (DCL) (iii : دﺳﺘﻮرات ﮐﻨﺘﺮل داده ﮐﻪ ﺟﻬﺖ

ﺗﻌﯿﯿﻦ دﺳﺘﺮﺳ ﮐﺎرﺑﺮان ﺑﻪ دادهﻫﺎ اﺳﺘﻔﺎده ﻣ ﺷﻮد و ﻣﻌﻤﻮﻻ در اﺑﺘﺪای

ﺳﺎﺧﺖ ﮐﺎرﺑﺮد دارﻧﺪ.

ﺷﻞ Structured Query Language٤٦ زﺑﺎن اﺳﺘﺎﻧﺪارد درﺧﻮاﺳﺖﻫﺎی ﭘﺎﯾﺎﻫ

از ﺳﻪ دﺳﺘﻪ ﻓﻮق، در اﮐﺜﺮ ﻗﺮﯾﺐ ﺑﻪ اﺗﻔﺎق ﮐﺎرﺑﺮدﻫﺎ، ﺗﻨﻬﺎ دﺳﺘﻮرات ﺗﻐﯿﯿﺮ داده در ﯾ

ﺑﺮﻧﺎﻣﻪ اﺳﺘﻔﺎده ﻣ ﺷﻮﻧﺪ. دو دﺳﺘﻪ دﯾ ﺮ ﺗﻮﺳﻂ اﺑﺰار ﭘﺎﯾ ﺎﻫ ﻗﺒﻞ از راهاﻧﺪازی ﺑﺮﻧﺎﻣﻪ اﻧﺠﺎم

ﻣ ﺷﻮﻧﺪ و ﺑﺴﺘﺮ را ﻓﺮاﻫﻢ ﻣ آورﻧﺪ.

ﺑﻪ دﺳﺘﻮرات ارﺳﺎﻟ ﺑﻪ ﯾ ﭘﺎﯾ ﺎه داده Query (درﺧﻮاﺳﺖ) ﻣ ﮔﻮﯾﻨﺪ. دﺳﺘﻮرات

دﺳﺘﮑﺎری داده ﭼﻬﺎر دﺳﺘﻮر اﺻﻠ ﻫﺴﺘﻨﺪ:

DELETE (i: ﺟﻬﺖ ﺣ ﺬ ف رﮐﻮردﻫﺎ ﺑﻪ ﮐﺎر ﻣ آﯾﺪ. ﺧﺮوﺟ ﻣﻄﻠﻮب آن

ﻣﻌﻤﻮﻻ ﺗﻌﺪاد رﮐﻮردﻫﺎی ﺣﺬف ﺷﺪه اﺳﺖ

62

UPDATE (ii: ﺟﻬﺖ ﺗﻐﯿﯿﺮ رﮐﻮردﻫﺎ ﺑﻪ ﮐﺎر ﻣ آﯾﺪ. ﺧﺮوﺟ ﻣﻄﻠﻮب آن

ﺗﻌﺪاد رﮐﻮردﻫﺎی ﺗﻐﯿﯿﺮ ﯾﺎﻓﺘﻪ اﺳﺖ.

INSERT (iii: ﺟﻬﺖ درج رﮐﻮرد ﺑﻪ ﮐﺎر ﻣ آﯾﺪ. در ﺻﻮرﺗ ﮐﻪ درج ﺗﮑ

اﻧﺠﺎم ﺷﻮد، ﺧﺮوﺟ ﻣﻄﻠﻮب ﺷﻨﺎﺳﻪ رﮐﻮرد درج ﺷﺪه اﺳﺖ و در ﺻﻮرﺗ

ﮐﻪ درج ﮔﺮوﻫ اﻧﺠﺎم ﺷﻮد ﺗﻌﺪاد رﮐﻮردﻫﺎی درج ﺷﺪه ﻣﻄﻠﻮب اﺳﺖ.

SELECT (iv: ﺟﻬﺖ ﺑﺎزﺧﻮاﻧ و درﯾﺎﻓﺖ رﮐﻮردﻫﺎ ﮐﺎرﺑﺮد دارد. ﺧﺮوﺟ

ﻣﻄﻠﻮب ﺗﻌﺪاد و داده رﮐﻮردﻫﺎﺳﺖ. ﺧﺮوﺟ اﯾﻦ دﺳﺘﻮر ﻣﻌﻤﻮﻻ ﺣﺠﯿﻢ

اﺳﺖ و ﺗﻨﻬﺎ ﯾ ﻋﺪد ﻧﯿﺴﺖ.

ﭘﺲ از اﺟﺮای ﯾ دﺳﺘﻮر در زﺑﺎن ﺑﺮﻧﺎﻣﻪﺳﺎزی، ﭘﺎﯾ ﺎه داده ﺗﻨﻬﺎ ﯾ دﺳﺘﮕﯿﺮه (ﺷﻤﺎره

ﺷﻨﺎﺳﻪ ﭘﯿ ﯿﺮی) ﺑﺎز ﻣ ﮔﺮداﻧﺪ. در ﺻﻮرﺗ ﮐﻪ دﺳﺘﻮر ﺳﻪ ﻧﻮع اول ﺑﺎﺷﺪ، اﻧﺠﺎم ﻣ ﺷﻮد وﻟ

درﯾﺎﻓﺖ ﭘﺎﺳ آن ﻣﺴﺘﻠﺰم اﺟﺮای ﺗﺎﺑﻌ دﯾ ﺮ اﺳﺖ. در ﺻﻮرﺗ ﮐﻪ دﺳﺘﻮر SELECT ﺪﺷﺎﺑ،

اﺟﺮا ﻧﻤ ﺷﻮد ﺑﻠ ﻪ ﻓﻘﻂ ﻣﻬﯿﺎی اﺟﺮا ﻣ ﮔﺮدد.

از ﭼﻬﺎر دﺳﺘﻮر ﻓﻮق، ﺧﺮوﺟ دو دﺳﺘﻮر اول در ﺳﯿﺴﺘﻢ ﭘﺎﯾ ﺎﻫ ﺗﻮﺳﻂ ﺗﺎﺑ ﻊ رﮐﻮردﻫﺎی

ﺗﻐﯿﯿﺮ ﯾﺎﻓﺘﻪ ﻗﺎﺑﻞ دﺳﺘﯿﺎﺑﯽ اﺳﺖ (mysql_affected_rows در PHP,MySQL) . اﯾﻦ ﺗﺎﺑﻊ

دﺳﺘﮕﯿﺮه درﺧﻮاﺳﺖ را ﺑﻪ ﻋﻨﻮان ورودی ﻣ ﮔﯿﺮد.

ﺧﺮوﺟ INSERT ﮔﺮوﻫ و ﻫﻤﭽﻨﯿﻦ ﺗﻌﺪاد رﮐﻮردﻫﺎی ﺣﺎﺻﻞ از SELECT ﻂﺳﻮﺗ

ﺗﺎﺑ ﻊ رﮐﻮردﻫﺎی ﯾﺎﻓﺖ ﺷﺪه ﻗﺎﺑﻞ دﺳﺘﺮﺳ اﺳﺖ. (mysql_num_rows در PHP,MySQL).

اﯾﻦ ﺗﺎﺑﻊ ﻧﯿﺰ دﺳﺘﮕﯿﺮه درﺧﻮاﺳﺖ را ﺑﻪ ﻋﻨﻮان ورودی ﻣ ﮔﯿﺮد.

در ﺻﻮرﺗ ﮐﻪ INSERT درون ﺟﺪوﻟ دارای ﮐﻠﯿﺪ اﺻﻠ ﺳﺎده اﺟﺮا ﺷﻮد ﮐﻪ ﺗﻮﺳﻂ ﺧﻮد

ﺳﺮور ﭘﺎﯾ ﺎهداده ﮐﻠﯿﺪدﻫ ﻣ ﺷﻮد (Auto Increment)، درﯾﺎﻓﺖ ﮐﻠﯿﺪ ﺻﺎدر ﺷﺪه – ﻪﮐ

63

ﺑﺴﯿﺎر ﭘﺮﮐﺎرﺑﺮد ﻧﯿﺰ ﻫﺖﺴ – ﺗﻮﺳﻂ ﺗﺎﺑﻊ ﺧﺎﺻ ﺻﻮرت ﻣ ﮔﯿﺮد. (mysql_last_insert_id در

PHP,MySQL) اﯾﻦ ﺗﺎﺑﻊ ﻧﯿﺰ دﺳﺘﮕﯿﺮه آﺧﺮﯾﻦ درﺧﻮاﺳﺖ را درﯾﺎﻓﺖ ﻣ ﺪﺷﺎ ﺺ ﺸﻣ ﺎ ﺪﻨﮐ

ﮐﻠﯿﺪ اﯾﺠﺎد ﺷﺪه ﻣﺮﺑﻮط ﺑﻪ ﮐﺪام درﺧﻮاﺳﺖ ﻣﻮرد ﻧﻈﺮ اﺳﺖ.

اﻣﺎ ﺧﺮوﺟ دﺳﺘﻮر SELECT ﮐﻪ در واﻗ ﺗﻌﺪادی رﮐﻮرد اﺳﺖ، ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﯿﻢ ﻗﺎﺑﻞ

دﺳﺘﯿﺎﺑﯽ ﻧﯿﺴﺖ. ﻫﻤﺎﻧﻄﻮر ﮐﻪ ذﮐﺮ ﺷﺪ اﯾﻦ دﺳﺘﻮر اﺻﻼ اﺟﺮا ﻧﻤ ﺷﻮد ﺗﺎ وﻗﺘ ﮐﻪ ﻗﺴﻤﺘ از

ﺧﺮوﺟ آن درﺧﻮاﺳﺖ ﺷﻮد.

دﻟﯿﻞ اﯾﻨﮑﻪ ﺧﺮوﺟ SELECT ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﯿﻢ ارﺟﺎع ﻧﻤ ﺷﻮد، ﺣﺠﯿﻢ ﺑﻮدن اﺣﺘﻤﺎﻟ

آن اﺳﺖ. ﯾ رﮐﻮرد ﭘﺎﯾ ﺎﻫ ﻣ ﺗﻮاﻧﺪ ﺣﺠﻢ ﻗﺎﺑﻞ ﺗﻮﺟﻬ داﺷﺘﻪ ﺑﺎﺷﺪ و ﻫﻤﭽﻨﯿﻦ ﯾ دﺳﺘﻮر

SELECT ﻣ ﺗﻮاﻧﺪ ﭼﻨﺪﯾﻦ و ﭼﻨﺪ رﮐﻮرد را ﯾ ﺠﺎ درﺧﻮاﺳﺖ ﻧﻤﺎﯾﺪ. اﮔﺮ ﺗﻤﺎم اﯾﻦ دادهﺮﺑ ﺎﻫ

روی ﺣﺎﻓﻈﻪ اﺻﻠ ﺳﯿﺴﺘﻢ ﺑﺎر ﺷﻮﻧﺪ، ﻫﺪف ﺳﯿﺴﺘﻢ ﭘﺎﯾ ﺎﻫ (ﻣﺎﻧﺎﯾﯽ دادهﻫﺎ و ﻧﮕﻬﺪاری آﻧﻬﺎ

ﺑﺮ روی ﺣﺎﻓﻈﻪ ﺟﺎﻧﺒﯽ) دﯾ ﺮ ﺑﺮﻗﺮار ﻧﺨﻮاﻫﺪ ﺑﻮد.

ﺧﺮوﺟ دﺳﺘﻮر SELECT را ﻣ ﺗﻮا ن رﮐﻮرد رﮐﻮرد ﯾﺎ ﺣﺘ ﻓﯿﻠﺪ ﻓﯿﻠﺪ درﯾﺎﻓﺖ ﮐﺮد. از

آﻧﺠﺎﯾﯽ ﮐﻪ اﮐﺜﺮ دﺳﺘﻮرات SELECT ﺧﺮوﺟ ﮐﻮﭼ دارﻧﺪ، ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب

اﻣ ﺎن درﯾﺎﻓﺖ ﯾ ﺒﺎره ﮐﻞ ﭘﺎﺳ آﻧﻬﺎ را ﺗﻮﺳﻂ ﯾ ﺗﺎﺑﻊ ﻓﺮاﻫﻢ ﮐﺮدهاﻧﺪ. در ﻏﯿﺮ اﯾﻨﺼﻮرت ﺑﺎﯾﺪ

در ﯾ ﺣﻠﻘﻪ ﮐﻪ ﺑﻪ ﺗﻌﺪاد رﮐﻮردﻫﺎی ﻣﻮﺟﻮد اﺟﺮا ﻣ ﺷﻮد، آﻧﻬﺎ را ﯾ ﯾ از ﭘﺎﯾ ﺎه داده

درﯾﺎﻓﺖ ﮐﺮد و ﻋﻤﻠﯿﺎت ﻣﻮرد ﻧﻈﺮ را روی آﻧﻬﺎ اﺟﺮا ﻧﻤﻮد.

در ﺻﻮرﺗ ﮐﻪ ﯾ رﮐﻮرد ﻧﯿﺰ ﺣﺠﯿﻢ ﺑﺎﺷﺪ ﺑﺎﯾﺪ از اﻣ ﺎﻧﺎت ﺧﺎص ﻫﺮ ﭘﺎﯾ ﺎﻫ ﺟﻬﺖ ﺟﺮﯾﺎﻧ

ﮐﺮدن (Streaming) ﺧﺮوﺟ ﺑﻬﺮه رﻓﺖ.

64

ث) ﻗﻄ ارﺗﺒﺎط

در اﻧﺘﻬﺎی ﮐﺎر ﺑﺎ ﯾ ﭘﺎﯾ ﺎهداده، ﺑﺎﯾﺪ اﺗﺼﺎل را آزاد ﻧﻤﻮد. ﻫﺮ ﺳﺮور ﭘﺎﯾ ﺎﻫ ﯾ ﻣﺨﺰن

اﺗﺼﺎل (Connection Pool) ﺟﻬﺖ ﺗﺴﺮﯾﻊ و ﺗﺴﻬﯿﻞ اﯾﺠﺎد ارﺗﺒﺎط اﯾﺠﺎد ﻣ ﮐﻨﺪ ﮐﻪ در

ﺻﻮرﺗ ﮐﻪ اﺗﺼﺎﻻت اﯾﺠﺎد ﺷﺪه در اوﻟﯿﻦ ﻓﺮﺻﺖ آزاد ﻧﺸﻮﻧﺪ، اﻣ ﺎن ﭘﺮ ﺷﺪن آن و رد ﺷﺪن

درﺧﻮاﺳﺖ اﺗﺼﺎل ﺟﺪﯾﺪ ﭘﯿﺶ ﻣ آﯾﺪ. در اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎ اﯾﻦ اﻣﺮ ﻣﻨﺠﺮ ﺑﻪ Denial of

Service و از دﺳﺘﺮس ﺧﺎرج ﺷﺪن ﺳﯿﺴﺘﻢ ﻣ ﺷﻮد زﯾﺮا ﻧﺮماﻓﺰارﻫﺎ ﺑﺪون ﭘﺎﯾ ﺎه داده ﻓﻠ ﻣ -

ﺪ ﻧ ﻮ ﺷ .

ج) ﺗﮑﺮار ﮐﻞ ﻓﺮآﯾﻨﺪ

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب ﻣﻌﻤﻮﻻ ﺑﻪ ازای ﻫﺮ درﺧﻮاﺳﺖ وب ﮐﺎرﺑﺮ ﯾ ﺒﺎر از

اﺑﺘﺪا ﺗﺎ اﻧﺘﻬﺎ اﺟﺮا ﻣ ﺷﻮﻧﺪ، ﺑﻪ ازای ﻫﺮ درﺧﻮاﺳﺖ ﺑﺎﯾﺪ ﯾ ﺒﺎر ﺑﻪ ﭘﺎﯾ ﺎه داده ﻣﺘﺼﻞ ﺷﻮﻧﺪ و

درﺧﻮاﺳﺖﻫﺎی ﻣﻮرد ﻧﻈﺮ را ارﺳﺎل ﮐﻨﻨﺪ.

ﻪﻣﺎﻧﺮ ﺮ ﻻﻮﻤﻌﻣای در اﺑﺘﺪای راهاﻧﺪازی ﺑﺴﺘﺮ ﺧﻮد (ﮐﻪ ﻣﻌﻤﻮﻻ ﺗﻮﺳﻂ ﭼﻬﺎرﭼﻮب

ﺻﻮرت ﻣ ﮔﯿﺮد) اﺗﺼﺎل ﺑﻪ ﭘﺎﯾ ﺎه را ﺑﺮﻗﺮار ﻣ ﮐﻨﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ دادهﻫﺎی ﻻزم را در دﺳﺘﺮس

داﺷﺘﻪ ﺑﺎﺷﺪ. اﻣﺎ اﮐﺜﺮ ﻧﺮماﻓﺰارﻫﺎی ﺗﺤﺖ وب ﻗﻄ اﺗﺼﺎل ﺑﻪ ﭘﺎﯾ ﺎه را ﺑﻪ اﺗﻤﺎم اﺟﺮا و ﻗﻄ

ﺧﻮدﮐﺎر ﺑﻌﺪ از ﺑﺴﺘﻪ ﺷﺪن ﻣﻮﮐﻮل ﻣ ﮐﻨﻨﺪ. اﯾﻦ اﻣﺮ ﺑﺴﯿﺎر ﺧﻄﺮﻧﺎک اﺳﺖ زﯾﺮا ﯾ ﻧﻔﻮذﮔﺮ ﺑﻪ

ﺳﺎدﮔ ﻣ ﺗﻮاﻧﺪ ﺑﺎ ﺑﺎز ﻧﮕﻬﺪاﺷﺘﻦ ﭼﻨﺪﯾﻦ اﺗﺼﺎل ﻣﺨﺰن اﺗﺼﺎل ﺳﺮور ﭘﺎﯾ ﺎه داده را اﺷﺒﺎع

ﮐﺮده، ﺳﺮور را از دﺳﺘﺮس ﺧﺎرج ﻧﻤﺎﯾﺪ. در ﭼﻬﺎرﭼﻮبﻫﺎﯾﯽ ﮐﻪ از اﻟ ﻮی MVC ﺑﻬﺮه ﻣ -

ﮔﯿﺮﻧﺪ، ﻗﻄ اﺗﺼﺎل ﭘﺲ از ﮐﺎرﮐﺮد ﻣﺪل و راهاﻧﺪازی ﻧﻤﺎ، ﻣﻔﯿﺪ ﺧﻮاﻫﺪ ﺑﻮد.

ﺑﺮای ﻫﺮ ﭘﺎﯾ ﺎهداده ﻣﻮﺟﻮد در ﺑﺎزار، ﯾ واﺳﻂ ﻣﺤﻠ ﺑﺮای زﺑﺎن ﺑﺮﻧﺎﻣﻪﺳﺎزی ﺳ و ﺻﻔﺮ،

ﯾ ﯾﺎ ﭼﻨﺪ واﺳﻂ ﺑﺮای زﺑﺎنﻫﺎی دﯾ ﺮ ﻣﻮﺟﻮد اﺳﺖ. اﯾﻦ اﻣﺮ اﺳﺘﻔﺎده از اﯾﻦ ﺗﮑﻨﻮﻟﻮژی را

ﮐﻤ دﺷﻮار ﻣ ﺳﺎزد.

65

در اداﻣﻪ ﻗﻄﻌﻪ ﮐﺪی ﮐﻪ اﯾﻦ ﭼﺮﺧﻪ را ﻧﺸﺎن ﻣ دﻫﺪ آورده ﺷﺪه اﺳﺖ (PHP,MySQL):

echo "Unable to connect to DB: " . mysql_error(); exit; } if (!mysql_select_db("mydbname")) { echo "Unable to select mydbname: " . mysql_error(); exit; }

$sql = "SELECT id as userid, fullname, userstatus FROM sometable WHERE userstatus = 1";

$result = mysql_query($sql); if (!$result) { echo "Could not successfully run query ($sql) from DB: " . mysql_error(); exit; } if (mysql_num_rows($result) == 0) { echo "No rows found, nothing to print so am exiting"; exit; }

// While a row of data exists, put that row in $row as an associative array // Note: If you're expecting just one row, no need to use a loop // Note: If you put extract($row); inside the following loop, you'll // then create $userid, $fullname, and $userstatus while ($row = mysql_fetch_assoc($result)) { echo $row["userid"]; echo $row["fullname"]; echo $row["userstatus"]; } mysql_free_result($result);

?>

66

٢٬٦٬٢٬١٬٢ دﺳﺘﺮﺳ ﺑﻪ داده اﻧﺘﺰاﻋAbstraction Layer) )

ﻣﺘﺨﺼﺼﺎت ﭘﺎﯾ ﺎهداده، ﺟﻬﺖ رﻓ ﻣﺸ ﻼت ﻧﺎﻫﻤﺎﻫﻨﮕ ﺳﯿﺴﺘﻢﻫﺎی ﭘﺎﯾ ﺎﻫ ﻣﺨﺘﻠﻒ،

اﻗﺪام ﺑﻪ راهاﻧﺪازی ﻻﯾﻪﻫﺎی اﻧﺘﺰاﻋ ﺑﺮ روی واﺳﻂﻫﺎی ﻣﺤﻠ (Native) ﭘﺎﯾ ﺎهﻫﺎ ﻧﻤﻮدهاﻧﺪ.

ﯾ ﻻﯾﻪ اﻧﺘﺰاﻋ ، دﺳﺘﻮرات را ﺑﻪ ﻗﺎﻟﺐ اﺳﺘﺎﻧﺪارد (ﯾﺎ ﻗﺎﻟﺐ ﺧﺎص ﺧﻮد) درﯾﺎﻓﺖ ﻣ ﻧﻤﺎﯾﺪ و

ﺑﺴﺘﻪ ﺑﻪ اﯾﻨﮑﻪ اﺗﺼﺎل ﺑﻪ ﭼﻪ ﻧﻮع ﭘﺎﯾ ﺎهدادهای ﺑﺮﻗﺮار ﺷﺪه اﺳﺖ، آﻧﺮا ﺑﻪ دﺳﺘﻮر ﻣﻌﺎدل در

ﺳﯿﺴﺘﻢ ﻣﺮﺑﻮﻃﻪ ﺗﺒﺪﯾﻞ ﻣ ﺪﻨﮐ.

اﺳﺘﻔﺎده از اﯾﻦ ﺗﮑﻨﻮﻟﻮژی، اﻣ ﺎن ﺗﻐﯿﯿﺮ زﯾﺮﺳﺎﺧﺖ ﭘﺎﯾ ﺎﻫ و ﻟﺬا ﺑﺴﻂ ﺑﺴﺘﺮ راهاﻧﺪازی

ﻧﺮماﻓﺰار و اﻣ ﺎن اﺳﺘﻔﺎده از وﯾﮋﮔ ﻫﺎی ﻣﻨﺤﺼﺮﺑﻔﺮد ﻫﺮ ﭘﺎﯾ ﺎه را ﻣﻤ ﻦ ﻣ ﺳﺎزد. در ﻋﻮض ﺑﻪ

دﻟﯿﻞ ﺗﺒﺪﯾﻼﺗ ﮐﻪ ﻫﻨﮕﺎم اﺟﺮا ﺻﻮرت ﻣ ﮔﯿﺮد ﺳﺮﻋﺖ اﺟﺮا ﺗﺎ ﺣﺪ ﻗﺎﺑﻞ اﻏﻤﺎﺿ ﮐﻤﺘﺮ ﺧﻮاﻫﺪ

ﺑﻮد.

ﺗﻮﺟﻪ ﺑﻪ اﯾﻦ ﻧﮑﺘﻪ ﮐﻪ اﯾﻦ ﻻﯾﻪ اﻧﺘﺰاﻋ ﻓﻘﻂ ﺑﺮ روی DML ﺻﻮرت ﻣ ﮔﯿﺮد ﺑﺴﯿﺎر ﻣﻬﻢ

اﺳﺖ. ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﺑﺎﯾﺪ دﺳﺘﻮرات DDL/DCL ﺧﻮد را ﺑﻪ ﺻﻮرت دﺳﺘ ﯾﺎ ﺑﺮای ﭘﺎﯾ ﺎه -

ﻫﺎی ﻣﺨﺘﻠﻒ ﺑﻪ ﺻﻮرت ﻣﺘﻔﺎوت ﺗﻬﯿﻪ ﻧﻤﺎﯾﻨﺪ .

ﺑﺮای ﻫﺮ زﺑﺎن ﺑﺮﻧﺎﻣﻪﺳﺎزی، ﯾ ﯾﺎ ﭼﻨﺪ ﻻﯾﻪ اﻧﺘﺰاﻋ ﺳﺎزی وﺟﻮد دارد. ﺑﺮای ﺑﺮﺧ زﺑﺎنﺎﻫ

اﯾﻦ ﻻﯾﻪ اﺻﻼ وﺟﻮد ﻧﺪارد. اﯾﻦ ﻻﯾﻪ ﻧﯿﺰ ﺧﻮد ﯾ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺑﺰرگ از ﮐﺪ اﺳﺖ ﮐﻪ ﻣ ﺗﻮان آﻧﺮا

ﺑﻪ ﻧﻮﻋ ﭼﻬﺎرﭼﻮب ﻧﺎﻣﯿﺪ.

ﺑﺮای زﺑﺎن PHP ﻪﺘﺴﺑﻫﺎی PHP Data Objects) PDO) و Database ) DBA

Abstraction Layer) وﺟﻮد دارﻧﺪ ﮐﻪ PDO ﺑﺴﯿﺎر ﻣﺤﺒﻮب اﺳﺖ و ﺗﻘﺮﯾﺒﺎ ﺗﻤﺎﻣ ﭘﺎﯾ ﺎهﻫﺎی

داده را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺪﯾﺎﻤﻧ.

67

ﺑﺮای زﺑﺎن ASP، ﺑﺴﺘﻪ ADO.NET ﺑﺴﯿﺎر ﻣﺤﺒﻮب اﺳﺖ. ﺑﺮای زﺑﺎن ﺟﺎوا ﻧﯿﺰ ODAL و

Hibernate اﻣ ﺎن اﯾﻦ ﮐﺎرﺑﺮد را ﻓﺮاﻫﻢ آوردهاﻧﺪ.

ﻻﯾﻪﻫﺎی اﻧﺘﺰاﻋ ﺳﺎزی اﻣ ﺎن ﺗﺒﺪﯾﻞ ﺗﻤﺎﻣ اﺳﺘﻔﺎدهﻫﺎ را ﻧﺪارد و ﻣﻌﻤﻮﻻ ﺑﺮای اﻧﺘﻘﺎل

ﺑﺴﺘﺮ ﻧﺮماﻓﺰار از ﯾ ﭘﺎﯾ ﺎه ﺑﻪ ﭘﺎﯾ ﺎه دﯾ ﺮ، ﺑﺎﯾﺪ دﺳﺘﻮرات SQL ﻧﯿﺰ ﺗﺎ ﺣﺪود ﻗﺎﺑﻞ ﺗﻮﺟﻬ

ﺗﻐﯿﯿﺮ ﮐﻨﺪ وﻟ ﺣﺪاﻗﻞ ﻧﯿﺎزی ﺑﻪ ﺗﻐﯿﯿﺮ ﺧﻮد ﮐﺪ ﻧﯿﺴﺖ.

در ﺳﺎﻟﻬﺎی اﺧﯿﺮ ﺑﺮﺧ ﺑﻪ ﻣﻘﺎﺑﻠﻪ ﺑﺎ اﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﺑﺮﺧﻮاﺳﺘﻪاﻧﺪ و آﻧﺮا اﻓﺰودن ﭘﯿﭽﯿﺪﮔ

زاﺋﺪ، ﮐﻨﺪ ﮐﺮدن ﺳﯿﺴﺘﻢ و ﻏﯿﺮ ﺳﻮدﻣﻨﺪ داﻧﺴﺘﻪاﻧﺪ. راﺳﻤﻮس ﻟﺮدوف، ﻃﺮاح زﺑﺎن PHP ﻧﯿﺰ از

اﯾﻦ دﺳﺘﻪ اﺳﺖ.

ﺷﻞ ٤٧ ﻧﻤﺎﯾﻪ ﻻﯾﻪ اﻧﺘﺰاﻋ ﺳﺎزی ADO

در اداﻣﻪ ﻧﻤﻮﻧﻪ ﮐﺪی ﺑﺎ اﺳﺘﻔﺎده از PDO اراﺋﻪ ﺷﺪه اﺳﺖ:

prepare("insert into test (name, value) values (:name, :value)"); // bind php variables to the named placeholders in the query // they are both strings that will not be more than 64 chars long $stmt->bindParam(':name', $name, PDO_PARAM_STR, 64); $stmt->bindParam(':value', $value, PDO_PARAM_STR, 64); // insert a record $name = 'Foo'; $value = 'Bar'; $stmt->execute(); // and another $name = 'Fu'; $value = 'Ba'; $stmt->execute(); // get all data row by row $stmt = $dbh->prepare('select name, value from test'); 68

$stmt->execute(); while ($row = $stmt->fetch(PDO_FETCH_ASSOC)) { print_r($row); } ?>

٢٬٦٬٢٬١٬٣ ﻧﮕﺎﺷﺖ رواﺑﻂ اﺷﯿﺎء (ORM)

ﻧﮕﺎﺷﺖ رواﺑﻂ اﺷﯿﺎء (ORM) ﺗﮑﻨﻮﻟﻮژی ﺑﺴﯿﺎر ﻣﻬﻤﯿﺴﺖ ﮐﻪ دﻧﯿﺎی ﭘﺎﯾ ﺎهداده و ﺑﺮﻧﺎﻣﻪ-

ﻧﻮﯾﺴ آﻧﺮا ﻣﺘﺤﻮل ﮐﺮدهاﺳﺖ. ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﻧﮕﺎﺷﺖ، ﺑﺎ اﯾﺠﺎد ﺗﻌﺪادی ﻓﺎﯾﻞ ﺟﻬﺖ ﺗﻌﺮﯾﻒ

ﺖﺷﺎﮕﻧﻫﺎ، ﮐﺘﺎﺑﺨﺎﻧﻪ ﻣﺮﺑﻮﻃﻪ ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر ارﺗﺒﺎط ﻣﯿﺎن اﺷﯿﺎی درون ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﭘﺎﯾ ﺎه

داده را ﺑﺮﻗﺮار ﻣ ﺳﺎزد. ﭘﺲ از آن، اﺷﯿﺎ ﻣﺎﻧﺎ (Persistant) ﻣ ﺷﻮﻧﺪ و ﻫﺮﮔﻮﻧﻪ ﺗﻐﯿﯿﺮی ﮐﻪ ﺑﺮ

روی آﻧﻬﺎ اﻋﻤﺎل ﺷﻮد ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر در ﭘﺎﯾ ﺎه داده ﻧﯿﺰ درج ﻣ ﺷﻮد.

اﯾﻦ ﺗﮑﻨﻮﻟﻮژی، ﺧﺼﻮﺻﺎ ﺑﺮای ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎﻧ ﮐﻪ ﺑﺎ ﭘﺎﯾ ﺎهداده آﺷﻨﺎﯾﯽ ﮐﺎﻓ ﻧﺪارﻧﺪ ﮐﺎر را

ﺑﺴﯿﺎر راﺣﺖ ﻣ ﮐﻨﺪ و ﻫﻤﭽﻨﯿﻦ ﺑﺎ اﯾﺠﺎد ﯾ ﻻﯾﻪ اﻧﺘﺰاﻋ (ﻧﮕﺎﺷﺖ)، اﻣ ﺎن اﯾﺠﺎد ﺗﻐﯿﯿﺮات در

ﭘﺎﯾ ﺎه ﺑﺪون ﻧﯿﺎز ﺑﻪ ﺗﻐﯿﯿﺮ ﮐﺪ را ﻓﺮاﻫﻢ ﻣ آورد.

ﻫﻤﭽﻨﯿﻦ از آﻧﺠﺎﯾﯽ ﮐﻪ ﻧﮕﻬﺪاری و ﺗﻐﯿﯿﺮ ﮐﺪ دارای ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﻣﺘﻌﺪد و ﺳﺎدهاﯾﺴﺖ –

ﮐﻪ ﻣﻌﺎدل آﻧﻬﺎ در ﭘﺎﯾ ﺎه داده ﮐﻢ اﺳﺖ – ﺑﺎ اﯾﻦ روش اﻣ ﺎن ﻧﮕﻬﺪاری و اﯾﺠﺎد ﺗﻐﯿﯿﺮات داﺋﻢ

در ﺳﯿﺴﺘﻢ ﻓﺮاﻫﻢ ﻣ ﺷﻮد.

ﻣﻌﻀﻞ اﺻﻠ اﯾﻦ روش ﮐﺎﻫﺶ ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻪ آﻧﺴﺖ (ﮐﻪ در اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎ اﻫﻤﯿﺖ

ﭼﻨﺪاﻧ ﻧﺪارد) وﻟ در ﻋﻮض ﺳﺮﻋﺖ ﺗﻮﺳﻌﻪ ﺑﺴﯿﺎر اﻓﺰاﯾﺶ ﻣ ﯾﺎﺑﺪ. ﻫﻤﭽﻨﯿﻦ در ﻣﻮاردی ﮐﻪ

درﺧﻮاﺳﺖﻫﺎی ﭘﯿﭽﯿﺪه ﭘﺎﯾ ﺎﻫ ﻣﻮرد ﻧﯿﺎز ﺑﺎﺷﺪ، اﯾﻦ روش ﮐﻤ دﺳﺖ و ﭘﺎﮔﯿﺮ ﺧﻮاﻫﺪ ﺑﻮد.

69

ﻪﻧﺎﺨﺑﺎﺘﮐﻫﺎی ORM ﻪﻧ ﺨﺑﺎﺘ ﺖﺒﺴﻧ ﻪﺑﻫﺎی ﻻﯾﻪ اﻧﺘﺰاﻋ ﺑﺴﯿﺎر ﻏﻮلآﺳﺎ ﻫﺴﺘﻨﺪ و ﺑﺎ

اﺳﺘﻔﺎده از اﻟ ﻮی Proxy Pattern (اﯾﺠﺎد ﯾ ﮐﻼس ﻣﯿﺎﻧ ﺑﺮای دﺳﺘﺮﺳ ﺑﻪ اﺷﯿﺎ) و

ﻦﯿﻨﭽﻤﻫ Reflection (اﻣ ﺎن ﻣﻄﺎﻟﻌﻪ ﮐﺪ در ﺧﻮد ﮐﺪ) ﺑﻪ اﻫﺪاف ﻣﺮﺑﻮﻃﻪ دﺳﺖ ﻣ ﺪﻨﺑﺎﯾ.

از ﻣﻌﺮوﻓﺘﺮﯾﻪ ﺎﺨﺑﺎﺘﮐ ﻦﻫﺎی ORM ﻣ ﺗﻮان ﺑﻪ hibernate ﺑﺮای ﺟﺎوا، doctrine ﺑﺮای

Rails ،PHP ﺑﺮای Ruby وEntity ﺑﺮای ASP.NET اﺷﺎره ﮐﺮد.

٢٬٦٬٢٬١٬٤ ﺗﻔﮑﯿ داده از دﺳﺘﻮر در ﭘﺎﯾﺎه داده

از آﻧﺠﺎﯾﯽ ﮐﻪ ﯾ دﺳﺘﻮر (Query) ﭘﺎﯾ ﺎهداده، ﻣﻌﻤﻮﻻ دارای ﻓﺮاﻣﯿﻦ و دادهﻫﺎ ﺑﻪ ﺻﻮرت

ﺗﻮام اﺳﺖ، ﻣﻌﻀﻼت اﻣﻨﯿﺘ ﺑﺴﯿﺎری ﭘﺪﯾﺪ ﻣ آﯾﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل دﺳﺘﻮر

SELECT * FROM Users WHERE Username=? AND Password=?

ﻫﻨﮕﺎﻣ ﺻﺤﯿﺢ اﺳﺖ ﮐﻪ ﺑﻪ ﺟﺎی ﻋﻼﻣﺖ ﺳﻮال، ﻣﻘﺪار واﻗﻌ ﻣﻮرد ﻧﻈﺮ ﻗﺮار ﺑ ﯿﺮد. ﻣﻘﺪار

ﻣﻮرد ﻧﻈﺮ ﻣﻌﻤﻮﻻ ﺗﻮﺳﻂ ﮐﺎرﺑﺮ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ارﺳﺎل ﻣ ﺷﻮد. از آﻧﺠﺎﯾﯽ ﮐﻪ ﻫﯿﭻ ﺗﻔﮑﯿ در داده و

ﻓﺮﻣﺎن اﯾﺠﺎد ﻧﺸﺪه اﺳﺖ، در ﺻﻮرﺗ ﮐﻪ ﻣﻘﺪار ورودی ﮐﺎرﺑﺮ ﺑﺮای رﻣﺰ ﻋﺒﻮر or 1=1 1 ﺪﺷﺎﺑ،

دﺳﺘﻮر ﭘﺎﯾ ﺎه ﺑﻪ ﺻﻮرت زﯾﺮ ﻣ ﺷﻮد:

SELECT * FROM Users WHERE Username=? AND Password=1 or 1=1

ﮐﻪ ﻫﻤﻮاره ﺑﺮﻗﺮار اﺳﺖ (ﻣﺎﻧﻨﺪ اﯾﻨﮑﻪ رﻣﺰ ﺻﺤﯿﺢ را وارد ﮐﺮده ﺑﺎﺷﺪ). ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ،

ﺧﺎﺳﺘﺎرﻫﺎی دﯾ ﺮی ﺑﺮای ﺗﻔﮑﯿ داده از دﺳﺘﻮر در ﭘﺎﯾ ﺎه داده اﯾﺠﺎد ﺷﺪه ﮐﻪ در ﺑﺨﺶ

ﻣﺨﺎﻃﺮات ﺑﻪ ﺗﻔﺼﯿﻞ ﺑﺮرﺳ ﺧﻮاﻫﺪ ﺷﺪ.

70

٢٬٦٬٢٬٢ ﻣﺪﯾﺮﯾﺖ ﮐﺎرﺑﺮان

از آﻧﺠﺎﯾﯽ ﮐﻪ اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎی وﺑﯽ در دﺳﺘﺮس ﻋﻤﻮم ﻫﺴﺘﻨﺪ، اﻋﻤﺎل زﯾﺮﺳﺎﺧﺖ اﻣﻨﯿﺘ

Authentication, Authorization, Accounting) AAA) ﺑﻪ ﻣﻌﻨﺎی اﺣﺮاز ﻫﻮﯾﺖ، ﮐﻨﺘﺮل

دﺳﺘﺮﺳ و ﺣﺴﺎﺑﺮﺳ ، در آﻧﻬﺎ ﻻزم اﺳﺖ.

اﺣﺮاز ﻫﻮﯾﺖ در ﺳﯿﺴﺘﻢﻫﺎی اﻣﺮوزی ﺗﻮﺳﻂ ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر ﺻﻮرت ﻣ ﮔﯿﺮد (و ﯾﺎ

راﻫ ﺎرﻫﺎی دﯾ ﺮ). ﻟﺬا ﻫﻤﻪ ﺳﯿﺴﺘﻢﻫﺎی اﻣﺮوزی ﻧﯿﺎزﻣﻨﺪ زﯾﺮﺳﺎﺧﺖ ﻣﺪﯾﺮﯾﺖ ﮐﺎرﺑﺮان ﻫﺴﺘﻨﺪ.

ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب ﻧﯿﺰ اﯾﻦ زﯾﺮﺳﺎﺧﺖ را در اﺧﺘﯿﺎر ﻪﻣﺎﻧﺮﺑﻧﻮﯾﺴﺎن ﺧﻮد ﻗﺮار ﻣ دﻫﺪ ﺗﺎ

ﺑﺎ ﺗﻮاﺑﻊ ﺳﺎدهای، اﯾﺠﺎد، ﺣﺬف، ﺗﻐﯿﯿﺮ و ورود وﺧﺮوج ﮐﺎرﺑﺮان را ﺑﺮرﺳ ﻧﻤﺎﯾﻨﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ اﺣﺮاز ﻫﻮﯾﺖ ﻓﺮآﯾﻨﺪ ﻣﺤﻮری اﻣﻨﯿﺖ ﻫﺮ ﺳﯿﺴﺘﻢ اﺳﺖ، ﭘﯿﺎدهﺳﺎزی ﺻﺤﯿﺢ و

ﮐﺎﻣﻞ اﯾﻦ ﺑﺨﺶ اﻫﻤﯿﺖ ﺑﺴﺰاﯾﯽ دارد.

٢٬٦٬٢٬٣ ﺖﺴﺸﻧ ﺖ ﺮﯾﺪﻣ

وب، ﯾ ﭘﺮوﺗﮑﻞ ﺑﯽ وﺿﻌﯿﺖ (Stateless) اﺳﺖ. اﮔﺮ ﺷﻤﺎ وارد ﯾ وﺑﺴﺎﯾﺖ ﺷﻮﯾﺪ، و

روی ﯾ ﻟﯿﻨﮏ ﮐﻠﯿ ﮐﻨﯿﺪ، وﺑﺴﺎﯾﺖ ﻣﺮﺑﻮﻃﻪ اﻣ ﺎن ﺗﺸﺨﯿﺺ ﺗﻔﺎوت ﮐﺎر ﺷﻤﺎ ﺑﺎ اﯾﻨﮑﻪ دو

ﮐﺎرﺑﺮ اﯾﻦ دو ﺻﻔﺤﻪ را ﺑﻪ ﺻﻮرت ﻣﺠﺰا ﺑﺎز ﮐﺮده ﺑﺎﺷﻨﺪ ﻧﺪارد.

ﺑﻪ ﻋﺒﺎرت دﻗﯿﻘﺘﺮ، وب وﺿﻌﯿﺖ ﮐﺎر ﯾ ﮐﺎرﺑﺮ (ﯾ ﻧﺸﺴﺖ) را ﻧﻤ ﺗﻮاﻧﺪ ﭘﯿ ﯿﺮی ﻣﺴﺘﻘﯿﻢ

ﺪﯾﺎﻤﻧ. ﺑﺮای رﻓ اﯾﻦ ﻣﺸ ﻞ، از Cookie ﮐﻪ ﯾ از اﻣ ﺎﻧﺎت HTTP اﺳﺖ اﺳﺘﻔﺎده ﻣ ﺷﻮد.

ﮐﻮﮐ ﯾ ﻗﻄﻌﻪ اﻃﻼﻋﺎت ﮐﻮﭼ اﺳﺖ، ﮐﻪ ﮐﺎوﺷ ﺮ وب در ﻫﺮ ﺑﺎر درﺧﻮاﺳﺖ از ﯾ

وﺑﺴﺎﯾﺖ، ﺑﺮای آن ارﺳﺎل ﻣ ﺪﻨﮐ.

وﺑﺴﺎﯾﺖﻫﺎ ﻧﯿﺰ ﺑﺎ اﯾﺠﺎد زﯾﺮﺳﺎﺧﺖ ﻣﺪﯾﺮﯾﺖ ﻧﺸﺴﺖ و ﺑﺎ اﺳﺘﻔﺎده از ﮐﻮﮐ ، اﻣ ﺎن ردﮔﯿﺮی

ﮐﺎرﺑﺮ و اﯾﺠﺎد ﻧﺸﺴﺖ ﺑﺮای ﻫﺮﮐﺎرﺑﺮ را ﻓﺮاﻫﻢ ﻣ ﮐﻨﻨﺪ. در ﺻﻮرﺗ ﮐﻪ ﻧﺸﺴﺖ وﺟﻮد ﻧﺪاﺷﺖ،

71

ورود ﺑﻪ ﺳﯿﺴﺘﻢ ﻧﯿﺰ ﻣﻌﻨﺎ ﻧﺪاﺷﺖ زﯾﺮا در درﺧﻮاﺳﺖ ﺑﻌﺪی ﮐﺎرﺑﺮ، ﺳﺮور ﻫﯿﭻ ﺧﺎﻃﺮهای از

ورود وی ﺑﻪ ﺳﯿﺴﺘﻢ ﻧﺪاﺷﺖ، ﻟﺬا اﯾﺠﺎد ﻧﺸﺴﺖ در اﺑﺘﺪای ﺑﺎز ﮐﺮدن ﺳﺎﯾﺖ (ﯾﺎ ﺑﺎ ﺗﺎﺧﯿﺮ ﻫﻨﮕﺎم

ورود ﮐﺎرﺑﺮ) اﻧﺠﺎم ﻣ ﺷﻮد.

ﻓﺮآﯾﻨﺪ اﯾﺠﺎد ﻧﺸﺴﺖ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ:

· در ﺻﻮرﺗ ﮐﻪ ﮐﺎوﺷ ﺮ، در ﮐﻮﮐ ﺧﻮد ﺷﻤﺎره ﺧﺎﺻ را ﺗﺤﺖ ﻋﻨﻮان ﺷﻤﺎره

ﻧﺸﺴﺖ ﺑﺮای ﺳﺮور ارﺳﺎل ﻧﮑﺮد، اﯾﻦ ﮐﺎرﺑﺮ ﺗﺎزه وارد ﺗﻠﻘ ﻣ ﺷﻮد و ﺳﺮور از او

درﺧﻮاﺳﺖ ﻗﺮار دادن ﯾ ﺷﻤﺎره اﯾﺠﺎد ﺷﺪه ﺗﺼﺎدﻓ در ﮐﻮﮐ ﻣﺮﺑﻮﻃﻪ را ﻣ -

ﺪ ﻨ ﮐ .

· در ﻫﻤﻪ درﺧﻮاﺳﺖﻫﺎی ﺑﻌﺪی ﮐﺎوﺷ ﺮ (ﻗﺒﻞ از ﺑﺎﻃﻞ ﺷﺪن ﮐﻮﮐ ﮐﻪ زﻣﺎن

ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﻻزم دارد)، ﺷﻤﺎره ﻧﺸﺴﺖ ﻣﺮﺑﻮط ﺑﻪ ﮐﺎرﺑﺮ ﻣﺬﮐﻮر ﺗﻮﺳﻂ ﮐﻮﮐ

ﺑﻪ ﺳﺮور ارﺳﺎل ﻣ ﺷﻮد. ﺳﺮور ﻧﯿﺰ ﻟﯿﺴﺖ اﯾﻦ ﺷﻤﺎرهﻫﺎ را در ﺑﺎﻧﮏ اﻃﻼﻋﺎﺗ

ﺧﻮد داﺷﺘﻪ و ﻣ ﺗﻮاﻧﺪ ردﮔﯿﺮی ﮐﻨﺪ ﮐﻪ ﻫﺮﮐﺪام ﭼﻪ ﻓﻌﺎﻟﯿﺖﻫﺎﯾﯽ داﺷﺘﻪ اﺳﺖ.

· در ﺻﻮرﺗ ﮐﻪ آﺧﺮﯾﻦ دﺳﺘﺮﺳ ﮐﺎرﺑﺮ ﺑﻪ ﺳﺎﯾﺖ ﻣﺮﺑﻮﻃﻪ زﻣﺎن ﻣﺸﺨﺼ

(ﻻﻮﻤﻌﻣ ٣٠ دﻗﯿﻘﻪ) ﭘﯿﺶ ﺑﻮده ﺑﺎﺷﺪ، ﺳﺮور از ﭘﺬﯾﺮﻓﺘﻦ ﺷﻤﺎره ﻧﺸﺴﺖ وی

اﻣﺘﻨﺎع ﻣ ﮐﻨﺪ و آﻧﺮا ﺑﺎﻃﻞ ﻣ ﮐﻨﺪ، و در اداﻣﻪ ﻧﺸﺴﺖ ﺟﺪﯾﺪی اﯾﺠﺎد ﻣ ﺪﻨﮐ.

در ﻃ اﯾﻦ ﻓﺮآﯾﻨﺪ ﻓﻌﺎﻟﯿﺖﻫﺎی ﮐﺎرﺑﺮ و ورود وی ﺑﻪ ﺳﯿﺴﺘﻢ از ﺑﯿﻦ ﻣ رود.

· ﺣﺘ اﮔﺮ ﮐﺎرﺑﺮ داﺋﻤﺎ در ﺣﺎل ﮐﺎر ﺑﺎ ﺳﯿﺴﺘﻢ ﺑﺎﺷﺪ (و ٣٠ دﻗﯿﻘﻪ وﻗﻔﻪ اﯾﺠﺎد

ﻧﮑﻨﺪ) ﺷﻤﺎره ﻧﺸﺴﺖ وی ﭘﺲ از ﻣﺪت ﻣﻌﯿﻨ (ﻣﻌﻤﻮﻻ ﯾ ﻫﻔﺘﻪ) در ﺳﺮور

ﺑﺎﻃﻞ ﻣ ﺷﻮد.

72

ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ اﯾﻦ ﮐﺎر رﺑﻄ ﺑﻪ Remember Me ﮐﻪ در ﺳﺎﯾﺘﻬﺎ ﭘﯿﺎده ﻣ ﺷﻮد

ﻧﺪارد و ﺑﻪ ﺻﻮرت ﻧﺎﻣﺤﺴﻮس ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮ اﻧﺠﺎم ﻣ ﻮﺷد.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺳﺮور وب، ﺗﺸﺨﯿﺺ ﯾ ﮐﺎرﺑﺮ را ﺑﻪ ﻧﺸﺴﺖ وی، و ﺗﺸﺨﯿﺺ ﯾ ﻧﺸﺴﺖ را

ﺑﻪ ﺷﻤﺎره ﻧﺸﺴﺖ وی ﻣﻮﮐﻮل ﻣ ﮐﻨﺪ، در ﺻﻮرﺗ ﮐﻪ ﺷﺨﺼ ﺑﺘﻮاﻧﺪ ﺑﻪ ﺷﻤﺎره ﻧﺸﺴﺖ ﺷﺨﺺ

دﯾ ﺮی دﺳﺖ ﭘﯿﺪا ﮐﻨﺪ و آﻧﺮا در ﮐﻮﮐ ﺧﻮد ﻗﺮار دﻫﺪ (اﯾﺠﺎد ﮐﻮﮐ ﺟﻌﻠ ) ﻣ ﺗﻮاﻧﺪ دزدی

ﺖﺴﺸﻧ (Session Hijacking) اﻧﺠﺎم داده و ﺳﺮور را ﻃﻮری ﮔﻮل ﺑﺰﻧﺪ ﮐﻪ ﻓﺮض ﮐﻨﺪ وی

ﻫﻤﺎن ﮐﺎرﺑﺮ اﺳﺖ (و ﺣﺘ اﮔﺮ در ﺳﯿﺴﺘﻢ وارد ﺷﺪه ﺑﺎﺷﺪ، ﺟﻌﻞ ﮐﻨﻨﺪه ﻧﯿﺰ ﺑﺪون ﻫﯿﭻ ﺗﻼﺷ

داﺧﻞ ﺳﯿﺴﺘﻢ ﺗﻠﻘ ﻣ ﺷﻮد).

ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ و دﻻﯾﻞ دﯾ ﺮ، ﻣﺪﯾﺮﯾﺖ ﻧﺸﺴﺖ از ﻣﻬﻤﺘﺮﯾﻦ زﯾﺮﺳﺎﺧﺖﻫﺎی اﻣﻨﯿﺘ ﻫﺮ

ﭼﻬﺎرﭼﻮﺑﯽ داﻧﺴﺘﻪ ﻣ ﺷﻮد و ﭘﯿﺎدهﺳﺎزی ﺻﺤﯿﺢ آن اﻫﻤﯿﺖ ﻓﻮقاﻟﻌﺎدهای دارد.

٢٬٦٬٢٬٤ ﮐﻨﺘﺮل دﺳﺘﺮﺳ

ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﮐﻠﯿﺪیﺗﺮﯾﻦ و ﻣﻬﻤﺘﺮﯾﻦ زﯾﺮﺳﺎﺧﺖ ﺗﺎﻣﯿﻦ اﻣﻨﯿﺖ ﺳﯿﺴﺘﻢﻫﺎی ﺑﺰرگ

اﺳﺖ. اﺣﺮاز ﻫﻮﯾﺖ ﻣﺸﺨﺺ ﻣ ﮐﻨﺪ ﮐﻪ ﺷﺨﺺ ﻣﻮرد ﻧﻈﺮ ﮐﯿﺴﺖ (و ﺣﺘﻤﺎ ﻫﻤﺎن ﮐﺴ اﺳﺖ

ﮐﻪ ادﻋﺎ ﻣ ﮐﻨﺪ) وﻟ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻣﺸﺨﺺ ﻣ ﮐﻨﺪ ﮐﻪ آﯾﺎ ﺷﺨﺺ ﻣﺮﺑﻮﻃﻪ، اﺟﺎزه اﻧﺠﺎم

ﮐﺎر ﻣﺮﺑﻮط را دارد ﯾﺎ ﺧﯿﺮ.

ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل در ﯾ ﺳﯿﺴﺘﻢ، ﻣ ﺗﻮان ﻣﺠﻮزﻫﺎی اﯾﺠﺎد ﮐﺎرﺑﺮ، ﺣﺬف ﮐﺎرﺑﺮ و ﺗﻐﯿﯿﺮ ﮐﺎرﺑﺮ

را ﺗﻌﺮﯾﻒ ﮐﺮد و ﺳﭙﺲ ﺑﻪ ﺑﺮﺧ از ﮐﺎرﺑﺮان اﺟﺎزه اﻧﺠﺎم ﻫﻤﻪ آﻧﻬﺎ و ﺑﻪ ﺑﺮﺧ دﯾ ﺮ اﺟﺎزه اﻧﺠﺎم

ﺑﺮﺧ از آﻧﻬﺎ را داد. ﺳﯿﺴﺘﻤ ﮐﻪ اﯾﻦ اﺟﺎزهﻫﺎ را ﺑﺮرﺳ و ﺗﻀﻤﯿﻦ ﻣ ﮐﻨﺪ، زﯾﺮﺳﺎﺧﺖ ﮐﻨﺘﺮل

دﺳﺘﺮﺳ (Access Control) ﻧﺎم دارد

ﺑﻪ ﻃﻮر ﮐﻠ دو روش ﺟﻬﺖ ﭘﯿﺎدهﺳﺎزی ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻣﻌﻤﻮل اﺳﺖ:

73

٢٬٦٬٢٬٤٬١ ﻟﯿﺴﺖ ﮐﻨﺘﺮل دﺳﺘﺮﺳACL) )

اﯾﻦ روش ﺳﺎده، ﺑﺮای ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﺳﯿﺴﺘﻢﻫﺎی ﮐﻮﭼ و ﺳﺎده ﮐﺎرﺑﺮ دارد و اﮐﺜﺮ

ﻢﺘﺴﯿﺳﻫﺎ از اﯾﻦ روش اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ. در اﯾﻦ روش ﯾ ﺟﺪول دوﺳﻄﺮی اﯾﺠﺎد ﻣ ﺷﻮد

ﮐﻪ در ﺳﻄﺮ اول آن، ﮐﺎرﺑﺮ و در ﺳﻄﺮ دوم آن ﻣﺠﻮز ﻗﺮار ﻣ ﮔﯿﺮد. ﻫﺮ ﮐﺎرﺑﺮی ﮐﻪ ﻣﺠﻮزی را

داﺷﺘﻪ ﺑﺎﺷﺪ، در ﺟﺪول ﻣﺮﺑﻮﻃﻪ در روﺑﺮوی ﻣﺠﻮز ﻣﺮﺑﻮﻃﻪ ﻟﯿﺴﺖ ﺷﺪه اﺳﺖ.

ﺗﻘﺮﯾﺒﺎ ﺗﻤﺎﻣ ﺗﺠﻬﯿﺰات ﺳﺨﺖاﻓﺰاری ﮐﻪ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﯿﺎز دارﻧﺪ، از اﯾﻦ روش اﺳﺘﻔﺎده

ﻣ ﮐﻨﻨﺪ. اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎی ﻧﺮماﻓﺰاری ﻣﻮﺟﻮد ﻧﯿﺰ ﺑﻪ دﻟﯿﻞ ﺳﺎدﮔ ﭘﯿﺎدهﺳﺎزی از ﻫﻤﯿﻦ روش

ﺑﻬﺮه ﻣ ﺪﻧﺮﯿﮔ.

ﺿﻌﻒ اﺻﻠ اﯾﻦ روش در ﺑﺴﻂﻧﺎﭘﺬﯾﺮی آن اﺳﺖ. در ﺻﻮرﺗ ﮐﻪ ﺳﯿﺴﺘﻢ ﻣﺎ ﺣﺪود ١٠٠

ﮐﺎرﺑﺮ و ١٠٠٠٠ ﻣﺠﻮز داﺷﺘﻪ ﺑﺎﺷﺪ، ﻟﯿﺴﺖ ﻣﺮﺑﻮﻃﻪ ﺣﺪود ﺻﺪ ﻫﺰار ﺳﻄﺮ ﺧﻮاﻫﺪ داﺷﺖ و

ﻣﺪﯾﺮﯾﺖ و ﻧﮕﻬﺪاری آن دﭼﺎر ﺧﻄﺎی اﻧﺴﺎﻧ ﺑﺴﯿﺎر – و ﻣﻌﻀﻞ اﻣﻨﯿﺘ – ﺧﻮاﻫﺪ ﺷﺪ. اﯾﻦ

روش ﺗﻨﻬﺎ ﺑﺮای ﺳﯿﺴﺘﻢﻫﺎی دارای اﻧﮕﺸﺖﺷﻤﺎر ﮐﺎرﺑﺮ و ﭼﻨﺪﯾﻦ ﻣﺠﻮز ﻣﻨﺎﺳﺐ اﺳﺖ.

٢٬٦٬٢٬٤٬٢ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﻘﺶ ﻣﺤﻮر

Role Based Access Control اﺳﺘﺎﻧﺪارد ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﺗﻮﺳﻂ NIST (ﻪﺴﺳﻮﻣ

اﺳﺘﺎﻧﺪارد ﻣﻠ آﻣﺮﯾ ﺎ) اﺳﺖ. اﯾﻦ اﺳﺘﺎﻧﺪارد ﭼﻬﺎر ﺳﻄ دارد ﮐﻪ در ﻫﺮ ﺳﻄ ﻣﻠﺰوﻣﺎت آن

اﻓﺰاﯾﺶ ﻣ ﯾﺎﺑﻨﺪ. در ﺣﺎل ﺣﺎﺿﺮ ﺳﻄ ﯾ و در ﺑﺮﺧ ﻣﻮارد ﺳﻄ دو آن اﺳﺘﻔﺎده ﺗﺠﺎری

ﻣ ﺷﻮد و ﭘﯿﺎدهﺳﺎزی اﻧﺒﻮه ﺳﻄﻮح دﯾ ﺮ ﻣﺸ ﻞ اﺳﺖ.

در ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﻘﺶ ﻣﺤﻮر، ﺳﻪ ﻣﻮﺟﻮدﯾﺖ ﮐﺎرﺑﺮ، ﻧﻘﺶ (Role) و ﻣﺠﻮز

(Permission) ﺗﻌﺮﯾﻒ ﻣ ﺮﻫ .ﺪ ﻮﺷ ﮐﺎرﺑﺮی ﯾ اﻟ ﭼﻨﺪ ﻧﻘﺶ دارد (ﻣﺜﻼ ﻣﺪﯾﺮ، ﻣﻨﺸ ،

ﻣﻌﺎون، ﻣﻌﺎون ﻣﺎﻟ و ...) و ﻫﺮ ﻧﻘﺸ ﻣﺠﻮز اﻧﺠﺎم ﺻﻔﺮ ﺗﺎ ﭼﻨﺪ ﮐﺎر را دارد.

74

ﻣﺜﻼ ﮐﺎرﺑﺮی ﻣ ﺗﻮاﻧﺪ ﻣﺪﯾﺮ و ﻣﻌﺎون ﻣﺎﻟ ﺳﺎزﻣﺎن ﺑﺎﺷﺪ و ﮐﺎرﺑﺮ دﯾ ﺮی ﻣﻨﺸ ﻣﻌﺎون

ﻣﺎﻟ و ﻣﻨﺸ ﻣﻌﺎون اﻧﻔﻮرﻣﺎﺗﯿ . ﻣﺠﻮز اﻣﻀﺎی ﻧﺎﻣﻪﻫﺎی ﻣﺎﻟ ﻧﯿﺰ ﻣ ﺗﻮاﻧﺪ ﺑﻪ ﻣﻨﺸ ﻣﺎﻟ و

ﻣﻌﺎون ﻣﺎﻟ ﺗﺨﺼﯿﺺ داده ﺑﺸﻮد. ﺣﺎل اﮔﺮ ﺷﺨﺺ ﺟﺪﯾﺪی اﺳﺘﺨﺪام ﺷﺪ ﺗﺎ ﻣﻌﺎون ﻣﺎﻟ

ﺑﺎﺷﺪ، و ﻣﺪﯾﺮ وﻇﯿﻔﻪ ﻣﻌﺎون ﻣﺎﻟ را واﮔﺬار ﮐﺮد، ﺗﻨﻬﺎ ﺑﺎ ﺗﻐﯿﯿﺮ ﻧﻘﺶ ﮐﺎرﺑﺮ ﻫﻤﻪ دﺳﺘﺮﺳ ﺎﻫ

ﻣﻨﻈﻢ ﮐﺎر ﺧﻮاﻫﻨﺪ ﮐﺮد.

در ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﻘﺶ ﻣﺤﻮر، ﺧﻄﺎی اﻧﺴﺎﻧ ﻣﺪﯾﺮﯾﺖ دﺳﺘﺮﺳ ﻫﺎ ﺑﺴﯿﺎر ﭘﺎﯾﯿﻦ ﺧﻮاﻫﺪ

ﺑﻮد زﯾﺮا دﺳﺘﺮﺳ ﻫﺎی ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﻧﻘﺶ ﻣﺸﺨﺺ اﺳﺖ و ﻧﻘﺶﻫﺎی ﻫﺮ ﮐﺎرﺑﺮ ﻧﯿﺰ ﻣﺸﺨﺺ

اﺳﺖ و ﺳﯿﺴﺘﻢ ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر دﺳﺘﺮﺳ ﮐﺎرﺑﺮ ﺑﻪ ﻣﺠﻮز را ﺗﺸﺨﯿﺺ ﻣ دﻫﺪ.

ﻫﻨﮕﺎﻣ ﮐﻪ ﺳﺎزﻣﺎن ﺑﺰرگ ﺑﺎﺷﺪ (ﻣﺜﻼ ﯾ ﻣﯿﻠﯿﻮن ﻣﺠﻮز)، ﻧﮕﻬﺪاری ارﺗﺒﺎﻃﺎت ﻧﻘﺶﻫﺎ و

ﻣﺠﻮزﻫﺎ دﺷﻮار ﻣ ﺷﻮد. در اﯾﻦ ﺣﺎﻟﺖ، ﺳﻄ دوی اﺳﺘﺎﻧﺪارد، ﯾﻌﻨ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﻘﺶ

ﻣﺤﻮر ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺒﯽ (Hierarchical RBAC) ﻣﺸ ﻞ را ﺣﻞ ﻣ ﮐﻨﺪ. در اﯾﻦ ﺣﺎﻟﺖ، ﻧﻘﺶ -

ﻫﺎ ﯾﺎ ﻣﺠﻮزﻫﺎ ﯾﺎ ﻫﺮدو ﺑﻪ ﺻﻮرت درﺧﺘ ﭼﯿﺪه ﻣ ﺪﻧﻮﺷ.

ﻧﻘﺶ ﻣﺪﯾﺮ، ﭘﺪر ﻧﻘﺶﻫﺎی ﻣﺪﯾﺮ ﻣﺎﻟ ، ﻣﺪﯾﺮ اﻧﻔﻮرﻣﺎﺗﯿ ، ﻣﺪﯾﺮ ﻧﯿﺮوی اﻧﺴﺎﻧ و ... ﺧﻮاﻫﺪ

ﺑﻮد. ﻣﺪﯾﺮ ﻣﺎﻟ ﻧﯿﺰ ﭘﺪر ﻣﺪﯾﺮ ﺑﺮﻧﺎﻣﻪرﯾﺰی، ﻣﻌﺎون ﻣﺎﻟ ، ﻣﻌﺎون ﺑﺮﻧﺎﻣﻪرﯾﺰی و ... ﺧﻮاﻫﺪ ﺑﻮد.

در ﻣﺠﻮزﻫﺎ ﻧﯿﺰ ﻣﺠﻮز اﻣﻀﺎی ﻧﺎﻣﻪﻫﺎ ﭘﺪر ﻣﺠﻮز اﻣﻀﺎی ﻧﺎﻣﻪ ﻣﺮﺧﺼ ، ﻣﺠﻮز اﻣﻀﺎی ﻧﺎﻣﻪ

درﺧﻮاﺳﺖ و ... ﺧﻮاﻫﺪ ﺑﻮد.

ﺣﺎل اﮔﺮ ﻣﺪﯾﺮ، اﺟﺎزه اﻣﻀﺎی ﻧﺎﻣﻪﻫﺎ را داﺷﺘﻪ ﺑﺎﺷﺪ، ﺑﻪ ﺻﻮرت ﻏﯿﺮ ﻣﺴﺘﻘﯿﻢ اﺟﺎزه اﻣﻀﺎی

ﻪﻣﺎ ﻪﻤﻫﻫﺎ را دارد. ﻧﮕﻬﺪاری اﯾﻦ ﺳﻄ از ﺳﯿﺴﺘﻢ ﺑﺴﯿﺎر ﺳﺎدهﺗﺮ اﺳﺖ و ﺧﻄﺎی اﻧﺴﺎﻧ در

آن ﺑﺴﯿﺎر ﮐﺎﻫﺶ ﻣ ﺪﺑﺎﯾ.

75

ﭘﯿﺎدهﺳﺎزی ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﻘﺶ ﻣﺤﻮر ﺳﻄ دو، ﺑﺴﯿﺎر ﻣﺸ ﻞ اﺳﺖ. ﻓﺮض ﮐﻨﯿﺪ ﮐﻪ

ﺳﯿﺴﺘﻢ ﻗﺼﺪ دارد ﺗﺸﺨﯿﺺ دﻫﺪ آﯾﺎ ﮐﺎرﺑﺮ A ﻣﺠﻮز X را دارد ﯾﺎ ﺧﯿﺮ. ﻓﺮآﯾﻨﺪ زﯾﺮ ﺑﺎﯾﺪ ﺗﻮﺳﻂ

ﺳﯿﺴﺘﻢ ﻃ ﺷﻮد:

· ﺗﻤﺎم ﻧﻘﺶﻫﺎی ﻣﺴﺘﻘﯿﻢ ﮐﺎرﺑﺮ A ﻟﯿﺴﺖ ﺷﻮد.

· ﺗﻤﺎم ﻧﻮادﮔﺎن ﻧﻘﺶﻫﺎی ﻣﺴﺘﻘﯿﻢ ﮐﺎرﺑﺮ، ﺑﻪ ﻋﻨﻮان ﻧﻘﺶﻫﺎی ﻏﯿﺮ ﻣﺴﺘﻘﯿﻢ

وی ﻟﯿﺴﺖ ﺷﻮﻧﺪ.

· ﺗﻤﺎم ﻣﺠﻮزﻫﺎی ﻣﺮﺑﻮﻃﻪ ﺑﻪ ﻧﻘﺶﻫﺎی ﻏﯿﺮﻣﺴﺘﻘﯿﻢ ﮐﺎرﺑﺮ ، ﺑﻪ ﻋﻨﻮان

ﻣﺠﻮزﻫﺎی ﻣﺴﺘﻘﯿﻢ ﻟﯿﺴﺖ ﺷﻮﻧﺪ.

· ﺗﻤﺎم ﻧﯿﺎﮐﺎن ﻣﺠﻮزﻫﺎی ﻣﺴﺘﻘﯿﻢ ﮐﺎرﺑﺮ ﻟﯿﺴﺖ ﺷﻮﻧﺪ. اﮔﺮ ﮐﺎرﺑﺮ ﯾ از اﯾﻦ

ﻣﺠﻮزﻫﺎ را داﺷﺘﻪ ﺑﺎﺷﻨﺪ، ﻧﻮادﮔﺎن آﻧﺮا ﻧﯿﺰ دارد.

· اﮔﺮ ﻣﺠﻮز X در اﯾﻦ ﻟﯿﺴﺖ ﻧﻬﺎﯾﯽ ﺑﻮد، ﮐﺎرﺑﺮ اﺟﺎزه دارد.

ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ اﯾﻦ ﻓﺮآﯾﻨﺪ، ﺑﺴﯿﺎر ﺣﺎﻓﻈﻪﮔﯿﺮ و زﻣﺎﻧﺒﺮ اﺳﺖ زﯾﺮا درﺻﺪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ

از دادهﻫﺎی ﺳﯿﺴﺘﻢ را ﺑﺎر ﻣ ﮐﻨﺪ. ﻫﻤﭽﻨﯿﻦ اﯾﻦ ﻓﺮآﯾﻨﺪ ﺑﺴﯿﺎر ﺳﻄ ﭘﺎﯾﯿﻦ اﺳﺖ و ﻗﺒﻞ از

اﻧﺠﺎم ﻫﺮ ﮐﺎر ﮐﻮﭼ ﺗﻮﺳﻂ ﺳﯿﺴﺘﻢ، ﺑﺎﯾﺪ ﭼ ﺷﻮد. ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎ از ﭘﯿﺎده -

ﺳﺎزی اﯾﻦ زﯾﺮﺳﺎﺧﺖ ﻣﺤﺮوم ﻫﺴﺘﻨﺪ .

٢٬٦٬٢٬٥ SEO در دﻧﯿﺎی اﻣﺮوز، ﻣﻄﺮح ﺷﺪن ﺳﺎﯾﺘﻬﺎ در ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ و اﺻﻮﻟ ﺑﻮدن

ﺳﺎﺧﺘﺎر آﻧﻬﺎ (از دﯾﺪﮔﺎه ﮐﺎرﺑﺮان و ﻣﻮﺗﻮرﻫﺎ) ﺑﺴﯿﺎر ﺣﺎﺋﺰ اﻫﻤﯿﺖ اﺳﺖ. اﯾﻦ ﻣﻬﻢ ﮐﻪ ﺑﻪ

آن Search Engine Optimization ﮔﻔﺘﻪ ﻣ ﺷﻮد، ﻣﺘﺨﺼﺼﺎن و ﻣﻬﻨﺪﺳﺎن

ﺧﻮد را در دﻧﯿﺎ دارد و ﺳﺎﯾﺘﻬﺎی ﺑﺰرگ ﭼﻨﺪﯾﻦ ﭘﺮﺳﻨﻞ ﻣﺨﺼﻮص اﯾﻦ ﮐﺎر دارﻧﺪ.

76

ﺑﺮای ﺳﺎﯾﺘﻬﺎی ﮐﻮﭼ ﺘﺮ ﻧﯿﺰ ﻣﺸﺎوراﻧ اﯾﻨﮑﺎر را اﻧﺠﺎم ﻣ دﻫﺪ. ﻧﺮماﻓﺰارﻫﺎ و

ﭼﻬﺎرﭼﻮبﻫﺎ ﻧﯿﺰ اﻣ ﺎﻧﺎت اﺑﺘﺪاﯾﯽ و ﺑﺴﺘﺮی SEO را در ﺧﻮد ﮔﻨﺠﺎﻧﯿﺪهاﻧﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ-

ﻧﻮﯾﺴﺎن و ﮐﺎرﺑﺮان ﺑﺘﻮاﻧﻨﺪ ﺳﺎﯾﺘ ﻣﻮﻓﻖﺗﺮ و دﻟﭽﺴﺐﺗﺮ داﺷﺘﻪ ﺑﺎﺷﻨﺪ.

از ﻣﻬﻤﺘﺮﯾﻦ ﮐﺎرﻫﺎﯾﯽ ﮐﻪ SEO (ﭼﻪ ﻧﺮم اﻓﺰار و ﭼﻪ ﻣﺘﺨﺼﺺ) اﻧﺠﺎم ﻣ دﻫﺪ،

زﯾﺒﺎ ﺳﺎزی آدرسﻫﺎﺳﺖ ﮐﻪ ﺑﺎ ﻧﺎمﻫﺎی URL ،URL Rewriting

Beautification و ﻧﺎﻣﻬﺎی دﯾ ﺮ ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮد. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل آدرس ﻣﻄﻠﺐ

ﭼﻬﺎرم در ﯾ ﺳﺎﯾﺖ ﻣﻌﻤﻮﻟ ﺑﻪ ﺻﻮرت:

http://site.com/?p=4

اﯾﺠﺎد ﻣ ﺷﻮد وﻟ ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﺗﮑﻨﯿ آدرس ﻓﻮق ﺑﻪ ﺻﻮرت

http://site.com/this-is-the-4th-post/

در ﻣ آﯾﺪ. اﯾﻦ آدرس در ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ و در ﭼﺸﻢ ﮐﺎرﺑﺮان ﺗﺎﺛﯿﺮ ﺑﺴﯿﺎر

ﺑﯿﺸﺘﺮی ﻧﺴﺒﺖ ﺑﻪ آدرس ﻗﺒﻠ ﮐﻪ ﺻﺮﻓﺎ ﻣﻨﺎﺳﺐ ﮐﺎﻣﭙﯿﻮﺗﺮ اﺳﺖ ﺧﻮاﻫﺪ داﺷﺖ (و

اﻟﺒﺘﻪ از ﻧﻈﺮ اﻣﻨﯿﺘ ﻧﯿﺰ ﺑﺴﯿﺎر ﻣﻨﺎﺳﺒﺘﺮ اﺳﺖ)

دﯾ ﺮ وﻇﺎﯾﻒ SEO، ﻣﺪﯾﺮﯾﺖ ﻟﯿﻨﮑﻬﺎی درون ﺻﻔﺤﻪ و ﺣﺬف ﻟﯿﻨﮏﻫﺎی ﻣﺨﺘﻠﻒ

ﺑﻪ ﯾ ﺻﻔﺤﻪ واﺣﺪ اﺳﺖ (ﺗﺎ ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ و ﮐﺎرﺑﺮان دﭼﺎر اﺑﻬﺎم ﻧﺸﻮﻧﺪ).

ﻫﻤﭽﻨﯿﻦ ﻗﺮاردادن ﺑﺮﭼﺴﺐﻫﺎی HTML ﻣﺘﺎداده در ﺑﺎﻻی ﺻﻔﺤﻪ ﺑﺮای ﻣﻌﺮﻓ ﺑﻬﺘﺮ

و ﺑﯿﺸﺘﺮ ﻣﺤﺘﻮای ﺻﻔﺤﻪ ﻧﯿﺰ از وﻇﺎﯾﻒ SEO ﺪﻨﺘﺴﻫ.

ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ ﺗﻨﻬﺎ HTML ﺻﻔﺤﻪ را ﻣ ﺑﯿﻨﻨﺪ و

اﻣ ﺎن اﺟﺮای Javascript و ﻧﻤﺎﯾﺶ ﻇﺎﻫﺮ ﺻﻔﺤﻪ را ﻧﺪارد، ﻟﺬا ﺳﺎﯾﺘﻬﺎﯾﯽ ﮐﻪ ﺑﺎ اﺗﮑﺎ

77

ﻪﺑ Javascript ﺗﺠﺮﺑﻪ ﮐﺎرﺑﺮ ﺧﻮد را ﺑﻬﯿﻨﻪ ﻣ ﮐﻨﻨﺪ، از ﻧﻈﺮ ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ

اﺻﻼ ﻗﺎﺑﻞ ﺗﻌﺎﻣﻞ ﻧﯿﺴﺘﻨﺪ و ﻧﻤﺮه ﭘﺎﯾﯿﻨ ﻣ ﺪﻧﺮﯿﮔ.

ﻫﻤﭽﻨﯿﻦ روﺷﻬﺎﯾﯽ وﺟﻮد دارد ﮐﻪ ﺑﺎ دروغ ﮔﻮﯾﯽ ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ ﺑﺎور ﻣ ﺪﻨﻨﮐ

اﯾﻦ ﺳﺎﯾﺖ ﺑﺴﯿﺎر ﭘﺮﻣﺤﺘﻮا اﺳﺖ و آﻧﺮا در ﻧﺘﺎﯾﺞ اول ﺟﺴﺘﺠﻮ ﻣ آورﻧﺪ. اﯾﻨﮕﻮﻧﻪ ﺳﺎﯾﺘﻬﺎ

ﺑﺮای ﻣﺪت ﮐﻮﺗﺎﻫ ﺑﺎﻻ ﻣ آﯾﻨﺪ و ﻣﻬﻨﺪﺳﯿﻦ SEO ﻣﺒﻠ ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﺑﺮای اﯾﻨﮑﺎر

درﯾﺎﻓﺖ ﻣ ﮐﻨﻨﺪ. ﮐﻢ ﮐﻢ ﭘﺲ از اﯾﻨﮑﻪ ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ از روی ﻧﺘﯿﺠﻪ ﮐﻠﯿ ﻫﺎی

ﮐﺎرﺑﺮان ﻓﻬﻤﯿﺪﻧﺪ ﮐﻪ ﻣﺤﺘﻮای اﯾﻦ ﺳﺎﯾﺘﻬﺎ ﺑﺪردﺑﺨﻮر ﻧﯿﺴﺖ، آﻧﻬﺎ را از ﻧﺘﺎﯾﺞ ﺧﻮد

ﺣﺬف ﻣ ﺪﻨﻨﮐ.

٢٬٦٬٢٬٦ وب ﺳﺮوﯾﺲ

وب ﺳﺮوﯾﺲ ﺗﮑﻨﻮﻟﻮژی ﺗﻌﺎﻣﻞ دو ﻧﺮماﻓﺰار ﺑﺎ ﯾ ﺪﯾ ﺮ اﺳﺖ. در واﻗ وب

ﺳﺮوﯾﺲ اﺳﺘﺎﻧﺪارد ﺟﺪﯾﺪ RPC (ﻓﺮاﺧﻮاﻧ ﺗﻮاﺑﻊ از راه دور) اﺳﺖ ﮐﻪ ﺑﻪ وﺳﯿﻠﻪ آن،

ﯾ ﺑﺮﻧﺎﻣﻪ ﺑﺮ روی ﯾ ﺳﯿﺴﺘﻢ ﻣ ﺗﻮاﻧﺪ ﯾ ﺗﺎﺑﻊ از ﯾ ﺳﯿﺴﺘﻢ دﯾ ﺮ را ﻓﺮاﺧﻮاﻧ

ﻧﻤﻮده، ﻣﻌﻤﺎری SOA) Service Oriented) را ﭘﯿﺎدهﺳﺎزی ﻧﻤﺎﯾﺪ.

وب ﺳﺮوﯾﺲ ﺑﺮای ﮐﺎرﺑﺮان ﻋﺎدی ﯾ ﺳﯿﺴﺘﻢ ﺑﯽ ﻓﺎﯾﺪه اﺳﺖ، اﻣﺎ ﻓﺮض ﮐﻨﯿﺪ

ﺷﻤﺎ ﺳﺎﯾﺘ دارﯾﺪ ﮐﻪ آﺧﺮﯾﻦ اﺧﺒﺎر ورزﺷ را ﺑﺎ ﻧﺘﺎﯾﺞ اﻧﻮاع ﻣﺴﺎﺑﻘﺎت در اﺧﺘﯿﺎر ﮐﺎرﺑﺮان

ﻗﺮار ﻣ دﻫﺪ. ﺑﺎ اﻓﺰودن زﯾﺮﺳﺎﺧﺖ وب ﺳﺮوﯾﺲ و اراﺋﻪ ﮐﺮدن ﻣﺤﺘﻮای ﻏﻨ ﺳﺎﯾﺖ

ﺷﻤﺎ (ﮐﻪ ﭘﺮﺳﻨﻞ زﯾﺎدی در ﺑﺮوزرﺳﺎﻧ آن زﺣﻤﺖ ﻣ ﮐﺸﻨﺪ) از ﻃﺮﯾﻖ وب ﺳﺮوﯾﺲ،

ﺖﯾﺎﺳﻫﺎی ﺧﺒﺮی/ورزﺷ ﮐﻮﭼ ﺘﺮ ﻣ ﺗﻮاﻧﻨﺪ ﺑﺎ ﭘﺮداﺧﺖ ﻣﺒﻠﻐ از وبﺳﺮوﯾﺲﻫﺎی

ﺷﻤﺎ اﺳﺘﻔﺎده ﻧﻤﻮده ﻣﻄﺎﻟﺐ و اﺧﺒﺎر ﺷﻤﺎ را در ﺳﺎﯾﺖ ﺧﻮدﺷﺎن ﻧﻤﺎﯾﺶ دﻫﻨﺪ.

78

در ﺣﺎل ﺣﺎﺿﺮ اﺳﺘﺎﻧﺪارد وب ﺳﺮوﯾﺲ ﭘﺮوﺗﮑﻞ SOAP اﺳﺖ اﻣﺎ ﺑﺎ زﯾﺎدﺗﺮ

ﺷﺪن اﺳﺘﻔﺎده از وبﺳﺮوﯾﺲﻫﺎ ﺗﻮﺳﻂ ﺟﺎواﺳ ﺮﯾﭙﺖ و آژاﮐﺲ، اﺳﺘﺎﻧﺪاردﻫﺎی

,JSON, JSONP, YAML, Serialized PHP و ﻏﯿﺮه ﻧﯿﺰ ﭘﺮ اﺳﺘﻔﺎده ﺷﺪهاﻧﺪ.

ﺷﻞ ٤٨ ﻧﻤﺎﯾﻪ JSON

ﯾ ﭼﻬﺎرﭼﻮب ﺧﻮب، ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﺗﻮاﺑﻊ ﺧﻮد (ﯾﺎ ﮐﻨﺘﺮﻟ ﺮﻫﺎی ﺧﻮد) را ﭘﺲ از

ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻣﻨﺎﺳﺐ ﺑﺎ اﻧﻮاع ﻗﺎﻟﺐﻫﺎی وب ﺳﺮوﯾﺲ ﺑﺪون ﮐﻤﺘﺮﯾﻦ زﺣﻤﺘ ﺑﺮای

ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ در اﺧﺘﯿﺎر ﻫﻤ ﺎن ﻗﺮار دﻫﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﺑﺘﻮاﻧﺪ رﺷﺪ ﻣﻘﺘﻀ را داﺷﺘﻪ ﺑﺎﺷﺪ.

٢٬٦٬٢٬٧ AJAX آژاﮐﺲ (ﺗﮑﻨﻮﻟﻮژی درﺧﻮاﺳﺖ ﭘﺎﺳ آﺳﻨﮑﺮون ﺗﻮﺳﻂ ﺟﺎواﺳ ﺮﯾﭙﺖ در ﺻﻔﺤﺎت

وب) از دﯾﺪﮔﺎه ﻣﻌﻤﺎری ﺗﻔﺎوت ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﺑﺎ درﺧﻮاﺳﺖﻫﺎی ﻋﺎدی دارد. در

درﺧﻮاﺳﺖﻫﺎی آژاﮐﺲ ﻣﻌﻤﻮﻻ ﭘﺎﺳ ﻣﻮرد ﻧﻈﺮ ﻗﻄﻌﻪای داده ﺧﺎم ﯾﺎ ﻣﻘﺪاری ﮐﺪ

اﺳﺖ، در ﺣﺎﻟ ﮐﻪ در درﺧﻮاﺳﺖﻫﺎی ﻋﺎدی ﭘﺎﺳ ﻣﻄﻠﺐ ﯾ ﺻﻔﺤﻪ ﮐﺎﻣﻞ HTML

ﺑﺎ ﻗﺎﻟﺐ ﺑﻨﺪی و ﭼﻬﺎرﭼﻮب اﺳﺖ.

اﮔﺮ ﭼﻬﺎرﭼﻮب ﻣﻮرد ﻧﻈﺮ ﻣﺎ ﻧﺘﻮاﻧﺪ ﺗﻔﮑﯿ ﺑﺮای درﺧﻮاﺳﺖﻫﺎی آژاﮐﺲ ﻗﺎﺋﻞ

ﺷﺪه، آﻧﻬﺎ را در ﻣﻌﻤﺎری ﻣﻮرد ﻧﻈﺮ اراﺋﻪ دﻫﺪ، ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻣﺠﺒﻮر ﺧﻮاﻫﺪ ﺑﻮد ﺗﺎ

ﭼﻬﺎرﭼﻮب را دور ﺑﺰﻧﺪ و از روﺷﻬﺎی ﻧﺎﻣﻬﻨﺪﺳ ﺑﺮای ﻧﯿﻞ ﺑﻪ ﻣﻘﺼﻮد اﺳﺘﻔﺎده ﮐﻨﺪ ﮐﻪ

در دراز ﻣﺪت اﻣﻨﯿﺖ ﺳﯿﺴﺘﻢ را ﺷﺪﯾﺪا ﻣﻮرد ﻣﺨﺎﻃﺮه ﻗﺮار ﻣ دﻫﺪ.

79

ﻫﻤﭽﻨﯿﻦ از آﻧﺠﺎﯾﯽ ﮐﻪ درﺧﻮاﺳﺖﻫﺎی آژاﮐﺲ ﮐﻤ ﻧﺎﻣﺤﺴﻮس ﻫﺴﺘﻨﺪ و ﺗﺴﺖ و

اﯾﺰوﻟﻪ ﮐﺮدن آﻧﻬﺎ ﺑﻪ ﺳﺎدﮔ ﻣﯿﺴﺮ ﻧﯿﺴﺖ، ﺧﯿﻠ ﺑﯿﺸﺘﺮ ﭘﺘﺎﻧﺴﯿﻞ ﻣﻌﻀﻞ اﻣﻨﯿﺘ

داﺷﺘﻦ در آﻧﻬﺎ وﺟﻮد دارد؛ ﻫﺮﭼﻨﺪ ﯾﺎﻓﺘﻦ اﯾﻦ ﻣﻌﻀﻼت ﻧﯿﺰ ﺑﻪ ﺳﺎدﮔ درﺧﻮاﺳﺖﻫﺎی

ﻋﺎدی ﻧﯿﺴﺖ.

٢٬٦٬٢٬٨ ﺶﮐ ﺖﯾﺮ ﺪﻣ

در ﺳﯿﺴﺘﻢﻫﺎی ﮐﻮﭼ و ﮐﻢ ﻣﺨﺎﻃﺐ ﮐﺶ (Cache) ﻣﺴﺌﻠﻪ ﻣﻬﻤ ﻧﯿﺴﺖ. در

ﻢﺘﺴﯿﺳﻫﺎی ﺑﺰرﮔ ﮐﻪ ﺻﻔﺤﺎت زﻣﺎن ﭘﺮدازش زﯾﺎدی ﻧﻤ ﺧﻮاﻫﻨﺪ ﻧﯿﺰ ﺑﺎز ﻫﻢ ﻣﺴﺌﻠﻪ

ﭼﻨﺪان ﻣﻬﻤ ﻧﯿﺴﺖ، اﻣﺎ در ﻫﺮ ﺣﺎل وﺟﻮد ﮐﺶ ﺑﺮای اﯾﻦ ﺳﯿﺴﺘﻢﻫﺎ ﮐﺎراﯾﯽ را ﺑﺴﯿﺎر

ﺑﻬﺒﻮد ﻣ ﺪﺸﺨﺑ.

ﻢﺘﺴﯿﺳﻫﺎی ﭘﺮﻣﺨﺎﻃﺐ ﺣﺘﻤﺎ ﺑﻪ ﮐﺶ ﻧﯿﺎز ﺧﻮاﻫﻨﺪ داﺷﺖ. اﯾﻦ ﺳﯿﺴﺘﻢﻫﺎ ﺑﺮای

ﻧﻤﺎﯾﺶ ﺻﻔﺤﺎت ﻧﺴﺒﺘﺎ ﺛﺎﺑﺖ ﺧﻮد ﺑﻪ ﻣﺨﺎﻃﺒﺎن ﻣﺘﻌﺪد، ﻣﻨﺎﺑﻊ ﺑﺴﯿﺎری ﺻﺮف ﻣ ﺪﻨﻨﮐ

و ﻣﻨﺎﺑﻊ ﻧﯿﺰ ﻫﺰﯾﻨﻪ ﺑﺎﻻﯾﯽ دارد.

ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﯾ وﺑﻼگ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ روزاﻧﻪ دو ﻣﻄﻠﺐ ﻣﻨﺘﺸﺮ ﻣ ﮐﻨﺪ و

روزاﻧﻪ ﺻﺪ ﻫﺰار ﻧﻔﺮ ﺑﺎزدﯾﺪ ﮐﻨﻨﺪه دارد. اﯾﻦ وﺑﻼگ ﺑﻪ ازای ﻫﺮ ﯾ درﺧﻮاﺳﺖ اﯾﻦ

ﺻﺪ ﻫﺰار ﻧﻔﺮ، ﯾ ﺑﺎر ﮐﻞ ﮐﺪ را اﺟﺮا ﻣ ﮐﻨﺪ و ﺻﻔﺤﻪ ﻣﺮﺑﻮﻃﻪ را ﺑﻪ وی ﻧﺸﺎن ﻣ -

دﻫﺪ .

ﺣﺎل اﮔﺮ ﺑﻪ ازای درﺧﻮاﺳﺖ اول، ﺻﻔﺤﻪ را ﭘﺮدازش ﮐﺮده ﻧﻤﺎﯾﺶ دﻫﺪ و ﺧﺮوﺟ

را در ﯾ ﻓﺎﯾﻞ HTML ذﺧﯿﺮه ﮐﻨﺪ و ﺑﻪ ازای درﺧﻮاﺳﺖﻫﺎی ﺑﻌﺪی، ﺻﺮﻓﺎ ﻓﺎﯾﻞ

HTML آﻣﺎده را ﺑﻪ ﮐﺎرﺑﺮ ﺗﺤﻮﯾﻞ دﻫﺪ، ﺳﺮﻋﺖ ﮐﺎر ﺧﻮد را ﺑﺴﯿﺎر اﻓﺰاﯾﺶ داده و از

ﮐﺸﯿﻨﮓ اﺳﺘﻔﺎده ﻧﻤﻮده اﺳﺖ.

80

ﻫﻤﯿﻦ وﺑﺴﺎﯾﺖ اﮔﺮ ﺑﺮ روی ﺻﻔﺤﻪ ﺧﻮد ﺳﺎﻋﺖ و روز را ﻧﻤﺎﯾﺶ دﻫﺪ، دﯾ ﺮ ﻧﻤ -

ﺗﻮاﻧﺪ از ﮐﺸﯿﻨﮓ اﺳﺘﻔﺎده ﮐﻨﺪ زﯾﺮا ﺑﺎ ﮔﺬر زﻣﺎن ﺳﺎﻋﺖ ﺗﻐﯿﯿﺮ ﻣ ﮐﻨﺪ وﻟ ﻓﺎﯾﻞ ﮐﺶ

ﺷﺪه ﺳﺎﻋﺖ زﻣﺎن ﮐﺶ را در ﺧﻮد دارد.

ﻟﺬا زﯾﺮﺳﺎﺧﺖﻫﺎی ﮐﺸﯿﻨﮓ اﺣﺘﯿﺎج ﺑﻪ ﻫﻮﺷﻤﻨﺪی و ﺗﮑﻨﻮﻟﻮژی دارﻧﺪ ﺗﺎ ﺑﺘﻮاﻧﻨﺪ ﺑﺎ

ﺷﻨﺎﺧﺖ درﺳﺖ ﺳﯿﺴﺘﻢ و ﻧﺤﻮه ﻋﻤﻠ ﺮد آن، ﺑﻬﺘﺮﯾﻦ راﻫ ﺎر را اراﺋﻪ دﻫﻨﺪ.

٢٬٦٬٢٬٩ ﺎﻄﺧ ﺖﯾ ﯾﺪﻣ

در ﯾ ﭘﺮوژه داﻧﺸ ﺎﻫ ﯾﺎ ﯾ ﺳﯿﺴﺘﻢ در ﺣﺎل ﺗﻮﺳﻌﻪ ﮐﻪ ﻫﻨﻮز ﺗﺠﺎری ﻧﺸﺪه

اﺳﺖ، ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ اﻣﺮی ﻏﯿﺮﻣﻬﻢ و ﺑﯽ ارزش ﺑﻪ ﻧﻈﺮ ﻣ رﺳﺪ، اﻣﺎ در ﯾ ﺳﯿﺴﺘﻢ

ﻋﻤﻠﯿﺎﺗ و ﺣﯿﺎﺗ ، ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ از ﻣﻬﻤﺘﺮﯾﻦ وﯾﮋﮔ ﻫﺎی ﺳﯿﺴﺘﻢ اﺳﺖ.

زﯾﺮﺳﺎﺧﺖﻫﺎی اﯾﺪهآل ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ اﻣ ﺎن دﺳﺘﻪ ﺑﻨﺪی ﺧﻄﺎﻫﺎ ﺑﺮ ﺣﺴﺐ اﻫﻤﯿﺖ،

ﺗﺸﺨﯿﺺ ﻧﻮع ﮐﺎرﺑﺮ ﺳﯿﺴﺘﻢ و ﻧﻤﺎﯾﺶ ﯾﺎ ﻋﺪم ﻧﻤﺎﯾﺶ ﺧﻄﺎ ﺑﻪ وی (ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل

ﺧﻄﺎﻫﺎ ﺑﻪ ﻣﺪﯾﺮ ﻧﺸﺎن داده ﻣﯿﺸﻮد و ﺑﺮای ﮐﺎرﺑﺮان دﯾ ﺮ ﻻگ ﻣ ﺷﻮد)

در ﺻﻮرﺗ ﮐﻪ ﺧﻄﺎ ﺣﺴﺎس ﺑﺎﺷﺪ (ﻣﺜﻼ ﺧﻄﺎی اﻣﻨﯿﺘ ﯾﺎ ﺧﻄﺎﯾﯽ ﮐﻪ ﺑﺎﻋﺚ ﺗﻮﻗﻒ

ﮐﻞ ﺳﯿﺴﺘﻢ ﺷﻮد) ﺳﯿﺴﺘﻢﻫﺎی ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ ﺑﺎﯾﺪ ﺑﺘﻮاﻧﻨﺪ ﺗﻮﺳﻂ ایﻣﯿﻞ و اس ام

اس ﻣﺮاﺗﺐ را ﺑﻪ ﻣﺪﯾﺮ ﺳﯿﺴﺘﻢ اﻃﻼع دﻫﻨﺪ.

اﻫﻤﯿﺖ اﺻﻠ ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ ﺑﻪ اﯾﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ ﻫ ﺮﻫﺎ ﺑﺮای ﺷﺮوع ﮐﺎرﺷﺎن ﺑﺮ

روی ﯾ ﺳﯿﺴﺘﻢ، اﺑﺘﺪا ﺑﺎﯾﺪ رﻓﺘﺎر آﻧﺮا ﺷﻨﺎﺳﺎﯾﯽ ﮐﻨﻨﺪ. ﺧﻄﺎﻫﺎ ﺑﺎ اﻃﻼﻋﺎﺗ ﮐﻪ ﺑﺮ روی

ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﻣ دﻫﻨﺪ، ﺑﯿﺸﺘﺮی رﻓﺘﺎر ﺳﯿﺴﺘﻢ را ﺑﻪ ﯾ ﻧﻔﻮذﮔﺮ ﻣ ﺪﻨﻧﺎﺳﺎﻨﺷ.

ﻫﻤﭽﻨﯿﻦ اﮔﺮ ﻧﻔﻮذﮔﺮی اﻗﺪاﻣ ﺑﺮای ﻧﻔﻮذ ﮐﺮد، ﻧﺘﯿﺠﻪ آﻧﺮا از ﻃﺮﯾﻖ ﺧﻄﺎی ﻣﺮﺑﻮﻃﻪ ﺑﻪ

دﺳﺖ ﻣ آورد.

81

ﺑﻪ ﻃﻮر ﮐﻠ ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ از ﻣﻬﻤﺘﺮﯾﻦ ﻣﻠﺰوﻣﺎت اﻣﻨﯿﺘ ﯾ ﺳﯿﺴﺘﻢ اﺳﺖ ﮐﻪ

ﻣﻌﻤﻮﻻ در ﻣﻮرد آن ﺳﻬﻞ اﻧﮕﺎری ﻣ ﺷﻮد.

ﺷﻞ ٤٩ ﻧﻤﻮﻧﻪ ﺧﻄﺎی ASPX

٢٬٦٬٢٬١٠ ﻣﺪﯾﺮﯾﺖ زﻣﺎن

ﻣﺪﯾﺮﯾﺖ زﻣﺎن ﯾﺎ ﺑﻪ ﻋﺒﺎرت ﺑﻬﺘﺮ Profile ﺑﻪ ﺻﻮرت داﺋﻢ ﻋﻤﻠﯿﺎت ﺳﯿﺴﺘﻢ را

زﻣﺎﻧﺴﻨﺠ ﻧﻤﻮده از آن ﮔﺰارش اﯾﺠﺎد ﻣ ﮐﻨﺪ ﯾﺎ در ﺻﻮرت ﺣﺴﺎس ﺷﺪن آن، ﻣﺪﯾﺮ

ﺳﯿﺴﺘﻢ را ﺧﺒﺮ ﻣ ﻧﻤﺎﯾﺪ.

ﻣﺜﻼ اﮔﺮ ﺳﯿﺴﺘﻤ دارای ﻣﻌﻀﻠ ﺑﺎﺷﺪ ﮐﻪ ﺑﺎ درﯾﺎﻓﺖ ورودی ﺧﺎص، ٣٠ ﺛﺎﻧﯿﻪ ﮐﻞ

ﭘﺮدازﻧﺪه و ﺣﺎﻓﻈﻪ را درﮔﯿﺮ ﺧﻮد ﮐﻨﺪ، ﯾ ﻧﻔﻮذﮔﺮ ﺑﺎ ﮐﺸﻒ اﯾﻦ رﻓﺘﺎر ﺑﻪ ﺳﺎدﮔ

82

ﺳﯿﺴﺘﻢ را از دﺳﺘﺮس ﺧﺎرج ﻣ ﺳﺎزد. در اﯾﻦ زﻣﺎن زﯾﺮﺳﺎﺧﺖ ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ ﺑﺎ

ﺗﺸﺨﯿﺺ ﻏﯿﺮﻋﺎدی ﺑﻮدن زﻣﺎن اﯾﻦ ﺻﻔﺤﻪ ﻣ ﺗﻮاﻧﺪ ﺳﯿﺴﺘﻢ را ﻧﺠﺎت دﻫﺪ.

اﮐﺜﺮ ﭼﻬﺎرﭼﻮبﻫﺎ اﯾﻦ اﻣ ﺎن را ﻣﻬﯿﺎ ﻧﻤ ﮐﻨﻨﺪ و ﺑﻪ ﻣﺤﯿﻂ ﺗﻮﺳﻌﻪ (IDE) ﻣ -

ﺳﭙﺎرﻧﺪ .

٢٬٦٬٢٬١١ اﻟﻮی ﺗﻮﺳﻌﻪ

ﻫﻤﺎﻧﻄﻮر ﮐﻪ در ﺑﺨﺶﻫﺎی ﻗﺒﻠ ﺑﺤﺚ ﺷﺪ، اﻟ ﻮﻫﺎﯾﯽ ﻣﺎﻧﻨﺪ MVC و

Component MVC ﮐﻪ ﺑﺎ ﻧﺎمﻫﺎی MVC Push و MVC Pullﻪﺘﺧ ﻨﺷ ﺰﯿﻧ

ﯿﻣﺸﻮد، اﺣﺘﯿﺎج ﺑﻪ ﭼﻬﺎرﭼﻮب ﻣﻨﺎﺳﺐ ﺑﺮای ﺗﻮﺳﻌﻪ دارﻧﺪ.

در ﺻﻮرﺗ ﮐﻪ ﭼﻬﺎرﭼﻮب از اﻟ ﻮی ﻣﺮﺑﻮﻃﻪ ﭘﺸﺘﯿﺒﺎﻧ ﻧﮑﻨﺪ، ﺑﺮﻧﺎﻣﻪﺎﺑ ﺲ ﻮﻧ

دﺷﻮاری ﺑﺴﯿﺎر ﻣ ﺗﻮاﻧﺪ آﻧﺮا در زﯾﺮﺳﺎﺧﺖ ﺑ ﻨﺠﺎﻧﺪ و اﯾﻦ ﺑﺎﻋﺚ ﺿﻌﻒ ﻣﻬﻨﺪﺳ ﻧﺮم -

اﻓﺰار ﺳﯿﺴﺘﻢ ﺷﺪه، ﻣﻨﺠﺮ ﺑﻪ ﺿﻌﻒ اﻣﻨﯿﺖ ﻣ ﮔﺮدد.

در ﺣﺎل ﺣﺎﺿﺮ اﮐﺜﺮ ﭼﻬﺎرﭼﻮبﻫﺎ از MVC ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﻨﺪ و ﻣﻮاردی ﮐﻪ اﯾﻨﮑﺎر

را ﻧﻤ ﮐﻨﻨﺪ اﺟﺎزه ﺗﻨﻈﯿﻢ اﻟ ﻮ را ﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻣ ﺳﭙﺎرﻧﺪ.

٢٬٦٬٢٬١٢ ﻗﺎﻟﺐ ﺑﻨﺪی

ﺑﺴﯿﺎری از ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب، ﺧﺼﻮﺻﺎ آﻧﻬﺎﯾﯽ ﮐﻪ ﻣﺮﺑﻮط ﺑﻪ زﺑﺎنﯽﯾﺎﻫ

ﻫﺴﺘﻨﺪ ﮐﻪ اﻣ ﺎن ﺧﺮوﺟ اﻧﺒﻮه دادن را ﻧﺪارﻧﺪ (ﻣﺎﻧﻨﺪ ﺟﺎوا و روﺑﯽ)، زﯾﺮﺳﺎﺧﺖ

ﺐﻟﺎﻗﺑﻨﺪی (Templating) ﺻﻔﺤﺎت را دارا ﻫﺴﺘﻨﺪ. اﯾﻦ زﯾﺮﺳﺎﺧﺖ اﻣ ﺎن ﻧﻮﺷﺘﻦ ﮐﺪ

HTML و درج ﮐﺮدن داده ﺑﺎ ﻗﺎﻟﺐﻫﺎی ﺧﺎص و ﺳﺎدهای در ﻣﯿﺎن آن اﺳﺖ.

83

اﯾﻦ ﻗﺎﻟﺐﻫﺎ در راﺳﺘﺎی اﻫﺪاف MVC اﻣ ﺎن اﯾﺠﺎد ﻇﺎﻫﺮ ﻧﺮماﻓﺰار ﺗﻮﺳﻂ ﻃﺮاﺣﺎن

ﺑﻪ ﺟﺎی ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن را ﻓﺮاﻫﻢ ﻣ ﮐﻨﺪ. ﻣﺪﯾﺮ ﺗﯿﻢ ﮐﺎﻓﯿﺴﺖ ﺑﻪ ﻃﺮاح ﺑ ﻮﯾﺪ ﮐﻪ اﯾﻦ

ﭼﻨﺪ داده را دارﯾﻢ و ﻗﺎﻟﺒﯽ ﺑﺴﺎز ﮐﻪ آﻧﻬﺎ را ﻧﻤﺎﯾﺶ دﻫﺪ.

ﺑﺮای زﺑﺎنﺪﻨﻧﺎ ﯽﯾﺎﻫ PHP ﮐﻪ ﺧﻮد اﻣ ﺎن Template ﺑﻮدن را دارا ﻫﺴﺘﻨﺪ،

ﻗﺎﻟﺒﻬﺎﯾﯽ وﺟﻮد دارد وﻟ اﺳﺘﻔﺎده از آﻧﻬﺎ ﻣﻌﻤﻮل ﻧﯿﺴﺖ و در ﺑﺤﺚﻫﺎی ﺗﺨﺼﺼ

ﻣﺨﺎﻟﻔﯿﻦ ﺑﺴﯿﺎری ﻧﯿﺰ دارﻧﺪ.

زﯾﺮﺳﺎﺧﺖ ﻗﺎﻟﺐﺑﻨﺪی ﺑﺎﯾﺪ دارای ﺗﻮاﺑﻊ ﺧﺎﺻ ﺑﺮای اﺻﻮﻟ ﺳﺎزی ﺧﺮوﺟ ﺑﺎﺷﺪ ﺗﺎ

از ﺣﻤﻼت ﻣﺘﻌﺪدی ﮐﻪ ﺑﺮ روی ﺧﺮوﺟ ﯾ ﻧﺮماﻓﺰار ﻗﺮار ﻣ ﮔﯿﺮﻧﺪ ﺟﻠﻮﮔﯿﺮی ﻧﻤﺎﺪﯾ،

در ﻏﯿﺮ اﯾﻨﺼﻮرت اﯾﻦ ﺣﻤﻼت ﻣﻬﻢ و ﺧﻄﺮﻧﺎک ﭘﺮﺗﻌﺪد ﺧﻮاﻫﻨﺪ ﺷﺪ.

٢٬٦٬٢٬١٣ ﻣﺪﯾﺮﯾﺖ زﺑﺎن

از دﯾ ﺮ وﯾﮋﮔ ﻫﺎی ﻣﻬﻢ ﯾ ﭼﻬﺎرﭼﻮب در دﻧﯿﺎی وب اﻣﺮوزی، زﯾﺮﺳﺎﺧﺖ ﻣﺪﯾﺮﯾﺖ

زﺑﺎن (Internationalization) ﮐﻪ ﺑﺎ ﻋﺒﺎرت i18n (ﺣﺮف اول و آﺧﺮ ﻟﻐﺖ ﺑﻪ ﻫﻤﺮاه

ﺗﻌﺪاد ﺣﺮﻓﻬﺎی ﻣﯿﺎﻧ ) ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮد، ﻣ ﺪﺷﺎﺑ.

ﭼﻨﺪزﺑﺎﻧ ، ﺳﺎﺧﺘﺎری ﭘﯿﭽﯿﺪه اﺳﺖ ﮐﻪ ﭘﯿﺎدهﺳﺎزیﻫﺎی ﻣﺘﻨﻮﻋ دارد. ﺑﯿﺸﺘﺮ اﯾﻦ

ﭘﯿﺎدهﺳﺎزیﻫﺎ ﻣﺒﺘﻨ ﺑﺮ ﻓﺎﯾﻞ و ﮐﺸﯿﻨﮓ ﻫﺴﺘﻨﺪ و ﺗﻌﺪاد ﮐﻤ ﻧﯿﺰ ﻣﺒﺘﻨ ﺑﺮ ﭘﺎﯾ ﺎه داده

ﻣ ﺑﺎﺷﻨﺪ. در ﻫﺮ ﺻﻮرت ﻫﻨﮕﺎﻣ ﮐﻪ ﺗﻌﺪاد زﺑﺎنﻫﺎ ﺑﯿﺶ از دو ﻣ ﺷﻮد، ﭘﯿﺎدهﺳﺎزیﺎﻫ

ﻣﻌﻤﻮﻻ ﺑﺴﯿﺎر ﭘﯿﭽﯿﺪه ﻣ ﺪﻧﻮﺷ.

ﻪﺘﮑﻧای ﮐﻪ ﭼﻨﺪزﺑﺎﻧ را در ﭼﻬﺎرﭼﻮبﻫﺎ ﺣﺎﺋﺰ اﻫﻤﯿﺖ اﻣﻨﯿﺘ ﻣ ﺳﺎزد، ﮐﻢ ﮐﺎرﺑﺮد

ﺑﻮدن آﻧﻬﺎ و ﻋﺪم ﺗﺴﺖ درﺳﺖ اﯾﻦ وﯾﮋﮔ اﺳﺖ. اﮐﺜﺮ ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﯾ ﯾﺎ دوﺑﺎر

84

زﯾﺮﺳﺎﺧﺖ را ﺗﺴﺖ ﻣ ﻧﻤﺎﯾﻨﺪ و دﯾ ﺮ ﺑﻪ ﺟﺰﺋﯿﺎت آن دﻗﺖ ﮐﺎﻓ ﻧﻤ ﮐﻨﻨﺪ. ﭼﻬﺎرﭼﻮب -

ﻫﺎی ﻗﺎﺑﻞ ﻣﻼﺣ ﻈ ﻪای در ﺳﺎﻟﻬﺎی اﺧﯿﺮ از ﻃﺮﯾﻖ اﯾﻦ زﯾﺮﺳﺎﺧﺖ ﻫ ﺷﺪه اﻧﺪ.

٢٬٦٬٢٬١٤ اﻓﺰوﻧﻪﺎﻫ

ﻫﯿﭻ ﭼﻬﺎرﭼﻮﺑﯽ ﺑﺪون ﭘﺸﺘﯿﺒﺎﻧ ﺧﻮب از اﻓﺰوﻧﻪﻫﺎ، ﻣﺤﺒﻮﺑﯿﺖ ﭘﯿﺪا ﻧﻤ ﺪﻨﮐ.

اﻣﺮوزه ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎی ﺑﯿﺸﻤﺎری در اﯾﻨﺘﺮﻧﺖ وﺟﻮد دارﻧﺪ ﮐﻪ ﺑﺎ اﺳﺘﻔﺎده از آﻧﻬﺎ ﻣ ﺗﻮان

اﻧﻮاع ﮐﺎرﻫﺎی ﭘﯿﭽﯿﺪه را در ﮐﻮﺗﺎﻫﺘﺮﯾﻦ زﻣﺎن ﻣﻤ ﻦ اﻧﺠﺎم داد. ﻣﺜﻼ ﮐﺘﺎﺑﺨﺎﻧﻪ

PHPExcel ﮐﻞ ﮐﺎراﯾﯽ ﻧﺮماﻓﺰار اﮐﺴﻞ را ﺑﻪ PHP ﻣ اﻓﺰاﯾﺪ.

ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن وب ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎ و اﻓﺰودن آﻧﻬﺎ ﺑﻪ ﭼﻬﺎرﭼﻮب

ﺧﻮد، از اﻣ ﺎﻧﺎت آﻧﻬﺎ ﺑﻬﺮهﻣﻨﺪ ﻣ ﺷﻮﻧﺪ. ﭼﻬﺎرﭼﻮبﻫﺎ ﻧﯿﺰ ﺑﺮای ﺗﻔﮑﯿ و ﺗﻤﯿﺰی

ﺳﺎﺧﺘﺎر ﮐﺪ، ﺑﺨﺶ ﻣﺠﺰاﯾﯽ ﺑﺮای آﻧﻬﺎ در ﻧﻈﺮ ﻣ ﺪﻧﺮﯿﮔ.

ﻮﻤﻌﻣﻻ ﺑﺮای اﺳﺘﻔﺎده از ﯾ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺟﺎﻧﺒﯽ (ﮐﻪ ﻣﻌﻤﻮﻻ ﺑﺎ ﻋﺒﺎرت ﺷﺨﺺ ﺛﺎﻟﺚ

Third Party ﻧﺎﻣﯿﺪه ﻣ ﺷﻮد) ﻻزم ﻧﯿﺴﺖ ﺗﻐﯿﯿﺮی در ﮐﺪ داده ﺷﻮد و ﮐﺎﻓﯿﺴﺖ

ﻓﺎﯾﻠﻬﺎی آن در ﻣﺤﻞ ﻣﺮﺑﻮﻃﻪ ﮐﭙﯽ ﺷﻮد. در ﺑﺮﺧ از ﭼﻬﺎرﭼﻮبﻫﺎ ﻧﯿﺰ ﻻزم اﺳﺖ ﯾ

ﭻﯿﭘﺬﻏﺎﮐ (Wrapper) ﺑﺮ روی آن ﻧﻮﺷﺘﻪ ﺷﻮد.

ﺗ ﻞﺑ ﻗ ﻪﺘ ﻧﻮﺟﻪ آﻧﺴﺖ ﮐﻪ ﻫﺮ ﮐﺘﺎﺑﺨﺎﻧﻪ ﺷﺨﺺ ﺛﺎﻟﺜ ، اﻣﻨﯿﺖ ﺧﻮد را دارد و ﺑﺎ

روش و اﻟ ﻮ و ﻣﻌﻤﺎری ﻣﺨﺼﻮص ﺧﻮد ﭘﯿﺎده ﺷﺪه اﺳﺖ. ﻣﻌﻤﻮﻻ ﻧﻔﻮذﮔﺮاﻧ ﮐﻪ از

ﻫ ﯾ ﺳﯿﺴﺘﻢ در ﻣﺮاﺣﻞ اوﻟﯿﻪ ﺑﺎز ﻣ ﻪﻧﺎﺨﺑﺎ ﮐ ﺸﮐ ﺑ ،ﺪﻨﻧﺎﻣﻫﺎی اﺳﺘﻔﺎده ﺷﺪه

در آن ﺳﯿﺴﺘﻢ و ﻧﻔﻮذ ﺑﻪ ﯾ از آﻧﻬﺎ اﻣﯿﺪ ﻣ ﺑﻨﺪﻧﺪ. اﻣﻦ ﮐﺮدن اﯾﻦ ﮐﺘﺎﺑﺨﺎﻧﻪﻪﺑ ﺰﯿﻧ ﺎﻫ

ﺳﺎدﮔ ﻣﯿﺴﺮ ﻧﯿﺴﺖ زﯾﺮا ﻫﺮﮐﺪام ﺗﯿﻤ ﺑﺰرگ از ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن در اﺧﺘﯿﺎر دارﻧﺪ ﮐﻪ

ﻣﻌﻤﻮﻻ ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ ﻧﯿﺰ در ﻣﯿﺎﻧﺸﺎن ﻧﯿﺴﺖ.

85

اﻣﻨﯿﺖ ﻫﺮ ﺳﯿﺴﺘﻤ را ﻣ ﺗﻮان ﻣﻌﺎدل اﻣﻨﯿﺖ ﺿﻌﯿﻒﺗﺮﯾﻦ زﯾﺮﺳﺎﺧﺖ آن داﻧﺴﺖ،

ﮐﻪ در اﮐﺜﺮ ﻣﻮارد ﻫﻤﯿﻦ اﻓﺰوﻧﻪﻫﺎی اﻓﺰوده ﺷﺪه ﺑﻪ ﺳﯿﺴﺘﺪ ﺘﺴﻫ ﻢ.

٢٬٦٬٢٬١٥ ﻣﺪﯾﺮﯾﺖ داﻧﻠﻮد

داﻧﻠﻮد ﻓﺎﯾﻞ، ﻗﺴﻤﺘ از ﭘﺮوﺗﮑﻞ ﺳﺎده HTTP اﺳﺖ ﮐﻪ ﻣﻌﻤﻮﻻ ﺗﻮﺳﻂ وب ﺳﺮور

ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر ﻣﺪﯾﺮﯾﺖ ﻣ ﺷﻮد. ﺑﺴﯿﺎری از ﺳﺎﯾﺖﻫﺎ و ﻧﺮماﻓﺰارﻫﺎی ﺣﺮﻓﻪای،

ﻣﺪﯾﺮﯾﺖ داﻧﻠﻮد ﻓﺎﯾﻠﻬﺎ را ﻧﯿﺰ ﺧﻮد ﺑﺮ ﻋﻬﺪه ﻣ ﮔﯿﺮﻧﺪ. اﯾﻦ ﮐﺎر اﻣ ﺎن ﻣﺤﺪودﯾﺖ ﺳﺮﻋﺖ

ﮔﺬاﺷﺘﻦ، آﻣﺎر ﮔﺮﻓﺘﻦ، ﻣﺤﺪودﯾﺖ ﮐﻨﺘﺮل دﺳﺘﺮﺳ و ﻏﯿﺮه را ﺑﺮای ﭼﻬﺎرﭼﻮب ﻓﺮاﻫﻢ

ﻣ آورد، در ﺻﻮرﺗ ﮐﻪ اﮔﺮ ﺗﻮﺳﻂ ﺳﺮور وب اﻧﺠﺎم ﺷﻮد ﻧﺮماﻓﺰار دﺳﺘﺮﺳ ﺧﺎﺻ ﺑﻪ

ﮐﻨﺘﺮل آن ﻧﺨﻮاﻫﺪ داﺷﺖ.

ﺑﺎﯾﺪ ﺗﻮﺟﻪ داﺷﺖ ﮐﻪ داﻧﻠﻮد ﻓﺎﯾﻞ، ﺑﻪ ﻣﻌﻨ داﻧﻠﻮد ﯾ ﻓﺎﯾﻞ ﺗﻮﺳﻂ ﮐﺎرﺑﺮ ﺑﺮ روی

دﯾﺴ وی ﻧﯿﺴﺖ. ﻫﺮﮔﻮﻧﻪ ﻓﺎﯾﻠ ﮐﻪ ﺑﻪ ﺻﻮرت اﯾﺴﺘﺎ (Static) ﺑﻪ ﮐﺎرﺑﺮ اراﺋﻪ ﻣ ﺷﻮد

– ﯾﻌﻨ ﺑﺮای ﺗﻮﻟﯿﺪ ﻣﺤﺘﻮای آن ﺑﺮﻧﺎﻣﻪای ﺑﺮ روی ﺳﺮور اﺟﺮا ﻧﻤ ﺷﻮد – از ﺟﻤﻠﻪ

ﻓﺎﯾﻠﻬﺎی ﮐﺶ ﺷﺪه، ﻓﺎﯾﻠﻬﺎی ﺗﺼﻮﯾﺮ، اﺳ ﺮﯾﭙﺖ، ﻗﺎﻟﺐﺑﻨﺪی و ... ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮ ﺑﻪ

ﺻﻮرت ﺧﻮدﮐﺎر داﻧﻠﻮد ﻣ ﺷﻮﻧﺪ. ﻣﺪﯾﺮﯾﺖ داﻧﻠﻮد ﺗﻤﺎﻣ اﯾﻦ ﻓﺎﯾﻠﻬﺎ را ﻧﯿﺰ در ﺑﺮ ﻣ -

ﮔﯿﺮد.

در ﺳﯿﺴﺘﻢﻫﺎﯾﯽ ﮐﻪ زﯾﺮﺳﺎﺧﺖ ﻣﺪﯾﺮﯾﺖ داﻧﻠﻮد وﺟﻮد ﻧﺪارد (ﺑﻪ دﻟﯿﻞ ﻋﺪم آﺷﻨﺎﯾﯽ

ﺎﺑ HTTP و ﻋﺪم ﺗﻮاﻧﺎﯾﯽ در اراﺋﻪ زﯾﺮﺳﺎﺧﺖ اﺳﺘﺎﻧﺪارد)، ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن از راهﻫﺎی

ﻧﺎﻣﻄﻤﺌﻦ ﺑﺮای ﻧﯿﻞ ﺑﻪ اﻫﺪاف ﺧﻮد ﺑﻬﺮه ﻣ ﮔﯿﺮﻧﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل در ﺳﯿﺴﺘﻤ ﮐﻪ

ﻫﺮﮐﺪام از ﮐﺎرﺑﺮان آن ﯾ ﺗﺼﻮﯾﺮ دارﻧﺪ، اﮔﺮ ﻣﺪﯾﺮﯾﺖ ﻓﺎﯾﻞ – و ﻟﺬا ﻣﺪﯾﺮﯾﺖ ﮐﻨﺘﺮل

دﺳﺘﺮﺳ ﺑﺮ روی ﻓﺎﯾﻠﻬﺎ – ﻣﻮﺟﻮد ﻧﺒﺎﺷﺪ، ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن ﺑﺮای ﻣﺨﻔ ﻧﮕﺎه داﺷﺘﻦ

ﺗﺼﻮﯾﺮ ﯾ ﻓﺮد از دﯾ ﺮ ﮐﺎرﺑﺮان، آﻧﺮا درون ﭘﻮﺷﻪای ﻧﺎﺷﻨﺎس ﺑﺎ ﻓﺎﯾﻠ ﻧﺎﺷﻨﺎس ﻗﺮار

86

ﻣ دﻫﺪ. اﯾﻨﮑﺎر از دﯾﺪ اﺻﻮل اﻣﻨﯿﺘ ﺑﺴﯿﺎر ﻧﺎﺻﺤﯿﺢ اﺳﺖ و اﻣﻨﯿﺖ ﺑﻪ واﺳﻄﻪ ﻣﺨﻔ -

ﮐﺎری (Security by Obscurity) داﻧﺴﺘﻪ ﻣ ﺷﻮد.

٢٬٦٬٢٬١٦ ﻨﺘﺒﻣ ﻌﺳﻮﺗ ﺖﺴ ﺮﺑ

در ﺳﺎﻟﻬﺎی اﺧﯿﺮ، دﻧﯿﺎی ﻣﻬﻨﺪﺳ ﻧﺮماﻓﺰار دﭼﺎر ﺗﺤﻮل اﺳﺎﺳ ﺷﺪه اﺳﺖ. ﺑﺎ

ﻣﻌﺮﻓ روﺷﻬﺎی ﭼﺎﺑ (Agile)، ﺷﯿﻮه ﺗﻮﻟﯿﺪ ﻧﺮماﻓﺰارﻫﺎی ﮐﻮﭼ و ﻏﻮل آﺳﺎ ﺗﻐﯿﯿﺮ

ﺑﻨﯿﺎدﯾﻦ ﯾﺎﻓﺘﻪ اﺳﺖ. در اﯾﻦ راﺳﺘﺎ، ﭼﻬﺎرﭼﻮبﻫﺎ و ﻣﻂﯿﺤﻫﺎی ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار ﻧﯿﺰ

ﺧﻮد را ﺑﺎ اﯾﻦ روشﻫﺎی ﺟﺪﯾﺪ وﻓﻖ دادهاﻧﺪ.

ﯾ از اﯾﻦ روشﻫﺎ، ﺗﻮﺳﻌﻪ ﻣﺒﺘﻨ ﺑﺮ ﺗﺴﺖ (Test Driven Development)

اﺳﺖ. در اﯾﻦ روش، ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ اﺑﺘﺪا ﺑﻪ ﻧﻮﺷﺘﻦ ﮐﺪ ﺗﺴﺖ ﻗﺴﻤﺖ ﮐﻮﭼ از ﺑﺮﻧﺎﻣﻪ

(Unit Test) ﻣ ﭘﺮدازد. ﺳﭙﺲ ﺗﺴﺖ را اﺟﺮا ﻣ ﻄﻣ ﺗ ﻨﮐﻤﺌﻦ ﺷﻮد ﮐﻪ ﺗﺴﺖ، ﻏﻠﻂ

را ﭘﯿﺪا ﻣ ﮐﻨﺪ. در اﯾﻦ ﻣﺮﺣﻠﻪ ﺗﺴﺖ ﻧﺘﯿﺠﻪ ﻗﺮﻣﺰ ﺑﺮ ﻣ ﮔﺮداﻧﺪ.

ﻪﻣﺎ ﺮﺑ ﺲﭙﺳﻪﻣﺎﻧ ﺑ ﺲﯾﻮﻧای ﮐﻪ ﺗﺴﺖ ﻣﺮﺑﻮﻃﻪ را ﭘﺎس ﮐﻨﺪ، ﻣ ﻧﻮﯾﺴﺪ. ﭘﺲ از آن

دوﺑﺎره ﺗﺴﺖ را اﺟﺮا ﻣ ﮐﻨﺪ ﺗﺎ ﻏﻠﻂ اﺣﺘﻤﺎﻟ ﺑﺮﻧﺎﻣﻪ را ﭘﯿﺪا ﮐﺮده، ﯾﺎ ﺗﺴﺖ ﺳﺒﺰ ﺷﻮد و

آن ﺑﺨﺶ از ﺑﺮﻧﺎﻣﻪ درﺳﺖ ﮐﺎر ﮐﻨﺪ. ﺑﻪ اﯾﻦ ﻓﺮآﯾﻨﺪ، ﻗﺮﻣﺰ - ﺰ ﺒ ﺳ -ﺗﻐﯿﯿﺮات ( Red-Green

Refactor) ﻣ ﺪﻨﯾﻮﮔ.

اﯾﻦ روش ﺑﺎﻋﺚ ﻣ ﺷﻮد ﺑﺮﻧﺎﻣﻪ ﺑﺴﯿﺎر ﭼﺎﺑ و ﻗﺎﺑﻞ ﺗﻐﯿﯿﺮ ﺑﺎﺷﺪ و ﭘﺲ از ﻋﻤﻠﯿﺎﺗ

ﺷﺪن آن، ﺑﺎ ﺗﻐﯿﯿﺮ ﻫﺮ ﻗﺴﻤﺖ آن ﺑﻪ ﺳﺎدﮔ ﺑﺘﻮان ﺑﺎ اﺟﺮای ﺗﻤﺎﻣ ﺗﺴﺖﻫﺎ از ﺻﺤﺖ

ﻧﺴﺒﯽ ﮐﻠ ﺑﺮﻧﺎﻣﻪ ﻣﻄﻤﺌﻦ ﺷﺪ.

87

ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﻮﺳﻌﻪ وب در ﺣﺎل ﺣﺎﺿﺮ اﮐﺜﺮا دارای زﯾﺮﺳﺎﺧﺖ TDD ﻫﺴﺘﻨﺪ و

ﺑﺨﺸ را ﺑﺮای ﻧﻮﺷﺘﻦ ﺗﺴﺖﻫﺎ و اﺟﺮای ﺧﻮدﮐﺎر آﻧﻬﺎ در ﻗﺎﻟﺐ ﭼﻬﺎرﭼﻮب، در ﻧﻈﺮ

ﻪﺘﻓﺮﮔاﻧﺪ.

ﺖﺴﺗﻫﺎ ﻣﻌﻤﻮﻻ وﺿﻌﯿﺖ ﺳﯿﺴﺘﻢ را دﮔﺮﮔﻮن ﻣ ﮐﻨﻨﺪ و اﺟﺮای ﮐﻠ آﻧﻬﺎ ﻧﯿﺰ

ﻓﺮآﯾﻨﺪی زﻣﺎﻧﮕﯿﺮ ﺧﻮاﻫﺪ ﺑﻮد، ﻟﺬا ﻓﻘﻂ ﺑﺎﯾﺪ در ﻣﺤﯿﻂ ﺗﻮﺳﻌﻪ ﻗﺎﺑﻞ اﺟﺮا ﺑﺎﺷﻨﺪ. از

آﻧﺠﺎﯾﯽ ﮐﻪ ﺗﺴﺖ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﺑﺮ روی ﺳﺮور ﻗﺮار ﻣ ﮔﯿﺮد، اﻣ ﺎن اﺟﺮای ﺗﺴﺖﺮﺑ ﺎﻫ

روی ﺳﺮور ﺗﻮﺳﻂ ﭼﻬﺎرﭼﻮب ﺑﺎﯾﺪ ﮐﻨﺘﺮل و ﻣﺤﺪود ﺷﻮد.

اﮔﺮ ﮐﺎرﺑﺮی اﺷﺘﺒﺎﻫﺎ، ﯾﺎ ﻧﻔﻮذﮔﺮی از ﻗﺼﺪ، ﺗﺴﺘﻬﺎ را اﺟﺮا ﻧﻤﺎﯾﺪ، ﻧﻪ ﺗﻨﻬﺎ وﺿﻌﯿﺖ

ﺳﺮور دﭼﺎر ﻣﺸ ﻞ ﻣ ﺷﻮد ﺑﻠ ﻪ ﺑﻪ دﻟﯿﻞ زﻣﺎﻧﮕﯿﺮ ﺑﻮدن آﻧﻬﺎ ﻣﻤ ﻦ اﺳﺖ ﺳﯿﺴﺘﻢ از

دﺳﺘﺮس ﺧﺎرج ﺷﻮد.

88

ﺷﻞ ٥٠ ﭼﺮﺧﻪ ﺗﻮﺳﻌﻪ ﻣﺒﺘﻨ ﺑﺮ ﺗﺴﺖ

٢٬۶٬٣ ﭼﻬﺎرﭼﻮبﻫﺎی ﺗﺠﺎری ﭘﺮﮐﺎرﺑﺮد

در اﯾﻦ ﺑﺨﺶ ﺑﻪ ﻣﻌﺮﻓ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻄﺮح و ﭘﺮ اﺳﺘﻔﺎده ﺗﻮﺳﻌﻪ وب ﻣ ﭘﺮدازﯾﻢ.

ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻌﺮﻓ ﺷﺪه ﺑﻪ ﺗﻔﮑﯿ زﺑﺎن ﺑﺮﻧﺎﻣﻪﺳﺎزی ﺗﻔﺼﯿﻞ ﻣ ﺷﻮﻧﺪ:

٢٬۶٬٣٬١ ASP.NET زﺑﺎن ASP.NET ﮐﻪ در واﻗ ﻣﺘﺸ ﻞ از ﻗﻄﻌﺎﺗ ﮐﺪ ﺑﻪ ﻫﻤﺮاه ﯾ از زﺑﺎنﻫﺎی

C#.NET ﯾﺎ VB.NET اﺳﺖ، ﺗﻮﺳﻂ ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ﭘﺸﺘﯿﺒﺎﻧ ﺗﺠﺎری ﻣ ﺷﻮد و

ﮐﺎرﮐﺮدن ﺑﺎ آن ﺑﺴﯿﺎر ﺳﺎدهاﺳﺖ. ﺑﻪ دﻟﯿﻞ ﺳﺎدﮔ آن، ﺑﺴﯿﺎری از ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن

ﻣﺒﺘﺪی اﻗﺪام ﺑﻪ ﺗﻬﯿﻪ ﻧﺮماﻓﺰارﻫﺎی ﻣﺒﺘﻨ ﺑﺮ وب ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﺳ ﻮ ﻣ ﮐﻨﻨﺪ ﮐﻪ

89

ﺗﻮﺳﻂ ﻣﺸﺘﺮی ﮐﯿﻔﯿﺖ آن ﻗﺎﺑﻞ ﺳﻨﺠﯿﺪن ﻧﯿﺴﺖ، و اﯾﻦ ﻣﻬﻢ ﻣﻨﺠﺮ ﺑﻪ ﻧﺎاﻣﻦ و ﺿﻌﯿﻒ

ﺑﻮدن اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎی ﺗﻮﻟﯿﺪی ﺑﺎ اﯾﻦ زﯾﺮﺳﺎﺧﺖ ﺷﺪه اﺳﺖ.

در ﺻﻮرﺗ ﮐﻪ اﺳﺘﻔﺎده ﺗﺨﺼﺼ از زﯾﺮﺳﺎﺧﺖ ﺷﻮد، ﺑﺴﺘﺮ اﻣ ﺎن اﯾﺠﺎد ﻧﺮماﻓﺰار

اﻣﻦ و ﻋﺎﻟ را ﻧﯿﺰ دارد، وﻟ ﭼﻮن ﻫﺰﯾﻨﻪﻫﺎی ﮔﺰاﻓ ﺑﺮای ﻧﺴﺨﻪﻫﺎی ﺗﺠﺎری ﺑﺴﺘﺮ

ﺑﺎﯾﺪ ﭘﺮداﺧﺖ، اﻓﺮادی ﮐﻪ ﺗﺴﻠﻂ ﮐﺎﻓ ﺑﻪ ﺗﮑﻨﻮﻟﻮژی دارﻧﺪ ﺟﺎﯾ ﺰﯾﻦﻫﺎی ﻣﺘﻦ ﺑﺎز را

اﻧﺘﺨﺎب ﻣ ﺪﻨﻨﮐ.

٢٬۶٬٣٬١٬١ Microsoft .NET Framework ﻣﻌﻤﻮلﺗﺮﯾﻦ ﭼﻬﺎرﭼﻮﺑﯽ ﮐﻪ ٩٩% ﻢﺘﺴﯿﺳﻫﺎی ASPX از آن ﺑﻬﺮه ﻣ ﺪﻧﺮﯿﮔ،

ﭼﻬﺎرﭼﻮب ﻫﻤﺮاه آن ﯾﻌﻨ دات ﻧﺖ اﺳﺖ. اﯾﻦ ﭼﻬﺎرﭼﻮب در ﺳﺎل ٢٠٠٠ ﻂﺳﻮﺗ

ﻣﺎﯾ ﺮوﺳﺎﻓﺖ اراﺋﻪ ﺷﺪه اﺳﺖ و در ﺣﺎل ﺣﺎﺿﺮ ﻧﺴﺨﻪ ۴ آن ﺑﻬﺮه ﺑﺮداری ﻣ ﺷﻮد.

دات ﻧﺖ ﭼﻬﺎرﭼﻮب ﺑﺴﯿﺎر وﺳﯿﻊ و ﻗﺪرﺗﻤﻨﺪﯾﺴﺖ ﮐﻪ ﺗﮑﻨﻮﻟﻮژیﻫﺎ و زﯾﺮﺳﺎﺧﺖ-

ﻫﺎی ﻗﺪرﺗﻤﻨﺪی ﻧﯿﺰ دارد، اﻣﺎ ﺑﻪ دﻟﯿﻞ اﯾﻨﮑﻪ ﺣﺠﻢ ﺑﺴﯿﺎر ﺑﺎﻻﯾﯽ دارد و ﺗﻨﻬﺎ ﺑﺮ روی

وﯾﻨﺪوز ﻗﺎﺑﻞ اﺟﺮاﺳﺖ (و وﯾﻨﺪوز ﯾ ﻣﺤﺼﻮل ﮔﺮاﻧﻘﯿﻤﺖ اﺳﺖ) ﻣﺸﺘﺮی زﯾﺎدی ﻧﺪارد.

ﻫﻤﭽﻨﯿﻦ دات ﻧﺖ و ﺗﮑﻨﻮﻟﻮژیﻫﺎی ﻣﺮﺑﻮط ﺑﻪ آن، واﺑﺴﺘﮕ ﺷﺪﯾﺪی ﺑﻪ ﺳﯿﺴﺘﻢ

ﻋﺎﻣﻞ وﯾﻨﺪوز دارﻧﺪ و ﺑﺎ اﯾﻨﮑﻪ ﻧﺴﺨﻪ ﻣﺘﻦ ﺑﺎز آن ﻣﻨﺘﺸﺮ ﺷﺪه اﺳﺖ، اﮐﺜﺮ اﻣ ﺎﻧﺎت آن ﺗﻨﻬﺎ

ﺑﺮ روی وﯾﻨﺪوز ﮐﺎر ﺧﻮاﻫﺪ ﮐﺮد. ﻧﺴﺨﻪﻫﺎی ٣ ﺑﻪ ﺑﻌﺪ اﯾﻦ ﭼﻬﺎرﭼﻮب از اﻟ ﻮی MVC

ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺪﻨﻨﮐ.

90

ﺷﻞ ٥١ ﻧﻤﺎﯾﻪ Microsoft .NET

٢٬۶٬٣٬١٬٢ DotNetNuke ﺑﺮﮔﺮﻓﺘﻪ ﺷﺪه از ﻧﺮماﻓﺰار PHPNuke، ﺑﻪ دﻟﯿﻞ ﻋﺪم وﺟﻮد ﭼﻬﺎرﭼﻮﺑﯽ ﺑﺮ روی

ASPX اﯾﻦ ﻧﺮماﻓﺰار ﮐﻢ ﮐﻢ ﺑﻪ ﯾ ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻌﻪ ﺗﺒﺪﯾﻞ ﺷﺪ.

٢٬۶٬٣٬٢ ++C زﺑﺎن ﺳ ﭘﻼس ﭘﻼس ﺑﺮ روی وﺑﻬﺎی اﻣﺮوزی ﺗﻘﺮﯾﺒﺎ ﮐﺎرﺑﺮدی ﻧﺪارد. اﮐﺜﺮ ﮐﺎرﺑﺮد

ﺑﺎﻗﯿﻤﺎﻧﺪه آن ﻣﺮﺑﻮط ﺑﻪ وب ﺳﺎﯾﺖﻫﺎﯾﯿﺴﺖ ﮐﻪ ﺑﺮ روی ﺗﺠﻬﯿﺰات ﺳﺨﺖ اﻓﺰاری ﻧﺼﺐ

ﻣ ﺷﻮد، اﻣﺮوزه اﮐﺜﺮ ﺗﺠﻬﯿﺰات ﺳﺨﺖ اﻓﺰاری ﭘﻨﻞ ﻣﺪﯾﺮﯾﺖ و ﮐﻨﺴﻮل ﺧﻮد را از ﻃﺮﯾﻖ

وب در اﺧﺘﯿﺎر ﮐﺎرﺑﺮ ﻗﺮار ﻣ دﻫﺪ و از آﻧﺠﺎﯾﯽ ﮐﻪ ﺗﮑﻨﻮﻟﻮژی ﺳﺨﺖ اﻓﺰاری آﻧﻬﺎ ﺳﺎده

اﺳﺖ، ﺗﻨﻬﺎ زﺑﺎن ﺳ را ﺑﻪ ﺳﺎدﮔ ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﻨﺪ.

٢٬۶٬٣٬٢٬١ CppCMS ﯾ ﭼﻬﺎرﭼﻮب ﺳﺎده ﺑﺮای ﺳﯿﺴﺘﻢﻫﺎی ﻣﺪﯾﺮﯾﺖ ﻣﺤﺘﻮا ﺑﺎ اﺳﺘﻔﺎده از زﺑﺎن ﺳ

ﭘﻼس ﭘﻼس. اﯾﻦ ﭼﻬﺎرﭼﻮب ﺑﻪ ﻧﺴﺒﺖ ﺳﺎده اﺳﺖ و اﻣ ﺎﻧﺎت اﻣﻨﯿﺘ ﺧﻮﺑﯽ ﻧﯿﺰ

دارد.

91

٢٬۶٬٣٬٢٬٢ ﭼﻬﺎرﭼﻮب ﺑﺴﯿﺎر ﻣﻌﺮوف و ﻗﺪرﺗﻤﻨﺪ Wt ﮐﻪ وﯾﺘ ﺧﻮاﻧﺪه ﻣ ﺷﻮد، ﯾ

ﻣﺤﺼﻮل اﯾﺪه ﮔﺮﻓﺘﻪ از ﭼﻬﺎرﭼﻮب ﻏﻮل آﺳﺎی Qt اﺳﺖ. اﯾﻦ ﭼﻬﺎرﭼﻮب

Component Based MVC ﻃﺮاﺣ ﺷﺪه وﻟ از MVC ﻧﯿﺰ ﭘﺸﺘﯿﺒﺎﻧ ﮐﺎﻣﻞ

ﻣ ﺪﻨﮐ.

ﻪﺘﮑﻧ ﻦﯾﺮ ﺒﻟﺎﺟای ﮐﻪ در وﯾﺘ وﺟﻮد دارد، آﻧﺴﺖ ﮐﻪ در ﺻﻮرت ﭘﺸﺘﯿﺒﺎﻧ

ﻣﺸﺘﺮی، ﺳﺎﯾﺖ را ﺑﻪ ﺻﻮرت Ajaxاراﺋﻪ ﻣ دﻫﺪ و در ﻏﯿﺮ اﯾﻨﺼﻮرت ﺑﻪ HTML

ﺳﺎده ﺗﺒﺪﯾﻞ ﻣ ﺷﻮد. ﺑﻪ دﻟﯿﻞ اﯾﻨﮑﻪ اﯾﻦ ﭼﻬﺎرﭼﻮب از Component ﺑﻬﺮه ﻣ -

ﮔﯿﺮد، اﯾﻦ اﻣ ﺎﻧﺎت را ﺑﻪ ﺳﺎدﮔ و ﺑﻪ ﻗﺪرت اﻧﺠﺎم ﻣ دﻫﺪ.

ﭘﺸﺘﯿﺒﺎﻧ از ORM، اﻣﻨﯿﺖ، ﭼﻨﺪ زﺑﺎﻧ و ﻋﺪم ﭘﺸﺘﯿﺒﺎﻧ از ﮐﺶ و ﻗﺎﻟﺐ ﺑﻨﺪی،

وﯾﮋﮔ ﻫﺎی اﺻﻠ اﯾﻦ ﭼﻬﺎرﭼﻮب ﻫﺴﺘﻨﺪ.

٢٬۶٬٣٬٣ ﺟﺎوا

زﺑﺎن ﺟﺎوا ﺑﻪ دﻟﯿﻞ ﻗﺪﯾﻤ ﺑﻮدن آن، اﺟﺘﻤﺎع ﺑﺰرﮔ از ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن دارد ﮐﻪ

ﻫﺮﭼﻨﺪ اﻣﺮوزه زﺑﺎنﻫﺎی ﺑﺴﯿﺎر ﺑﻬﺘﺮی وﺟﻮد دارﻧﺪ، ﺑﻪ ﺷﺪت ﺑﻪ آن وﻓﺎدار ﻫﺴﺘﻨﺪ.

ﻗﻮیﺗﺮﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎی اوﻟﯿﻪ وب ﻧﯿﺰ ﺑﺮ روی ﻫﻤﯿﻦ زﺑﺎن ﺷ ﻞ ﮔﺮﻓﺘﻪ اﺳﺖ.

٢٬۶٬٣٬٣٬١ Spring ﻣﻌﺮوفﺗﺮﯾﻦ ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻌﻪ وب در ﺟﺎوا، Spring ﺑﻪ ﻫﻤﺮاه ORM

ﻗﺪرﺗﻤﻨﺪ آن ﯾﻌﻨ Hibernate، در ﺑﺴﯿﺎری از ﺳﯿﺴﺘﻢﻫﺎ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ.

اﺳﭙﺮﯾﻨﮓ اﻣ ﺎﻧﺎت ﺑﺴﯿﺎری دارد و اﻣﺮوزه اﻓﺰوﻧﻪﻫﺎ و ﻧﺴﺨﻪﻫﺎی ﺑﯿﺸﻤﺎری از آن

ﻧﯿﺰ ﻣﻮﺟﻮد ﻫﺴﺘﻨﺪ. ﻫﻤﭽﻨﯿﻦ ﯾ ﭼﻬﺎرﭼﻮب اﻣﻨﯿﺘ ﮐﺎﻣﻞ ﻧﯿﺰ درون آن ﮔﻨﺠﺎﻧﺪه

ﺷﺪه اﺳﺖ.

92

ﺷﻞ ٥٢ ﻧﻤﺎﯾﻪ اﺳﭙﺮﯾﻨﮓ

ﺷﻞ ٥٣ ﻧﻤﺎﯾﻪ ORM اﺳﭙﺮﯾﻨﮓ، Hibernate

٢٬۶٬٣٬٣٬٢ Apache Struts ﭼﻬﺎرﭼﻮب ﻗﺪرﺗﻤﻨﺪ، ﺑﺎﻟ و ﮐﺎﻣﻞ ﮐﻪ ﺗﻮﺳﻂ آﭘﺎﭼ ﻋﺮﺿﻪ ﺷﺪه اﺳﺖ. اﯾﻦ

ﭼﻬﺎرﭼﻮب اﻣ ﺎﻧﺎت ﮐﺎﻣﻠ از ﺟﻤﻠﻪ ﻫﺮ دو ﻧﻮع MVC و اﻣ ﺎﻧﺎت اوﻟﯿﻪ اﻣﻨﯿﺘ

دارد.

٢٬۶٬٣٬٣٬٣ از ﻣﺒﺘﮑﺮﯾﻦ Component MVC، وﯾ ﺖ ﭼﻬﺎرﭼﻮﺑﯿﺴﺖ ﮐﻪ ﻫﻨﻮز در ﭘﺮوژه-

ﻫﺎی ﺗﺠﺎری زﯾﺎدی اﺳﺘﻔﺎده ﻧﻤ ﺷﻮد وﻟ ﭘﺘﺎﻧﺴﯿﻞ ﺧﻮﺑﯽ دارد. اﻣ ﺎﻧﺎت اﻣﻨﯿﺘ و

دﯾ ﺮ وﯾﮋﮔ ﻫﺎی ﯾ ﭼﻬﺎرﭼﻮب ﻧﯿﺰ در اﯾﻦ ﭼﻬﺎرﭼﻮب ﮔﻨﺠﺎﻧﺪه ﺷﺪه اﺳﺖ.

٢٬۶٬٣٬٣٬۴ ﭼﻬﺎرﭼﻮﺑﯽ ﮐﻪ ﺑﺴﯿﺎری از ﻧﺮماﻓﺰارﻫﺎی ﮔﻮﮔﻞ ﺗﻮﺳﻂ آن ﻃﺮاﺣ ﺷﺪهاﻧﺪ.

وﯾﮋﮔ اﺻﻠ اﯾﻦ ﭼﻬﺎرﭼﻮب آﻧﺴﺖ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻫﺎی ﺳﺎﺧﺘﻪ ﺷﺪه ﺗﻮﺳﻂ آن از ﻧﻈﺮ

ﻇﺎﻫﺮی ﺑﺎ HTML ﺳﺎده ﺗﻔﺎوﺗ ﻧﺪارﻧﺪ و از ﻇﺎﻫﺮﻫﺎی ﻣﺘﻔﺎوت و دﺷﻮار اﺳﺘﻔﺎده

93

ﻧﻤ ﮐﻨﻨﺪ. اﯾﻦ ﻣﻬﻢ ﺑﺎﻋﺚ ﺷﺪه ﺗﺎ ﮐﺎرﺑﺮ اﯾﻦ ﭼﻬﺎرﭼﻮب در ﻋﯿﻦ ﺳﺎدﮔ اﻣ ﺎﻧﺎت

ﺧﻮﺑﯽ داﺷﺘﻪ ﺑﺎﺷﺪ. از ﺳﯿﺴﺘﻢﻫﺎﯾﯽ ﮐﻪ از اﯾﻦ ﭼﻬﺎرﭼﻮب اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ،

Gmail.com اﺳﺖ.

٢٬۶٬٣٬۴ Perl ﻫﻤﺎﻧﻄﻮری ﮐﻪ ﻗﺒﻼ ﺑﺤﺚ ﺷﺪ، زﺑﺎن ﭘﺮل از زﺑﺎنﻫﺎی ﺑﺴﯿﺎر ﻗﺪﯾﻤ ﯾﻮﻧﯿ ﺴ اﺳﺖ

ﮐﻪ ﺳﺎﯾﺖﻫﺎی ﺑﺴﯿﺎری را ﺑﺎ اﺳﺘﻔﺎده از آن ﻣ ﻧﻮﺷﺘﻪاﻧﺪ. ﭘﺮل دارای ﻣﺎژولﻫﺎی

ﻣﺘﻌﺪدی اﺳﺖ ﮐﻪ ﻫﺮﮐﺪام ﺑﺨﺸ از وﻇﺎﯾﻒ ﯾ ﭼﻬﺎرﭼﻮب وب را ﺑﺮ ﻋﻬﺪه ﻣ ﮔﯿﺮﻧﺪ.

ﭼﻬﺎرﭼﻮبﻫﺎی زﯾﺮ ﻧﯿﺰ ﺑﺮای ﭘﺮل وﺟﻮد دارﻧﺪ:

٢٬۶٬٣٬۴٬١ ﭼﻬﺎرﭼﻮب ﺑﺴﯿﺎر ﻗﺪرﺗﻤﻨﺪی دارای Bloating ﮐﻪ ﺗﻘﺮﯾﺒﺎ

ﺗﻤﺎﻣ اﻣ ﺎﻧﺎت ﯾ ﭼﻬﺎرﭼﻮب وب را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﻧﻤﺎﯾﺪ.

ﮐﺎﺗﺎﻟﯿﺴﺖ ﮐﺪ زﯾﺎدی ﻧﺪارد وﻟ از ﻣﺎژولﻫﺎی ﻣﺘﻌﺪدی ﺑﺮای

ﺷﻞ ٥٤ ﻧﻤﺎﯾﻪ ﮐﺎﺗﺎﻟﯿﺴﺖ ﺗﮑﻤﯿﻞ ﺧﻮد ﺑﻬﺮه ﮔﺮﻓﺘﻪ اﺳﺖ ﮐﻪ ﻫﻤ از ﻣﺎژولﻫﺎی

اﺳﺘﺎﻧﺪارد ﭘﺮل ﻫﺴﺘﻨﺪ.

٢٬۶٬٣٬۴٬٢ Dancer ﭼﻬﺎرﭼﻮﺑﯽ ﺳﺒ ﺗﺮ و ﻣﻌﻘﻮلﺗﺮ از ﮐﺎﺗﺎﻟﯿﺴﺖ، اﯾﻦ ﭼﻬﺎرﭼﻮب ﺟﻮاﻧﺘﺮ ﭘﺲ از

ﮔﻤﺮاه ﺷﺪن ﮐﺎرﺑﺮان Catalyst ﺑﻪ دﻟﯿﻞ Bloating آن اﯾﺠﺎد ﺷﺪ. اﯾﻦ ﭼﻬﺎرﭼﻮب

ﻧﯿﺰ ﺗﻤﺎم اﻣ ﺎﻧﺎت ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺘﺪاول را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﻧﻤﺎﯾﺪ.

94

٢٬۶٬٣٬۵ PHP از آﻧﺠﺎﯾﯽ ﮐﻪ اﯾﻦ زﺑﺎن ﺑﯿﺶ از ٧٠ درﺻﺪ ﺳﯿﺴﺘﻢﻫﺎی وﺑﯽ و اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎی

ﻣﺤﺒﻮب ﻣﺘﻦﺑﺎز را ﺗﺸ ﯿﻞ ﻣ دﻫﺪ، ﻣﻄﺎﻟﻌﻪ ﭼﻬﺎرﭼﻮبﻫﺎی آن ﮐﻤ وﺳﯿﻌﺘﺮ ﺻﻮرت

ﮔﺮﻓﺘﻪ اﺳﺖ.

٢٬۶٬٣٬۵٬١ CakePHP ﭼﻬﺎرﭼﻮﺑﯽ ﺑﺴﯿﺎر ﺳﺎده و ﻣﺤﺒﻮب ﺑﺮای

ﺗﻮﺳﻌﻪ ﺳﺮﯾﻊ و راﺣﺖ ﻧﺮماﻓﺰار ﺑﺎ PHP. ﻧﺎم اﯾﻦ

ﭼﻬﺎرﭼﻮب از ﺿﺮباﻟﻤﺜﻠ اﻧﮕﻠﯿﺴ ﺑﻪ ﻣﻌﻨﺎی ﺳﺎدﮔ

ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ. اﯾﻦ ﭼﻬﺎرﭼﻮب اﻣ ﺎﻧﺎت ﺧﻮب و ﺷﻞ ٥٥ ﻧﻤﺎﯾﻪ CakePHP ﮐﺎﻣﻠ دارد وﻟ ﺑﺮای ﮐﺎرﺑﺮدﻫﺎی ﺗﺨﺼﺼ ﻣﻨﺎﺳﺐ ﻧﯿﺴﺖ و ﺑﯿﺸﺘﺮ ﺑﺮای ﯾﺎدﮔﯿﺮی

و ﮐﺎرﺑﺮدﻫﺎی ﺳﺎده اﺳﺘﻔﺎده ﻣ ﺷﻮد.

٢٬۶٬٣٬۵٬٢ CodeIgniter از ﺟﻤﻠﻪ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺤﺒﻮب و ﻗﺪرﺗﻤﻨﺪ

PHP، اﯾﻦ ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻂ ﯾ ﺷﺮﮐﺖ ﺗﺠﺎری

آﻟﻤﺎﻧ ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ و ﮐﻤﺘﺮﯾﻦ ﻧﻘﺎط ﺿﻌﻒ

CodeIgniter اﻣﻨﯿﺘ را دارد. ﺑﺎ اﯾﻦ ﺣﺎل در ﺳﺎﻟﻬﺎی اﺧﯿﺮ ﭼﻨﺪﯾﻦ ﺑﺎر ﺷﻞ ٥٦ ﻧﻤﺎﯾﻪ

زﯾﺮﺳﺎﺧﺖﻫﺎی اﯾﻦ ﭼﻬﺎرﭼﻮب ﻣﻮرد ﻧﻔﻮذ ﻗﺮار ﮔﺮﻓﺘﻪاﻧﺪ، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل در ﺳﺎل

٢٠١٢ زﯾﺮﺳﺎﺧﺖ ﭼﻨﺪزﺑﺎﻧ اﯾﻦ ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻂ ﻧﮕﺎرﻧﺪه ﺳﻨﺪ ﻫ ﺷﺪه اﺳﺖ.

٢٬۶٬٣٬۵٬٣ از ﻗﻮﯾﺘﺮﯾﻦ و ﮐﺎﻣﻠﺘﺮﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎی PHP، ﺳﻤﻔﻮﻧ دارای ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎی

ﺑﺴﯿﺎری اﺳﺖ ﮐﻪ ﺗﺎ ﺣﺪ ﺧﻮﺑﯽ اﺳﺘﻘﻼل دارﻧﺪ و ﺑﻪ دﯾ ﺮ وﯾﮋﮔ ﻫﺎی ﭼﻬﺎرﭼﻮب

95

واﺑﺴﺘﻪ ﻧﯿﺴﺘﻨﺪ. ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎی اﯾﻦ ﭼﻬﺎرﭼﻮب ﺑﻪ ﺻﻮرت ﻣﺠﺰا در

ﻧﺮماﻓﺰارﻫﺎی ﺑﺴﯿﺎری ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﺮﻓﺘﻪاﻧﺪ.

ﺳﻤﻔﻮﻧ از ﻧﻈﺮ اﻣﻨﯿﺘ ﻗﺪرﺗﻤﻨﺪ اﺳﺖ وﻟ زﯾﺮﺳﺎﺧﺖ آن ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎﻧ

ﻧﻮﺷﺘﻪﺷﺪهاﺳﺖ ﮐﻪ ﺗﺴﻠﻂ ﮐﺎﻓ ﺑﻪ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار ﻧﺪاﺷﺘﻪاﻧﺪ، ﻟﺬا ﮔﺎﻫﺎ دﭼﺎر

ﻣﻌﻀﻼت اﻣﻨﯿﺘ ﻣ ﺷﻮد.

ﺷﻞ ٥٧ ﻧﻤﺎﯾﻪ ﺳﻤﻔﻮﻧ

٢٬۶٬٣٬۵٬۴ Yii ﭼﻬﺎرﭼﻮب ﻧﻮﭘﺎ و ﻧﺴﺒﺘﺎ ﺿﻌﯿﻒ PHP ﮐﻪ ﺗﻨﻬﺎ ﺑﻪ دﻟﯿﻞ زﯾﺒﺎﯾﯽ ﻇﺎﻫﺮی و

ﺳﺮﯾﻊ ﺑﻮدن ﻣﺤﺒﻮب ﺷﺪه اﺳﺖ. اﯾﻦ ﭼﻬﺎرﭼﻮب از ﻧﻈﺮ اﻣﻨﯿﺘ و ﻣﻬﻨﺪﺳ ﺿﻌﯿﻒ

ﻃﺮاﺣ ﺷﺪه اﺳﺖ.

٢٬۶٬٣٬۵٬۵ Zend Framework ﻏﻮل ﭼﻬﺎرﭼﻮبﻫﺎی PHP، زﻧﺪ ﺗﻮﺳﻂ ﺷﺮﮐﺖ اﺳﺮاﺋﯿﻠ ﻗﺪرﺗﻤﻨﺪ PHP ﮐﻪ

ﺑﺴﯿﺎری از زﯾﺮﺳﺎﺧﺖﻫﺎی PHP را ﻧﯿﺰ ﻃﺮاﺣ ﮐﺮدهاﺳﺖ، ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ.

ﺣﺠﻢ ﮐﺪ اﯾﻦ ﭼﻬﺎرﭼﻮب ﺑﯿﺶ از ۶٠ ﻣ ﺎﺑﺎﯾﺖ اﺳﺖ و ﻣﺎژولﻫﺎی آن اﺳﺘﻘﻼل

ﻧﺴﺒﯽ ﺧﻮﺑﯽ دارﻧﺪ.

از ﻧﻈﺮ اﻣﻨﯿﺘ و ﮐﺎراﯾﯽ ﮐﺎﻣﻞ ﻃﺮاﺣ ﺷﺪه اﺳﺖ و در ﺑﺴﯿﺎری از ﺳﺎﯾﺖﻫﺎ

اﺳﺘﻔﺎده ﻣ ﺷﻮد، اﻣﺎ ﺑﻪ دﻟﯿﻞ ﭘﯿﭽﯿﺪﮔ و ﺑﺰرﮔ زﯾﺎد آن، ﺑﺴﯿﺎری از ﺳﺎﯾﺘﻬﺎ و

ﻃﺮاﺣﺎن از اﺳﺘﻔﺎده از آن وﺣﺸﺖ دارﻧﺪ.

96

در ﺣﺎل ﺣﺎﺿﺮ ﻧﺴﺨﻪﻫﺎی ﺗﺠﺎری و ﺗﺨﺼﺼ PHP ﺗﻮﺳﻂ ﺷﺮﮐﺖ زﻧﺪ اراﺋﻪ

ﻣ ﺷﻮد.

ﺷﻞ ٥٨ ﻧﻤﺎﯾﻪ ﭼﻬﺎرﭼﻮب زﻧﺪ

٢٬۶٬٣٬۵٬۶ jFramework ﭼﻬﺎرﭼﻮﺑﯽ ﻗﺪرﺗﻤﻨﺪ و ﻧﺴﺒﺘﺎ ﺑﺎﻟ ﮐﻪ ﺑﺎ اﺻﻮل اﻣﻨﯿﺘ

ﺑﺴﯿﺎری ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ. ﻧﻘﻄﻪ ﺿﻌﻒ اﯾﻦ ﭼﻬﺎرﭼﻮب، ﻧﺪاﺷﺘﻦ ﺷﻞ ٥٩ ﻧﻤﺎﯾﻪ ﺟ ﺟﺎﻣﻌﻪ ﻣﺘﻦ ﺑﺎز ﺑﺰرگ اﺳﺖ ﮐﻪ ﺑﻪ دﻟﯿﻞ ﻧﺎم ﺧﺎص ﭼﻬﺎرﭼﻮب ﭘﯿﺶ

آﻣﺪه اﺳﺖ. ﻣﻌﻤﻮﻻ ﭼﻬﺎرﭼﻮبﻫﺎﯾﯽ ﮐﻪ ﺑﺮای زﺑﺎن ﺟﺎوا ﻧﻮﺷﺘﻪ ﻣ ﺷﻮﻧﺪ ﺑﺎ ﺣﺮف «ﺟ »

ﻧﺎﻣﯿﺪه ﻣ ﺷﻮﻧﺪ.

٢٬۶٬٣٬۶ Python از آﻧﺠﺎﯾﯽ ﮐﻪ ﭘﺎﯾﺘﻮن ﯾ زﺑﺎن ﻣﺨﺘﺺ وب ﻧﯿﺴﺖ، ﭼﻬﺎرﭼﻮبﻫﺎی وب آن

دﺷﻮار و ﭘﯿﭽﯿﺪهﺗﺮ ﻫﺴﺘﻨﺪ. ﭘﺎﯾﺘﻮن دارای ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺘﻌﺪد و ﻣﺤﺪودﯾﺴﺖ ﮐﻪ

ﺗﻨﻬﺎ دو ﻣﻮرد از آﻧﻬﺎ در ﺳﺎﯾﺘﻬﺎی زﯾﺎدی اﺳﺘﻔﺎده ﺷﺪه اﻧﺪ:

٢٬۶٬٣٬۶٬١ django ﭼﻬﺎرﭼﻮﺑﯽ ﮐﻪ ﭘﺎﯾﺘﻮن را ﺑﻪ ﻋﺮﺻﻪ وب وارد ﮐﺮد، دﯾﺠﺎﻧﮕﻮ از اﻣ ﺎﻧﺎت ﮐﺎﻣﻠ

ﺑﺮﺧﻮردار اﺳﺖ و ﺗﻄﺎﺑﻖ ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﺑﺎ اﻟ ﻮﻫﺎی ﭘﺎﯾﺘﻮن ﻧﯿﺰ دارد. اﯾﻦ ﭼﻬﺎرﭼﻮب

در ﺳﺎل ٢٠٠۵ ﻣﻌﺮﻓ ﺷﺪه و اﺑﺰار ﺟﺎﻧﺒﯽ و ﮐﺎﻣﻠ ﻧﯿﺰ آﻧﺮا ﻫﻤﺮاه ﻣ ﮐﻨﻨﺪ.

97

ﭼﻨﺪﯾﻦ ﮐﺘﺎب در راﺑﻄﻪ ﺑﺎ ﮐﺎرﮐﺮد ﺑﺎ دﯾﺠﺎﻧﮕﻮ ﻣﻨﺘﺸﺮ ﺷﺪه اﺳﺖ و ﭘﺎﯾﺘﻮن در وب

ﺑﺎ دﯾﺠﺎﻧﮕﻮ ﺑﻪ دﻧﯿﺎ ﻣﻌﺮﻓ ﮔﺮدﯾﺪ.

ﺷﻞ ٦٠ ﻧﻤﺎﯾﻪ دﯾﺠﺎﻧﮕﻮ

٢٬۶٬٣٬۶٬٢ Pyjamas ﭼﻬﺎرﭼﻮب ﻧﻮﭘﺎ و ﻧﯿﻤﻪ ﺑﺎﻟﻐ ﮐﻪ ﺗﺮﮐﯿﺒﯽ از ﺟﺎواﺳ ﺮﯾﭙﺖ و ﭘﺎﯾﺘﻮن را ﺑﺮای

ﮐﺎرﮐﺮد در وب ﻣﻌﺮﻓ ﻣ ﮐﻨﺪ. Pyjamas در واﻗ ﺗﺒﺪﯾﻞ Google Web Toolkit

ﺑﻪ زﺑﺎن ﭘﺎﯾﺘﻮن اﺳﺖ.

٢٬۶٬٣٬٧ Ruby روﺑﯽ ﭼﻨﺪﯾﻦ ﭼﻬﺎرﭼﻮب وب دارد، ﮐﻪ ﺗﻨﻬﺎ ﯾ از آﻧﻬﺎ ﻣﻌﺮوف و ﭘﺮ اﺳﺘﻔﺎده اﺳﺖ:

٢٬۶٬٣٬٧٬١ ورود روﺑﯽ ﺑﻪ ﻋﺮﺻﻪ وب و ﻣﺤﺒﻮب ﺷﺪن آن، ﺑﺎ ﭼﻬﺎرﭼﻮب ﻣﺒﺘﮑﺮ Ruby on Rails ﻣﯿﺴﺮ ﺷﺪ. اﯾﻦ ﭼﻬﺎرﭼﻮب از ﻣﻮﻟﺪ ﮐﺪﻫﺎی ﺑﺴﯿﺎری ﺑﻬﺮه ﻣ ﮔﯿﺮد و

ﺗﻮﺳﻌﻪ وبﻫﺎی ﺳﺎده ﺑﺎ آن ﺑﺴﯿﺎر راﺣﺖ و دلاﻧﮕﯿﺰ اﺳﺖ.

ﻣﻌﺮﻓ اﯾﻦ ﭼﻬﺎرﭼﻮب ﺑﺎﻋﺚ ﺷﺪ زﺑﺎن روﺑﯽ ﺑﺴﯿﺎر

ﻣﻌﺮوف و ﻣﺤﺒﻮب ﺷﻮد و ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎﻧ ﮐﻪ ﻟﺬت اﺳﺘﻔﺎده از

اﯾﻦ ﭼﻬﺎرﭼﻮب را ﺗﺠﺮﺑﻪ ﮐﺮدهاﻧﺪ، ﺑﻪ زﺑﺎن واﺑﺴﺘﻪ ﺷﺪهاﻧﺪ.

98

Rails در ﺑﺮﻧﺎﻣﻪﻫﺎی ﺑﺰرگ ﮐﺎرﮐﺮد ﺧﻮﺑﯽ ﻧﺪارد، ﺑﺴﯿﺎر ﮐﻨﺪ اﺳﺖ و ﺷﻞ ٦١ ﻪﯾﺎﻤﻧ RoR ﺳﺎﺧﺘﺎر آن ﺑﺮای ﺳﯿﺴﺘﻢﻫﺎی ﺳﺎزﻣﺎﻧ ﺳﺎﺧﺘﻪ ﻧﺸﺪه اﺳﺖ.

٢٬۶٬٣٬٨ دﯾﺮ زﺑﺎنﺎﻫ

ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﺘﻌﺪد دﯾ ﺮی وﺟﻮد دارﻧﺪ، ﮐﻪ ﻣﻌﻤﻮﻻ ﻫﺮﮐﺪام ﺑﺮای ﯾ از زﺑﺎن -

ﻫﺎی ﺑﺮﻧﺎﻣﻪﺳﺎزی ﻫﺴﺘﻨﺪ. ﺑﺴﯿﺎری از آﻧﻬﺎ ﻧﻮﭘﺎ ﻫﺴﺘﻨﺪ و ﺗﺤﺖ ﺗﺎﺛﯿﺮ Ruby on Rails

اﯾﺠﺎد ﺷﺪهاﻧﺪ. ﭼﻬﺎرﭼﻮب ﺑﺮای زﺑﺎن Groovy از اﯾﻦ دﺳﺘﻪ اﺳﺖ. ﺑﺮرﺳ

ﮐﺎراﯾﯽ و اﻣﻨﯿﺖ اﯾﻦ ﭼﻬﺎرﭼﻮبﻫﺎ در ﺣﻮزه اﯾﻦ ﺳﻨﺪ ﻧﯿﺴﺖ.

٢٬٧ اﻣﻨﯿﺖ ﻋﻤﻮﻣﯽ وب

ﻢﺘ ﯿﺳ ﺮﻫ ﻧﺮماﻓﺰاری – ﻢﺘﺴﯿﺳ ﺎﺻﻮﺼﺧﻫﺎی وﺑﯽ ﮐﻪ در دﺳﺘﺮﺳ ﻋﻤﻮم ﻫﺴﺘﻨﺪ – ﻣﺎﻧﻨﺪ ﯾ

ﺑﺎﻧﮏ اﺳﺖ. اﻃﻼﻋﺎت داﺧﻞ ﺳﯿﺴﺘﻢ، ﺑﺮای اﻓﺮاد ﺑﺴﯿﺎری ﻣﻬﻢ و ارزﺷﻤﻨﺪ اﺳﺖ و ﺑﺴﯿﺎری از آﻧﻬﺎ

ﺣﺎﺿﺮﻧﺪ ﻧﺴﺒﺖ ﺑﻪ ﺳﺮﻗﺖ آﻧﻬﺎ، و ﯾﺎ ﺗﺨﺮﯾﺐ ﺳﺎزﻣﺎن ﭘﺸﺖ ﺳﯿﺴﺘﻢ، اﻗﺪام ﻧﻤﺎﯾﻨﺪ.

ﺑﺎﯾﺪ ﺗﻮﺟﻪ داﺷﺖ ﮐﻪ اﮔﺮ ﯾ ﺑﺎﻧﮏ، در ﯾ ﺳﺎﺧﺘﻤﺎن ﺑﯽ در و ﭘﯿ ﺮ ﻣﺴﺘﻘﺮ ﺷﻮد، ﺑﻪ ﻃﻮری ﮐﻪ

ﭘﻨﺠﺮهﻫﺎی ﺑﺴﯿﺎر و ﺑﺪون ﮐﻨﺘﺮل، درﻫﺎی ﺑﺴﯿﺎر، راﻫﺮوﻫﺎی ﺗﻮدرﺗﻮ و ﺳﺎﺧﺘﺎر ﻧﺎﻣﻨﻈﻤ در آن

وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ، ﺑﺎ ﻫﺮ ﺗﻌﺪاد ﭘﺮﺳﻨﻞ ﻫﻢ ﻧﻤ ﺗﻮان اﻣﻨﯿﺖ آﻧﺮا ﺗﻀﻤﯿﻦ ﻧﻤﻮد.

ﭼﻬﺎرﭼﻮب ﯾ ﺑﺎﻧﮏ ﺑﺎﯾﺪ ﻃﺒﻖ اﺻﻮل، ﻣﻨﻈﻢ، ﺳﺎزﻣﺎن ﯾﺎﻓﺘﻪ و ﻣﺤ ﻢ ﺑﺎﺷﺪ ﺗﺎ ﭘﺲ از اﺳﺘﻘﺮار

ﮐﻨﺘﺮلﻫﺎی ﻧﻈﺎرﺗ ﺑﺘﻮان ﺑﻪ ﮐﻔﺎﯾﺖ آﻧﻬﺎ اﻃﻤﯿﻨﺎن ﻧﺴﺒﯽ ﺣﺎﺻﻞ ﻧﻤﻮد.

ﺑﻪ ﻃﻮر ﮐﻠ اﻣﻨﯿﺖ اﻃﻼﻋﺎت در ﻣﻨﻈﺮ دﯾﺠﯿﺘﺎل را ﻣ ﺗﻮان ﺑﻪ ﭼﻬﺎر دﺳﺘﻪ ﺗﻘﺴﯿﻢ ﮐﺮد:

99

٢٬٧٬١ اﻣﻨﯿﺖ ﺷﺒﻪ و ﺳﺨﺖ اﻓﺰار

در اﯾﻦ ﺳﻄ ، اﻣﻨﯿﺖ ﺑﻪ ﺻﻮرت ﻗﻮاﻧﯿﻦ و ﭘﺮوﺗﮑﻞﻫﺎی ﺧﺎﺻ در ﺗﻌﺪادی ﺳﺨﺖ اﻓﺰار

ﮔﻨﺠﺎﻧﯿﺪه ﺷﺪه اﺳﺖ. اﯾﻦ ﭘﺮوﺗﮑﻞﻫﺎ ﺗﻮﺳﻂ ﻫﻤ ﺎن ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﻫﺴﺘﻨﺪ و ﻣﻌﻀﻼت و

ﻧﻘﺎط ﺿﻌﻒ آﻧﻬﺎ ﻧﯿﺰ ﺗﺎ ﺣﺪود ﺧﻮﺑﯽ ﻣﺸﺨﺺ و ﻣﻌﻠﻮم اﺳﺖ.

ﺗﺎﻣﯿﻦ اﻣﻨﯿﺖ اﯾﻦ ﺳﻄ ، ﺑﻪ ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ ﺷﺒ ﻪ اﺣﺘﯿﺎج دارد ﮐﻪ در ﻣﻘﺎﺑﻞ

ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار، ﺗﺨﺼﺼ ﺳﺎدهﺗﺮ و اﻟ ﻮدار ﺗﺮ داﻧﺴﺘﻪ ﻣ ﺷﻮد.

ﺷﻞ ٦٢ ﻧﻤﻮﻧﻪای از ﯾ ﻣﻌﻤﺎری اﻣﻨﯿﺖ ﺷﺒﻪ

100

٢٬٧٬٢ اﻣﻨﯿﺖ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ

ﺳﻄ ﺑﻌﺪی ﯾﻌﻨ اﻣﻨﯿﺖ ﺳﯿﺴﺘﻢﻋﺎﻣﻞ، ﺑﻪ اﻣﻦ ﺑﻮدن ﻫﺴﺘﻪ و ﺳﺮوﯾﺲﻫﺎی اﺻﻠ

ﯾ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﻣ ﭘﺮدازﻧﺪ. ﺳﯿﺴﺘﻢ ﻋﺎﻣﻠ ﮐﻪ در ﻫﺴﺘﻪ ﺧﻮد دﭼﺎر ﻣﺸ ﻼت اﻣﻨﯿﺘ

ﺑﺎﺷﺪ (ﻣﺜﻼ دارای ﮔﻠﻮﮔﺎﻫ ﺑﺎﺷﺪ ﮐﻪ ﺑﻪ ﺳﺎدﮔ در ﭘﺮوﺗﮑﻞ ﺷﺒ ﻪ آن ﻗﺎﺑﻞ ﺳﻮء اﺳﺘﻔﺎده

ﺑﺎﺷﺪ) ﺑﻪ ﺳﺎدﮔ ﻧﺮماﻓﺰارﻫﺎی ﻣﺴﺘﻘﺮ را دﭼﺎر ﻣﺸ ﻞ ﻣ ﮐﻨﺪ و ﻫﺮ ﻧﻔﻮذﮔﺮی ﻗﺒﻞ از

رﺳﯿﺪن ﺑﻪ ﻧﺮماﻓﺰار، ﻧﺴﺒﺖ ﺑﻪ رﺧﻨﻪ ﺑﻪ آن اﻗﺪام ﻣ ﺪﯾﺎﻤﻧ.

اﻣﺮوزه ﺳﯿﺴﺘﻢﻞﻣﺎﻋﻫﺎی ﻣﻮرد اﺳﺘﻔﺎده ﺑﻪ ﺣﺪ ﻗﺎﺑﻞ ﻗﺒﻮﻟ از اﻣﻨﯿﺖ رﺳﯿﺪهاﻧﺪ، وﻟ

ﺑﺎزﻫﻢ ﭼﻨﺪﻣﺎه ﯾ ﺒﺎر وﺻﻠﻪﻫﺎی اﻣﻨﯿﺘ ﺑﺮای ﻫﺴﺘﻪ آﻧﻬﺎ ﻣﻨﺘﺸﺮ ﻣ ﺷﻮد.

ﺑﺰرﮔﺘﺮﯾﻦ ﻣﺸ ﻠ ﮐﻪ در اﻣﻨﯿﺖ ﻫﺴﺘﻪ ﺳﯿﺴﺘﻢ ﻞﻣﺎﻋﻫﺎ وﺟﻮد دارد، راهاﻧﺪاز ﺳﺨﺖ -

اﻓﺰارﻫﺎ ﻫﺴﺘﻨﺪ. راهاﻧﺪازﻫﺎ (Driver)، ﻗﻄﻌﻪ ﮐﺪی ﻫﺴﺘﻨﺪ ﮐﻪ ﺗﻮﺳﻂ ﺳﺎزﻧﺪﮔﺎن ﯾ ﻧﺮم-

اﻓﺰار ﺑﺮای ﮐﺎر ﺑﺎ آن ﻧﺮماﻓﺰار در ﯾ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﻋﺮﺿﻪ ﻣ ﻼﺜﻣ . ﻧﻮﺷ راهاﻧﺪاز ﮐﺎرت

ﮔﺮاﻓﯿ و راهاﻧﺪاز ﻣﻮدم از اﯾﻦ دﺳﺘﻪ ﻫﺴﺘﻨﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ راهاﻧﺪازﻫﺎ ﻧﯿﺎزﻣﻨﺪ ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻬ در اﺟﺮا ﻫﺴﺘﻨﺪ (و ﻣﺴﺘﻘﯿﻤﺎ ﺑﺎ

ﺳﺨﺖ اﻓﺰار ﮐﺎر ﻣ ﮐﻨﻨﺪ)، ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ آﻧﻬﺎ را در ﺣﻠﻘﻪ ﺻﻔﺮ و ﺑﺎ اﺧﺘﯿﺎرات ﺗﺎم ﺑﺮ روی

ﺳﯿﺴﺘﻢ اﺟﺮا ﻣ ﮐﻨﺪ. راهاﻧﺪازﻫﺎ ﺑﺴﯿﺎر ﻣﺘﻨﻮع ﻫﺴﺘﻨﺪ و ﺑﻪ ﻣﺎﻧﻨﺪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ دارای

ﺗﯿﻢ اﻣﻨﯿﺘ و ﺑﺮرﺳ داﺋﻤ ﻧﯿﺴﺘﻨﺪ، ﻟﺬا ﺑﻪ ﻣﺜﺎﺑﻪ ﺑﺤﺚ اﻓﺰوﻧﻪﻫﺎی ﯾ ﭼﻬﺎرﭼﻮب،

ﻣﻌﻀﻼت اﻣﻨﯿﺘ ﺑﺴﯿﺎری را در ﻫﺴﺘﻪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ اﯾﺠﺎد ﻣ ﺪﻨﻨﮐ.

ﻢﺘﺴﯿﺳﻫﺎی ﻋﺎﻣﻞ ﻣﻌﻤﻮﻻ ﺗﻨﻬﺎ راهاﻧﺪازﻫﺎﯾﯽ را ﺗﻮﺳﻌﻪ ﻣ ﮐﻨﻨﺪ ﮐﻪ ﺷﺪﯾﺪا ﺗﺴﺖ ﺷﺪه

ﺑﺎﺷﺪ و ﺗﻮﺳﻂ ﺗﯿﻢ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ اﻣﻀﺎی دﯾﺠﯿﺘﺎل ﺷﺪه ﺑﺎﺷﺪ، اﻣﺎ ﺑﺎز ﻫﻢ اﯾﻦ راهاﻧﺪازﻫﺎ

ﺑﻪ ﻧﺴﺒﺖ ﻫﺴﺘﻪ ﭘﺎﯾﻪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﻧﺎ اﻣﻦﺗﺮ ﻣ ﺪﻨﺷﺎﺑ.

101

٢٬٧٬٣ اﻣﻨﯿﺖ ﺳﺮوﯾﺲ

اﻣﻨﯿﺖ ﺳﺮوﯾﺲ، در واﻗ اﻣﻨﯿﺖ ﺳﺮوﯾﺲﻫﺎی ﺳﯿﺴﺘﻤ ﯾ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ و ﻗﺴﻤﺖ

ﻧﺮماﻓﺰاری ﺳ ﻮی اﺟﺮای ﺑﺮﻧﺎﻣﻪﻫﺎﺳﺖ. در ﻫﺮ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻠ ﺗﻌﺪاد ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﻧﺮماﻓﺰار

ﺗﺤﺖ ﻋﻨﻮان ﺳﺮوﯾﺲ ﯾﺎ داﻣﻮن (Daemon) وﺟﻮد دارﻧﺪ ﮐﻪ ﺑﻪ اﻧﺠﺎم ﻋﻤﻠ ﺮدﻫﺎی

روزﻣﺮه ﺳﯿﺴﺘﻢ ﻣﺸﻐﻮل ﻫﺴﺘﻨﺪ. ﻣﺜﻼ ﺳﺮوﯾﺲ درﯾﺎﻓﺖ و ارﺳﺎل ایﻣﯿﻞ، ﺳﺮوﯾﺲ

DNS، ﺳﺮور وب و ﻧﺮماﻓﺰارﻫﺎی ﺑﺴﯿﺎر دﯾ ﺮی در اﯾﻦ دﺳﺘﻪ ﻗﺮار دارﻧﺪ.

اﯾﻦ ﺳﺮوﯾﺲﻫﺎ ﻧﺮماﻓﺰارﻫﺎی ﺗﺴﺖ ﺷﺪه و ﻣﻄﻤﺌﻦ و ﻣﻌﺮوﻓ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺎ اﺧﺘﯿﺎرات

ﺑﺎﻻ ﺑﺮ روی ﺳﯿﺴﺘﻢ ﺑﻪ ﻫﻨﮕﺎم راهاﻧﺪازی (Boot) اﺟﺮا ﻣ ﺷﻮﻧﺪ. ﺳﺮورﻫﺎ ﺑﺎ ﮔﺬﺷﺖ زﻣﺎن

و ﺑﺎ اراﺋﻪ اﻣ ﺎﻧﺎت ﺑﯿﺸﺘﺮ و ﺑﺎ ﻧﯿﺎز ﺑﻪ ﺳﺮوﯾﺲﻫﺎی ﺑﯿﺸﺘﺮ ﺑﺮای ﺳﺮوﯾﺲدﻫ ﻧﺮماﻓﺰارﻫﺎی

ﺧﻮد، ﺳﺮوﯾﺲﻫﺎی ﺑﯿﺸﺘﺮی را ﺑﺮ روی ﺧﻮد ﻧﺼﺐ ﻣ ﮐﻨﻨﺪ و اراﺋﻪ ﻣ دﻫﻨﺪ. ﻫﺮ

ﺳﺮوﯾﺴ ﻧﯿﺰ ﺑﻪ ﻣﺎﻧﻨﺪ ﯾ ﻧﺮماﻓﺰار ﻣﺴﺘﻘﻞ اﻣﻨﯿﺖ ﺧﻮد را داراﺳﺖ.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﯾ ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ ﻧﻤ ﺗﻮاﻧﺪ ﺑﻪ ﮐﺪ و ﻧﺤﻮه ﮐﺎرﮐﺮد ﺗﻤﺎم ﺳﺮوﯾﺲﻫﺎی

ﻣﻮﺟﻮد ﺑﺮ روی ﯾ ﺳﯿﺴﺘﻢ اﺣﺎﻃﻪ داﺷﺘﻪ ﺑﺎﺷﺪ، ﻣﻌﻤﻮﻻ از ﻧﺮماﻓﺰارﻫﺎی اﺗﻮﻣﺎﺗﯿ و ﯾﺎ

ﮔﺮوهﻫﺎی ﻣﻌﻀﻼت اﻣﻨﯿﺘ ﺳﺮوﯾﺲﻫﺎ ﮐﻤ ﻣ ﮔﯿﺮﻧﺪ.

ﺷﻞ ٦٣ ﻧﻤﺎﯾﻪ ﻧﺴﻮس، ﯾ ﻧﺮماﻓﺰار ﻣﻌﺮوف ﺑﺮرﺳ اﻣﻨﯿﺖ ﺳﺮوﯾﺲ و ﺷﺒﻪ 102

اﯾﻦ ﻧﺮماﻓﺰارﻫﺎ، ﻣﺎﻧﻨﺪ ﯾ آﻧﺘ وﯾﺮوﯾﺲ، ﺳﺮوﯾﺲﻫﺎی ﻣﻮﺟﻮد ﺑﺮ روی ﺳﯿﺴﺘﻢ را

ﺑﺮرﺳ ﮐﺮده، ﻣﻌﻀﻼت ﺷﻨﺎﺧﺘﻪ ﺷﺪه آﻧﻬﺎ را ﮔﺰارش ﻣ ﮐﻨﻨﺪ. ﻣﻌﻀﻼﺗ ﮐﻪ ﻫﻨﻮز

ﮔﺬارش ﻧﺸﺪهاﻧﺪ و ﺑﻪ اﺻﻄﻼح ﺻﻔﺮ روزه (0day) ﻫﺴﺘﻨﺪ، ﺗﻮﺳﻂ اﯾﻦ ﺗﺴﺖ اﺗﻮﻣﺎﺗﯿ

ﮐﺸﻒ ﻧﻤ ﺷﻮﻧﺪ و ﺑﺎ اﺳﺘﻔﺎده از آﻧﻬﺎ ﻧﻔﻮذﮔﺮان روزاﻧﻪ ﺑﻪ ﻣﯿﻠﯿﻮنﻫﺎ ﺳﯿﺴﺘﻢ رﺧﻨﻪ ﻣ -

ﺪﻨﻨﮐ.

ﻣﻌﻀﻼت را ﻣ ﺗﻮان ﺑﻪ ﭼﻨﺪ دﺳﺘﻪ ﺗﻘﺴﯿﻢ ﮐﺮد ﮐﻪ در ﺑﺨﺶ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار ﺑﻪ

ﺗﻔﺼﯿﻞ ﺑﺮرﺳ ﻣ ﺪﻧﻮﺷ.

ﺗﻤﺎم ﺳﯿﺴﺘﻢﻫﺎی ﻋﺎﻣﻞ ﺳﺮور، دارای ﺳﺮوﯾﺲ ﺑﺮوزرﺳﺎﻧ داﺋﻢ ﻫﺴﺘﻨﺪ ﮐﻪ ﭘﺲ از

ﻣﺸﺨﺺ ﺷﺪن ﯾ رﺧﻨﻪ در ﯾ ﺳﺮوﯾﺲ، و ﮔﺰارش ﺷﺪن آن، ﻧﺴﺨﻪ اﺻﻼح ﺷﺪه آﻧﺮا از

اﯾﻨﺘﺮﻧﺖ درﯾﺎﻓﺖ ﮐﺮده ﻧﺼﺐ ﻣ ﮐﻨﻨﺪ ﺗﺎ ﻣﻌﻀﻞ ﻣﺮﺑﻮﻃﻪ وﺻﻠﻪ ﺷﻮد. ﮐﺎرﺑﺮان ﺧﺎﻧﮕ

ﺑﺴﯿﺎری از اوﻗﺎت ﺑﺮوزرﺳﺎﻧ ﺳﺮوﯾﺲﻫﺎی ﺧﻮد را ﻧﺎﻣﻬﻢ ﻣ ﺷﻤﺎرﻧﺪ وﻟ ﻣﺪﯾﺮان ﺳﺮورﻫﺎ

ﺮﺑ ﻪﺸ ﻤﻫ اﯾﻦ ﻣﻬﻢ اﻫﺘﻤﺎم ﮐﺎﻓ دارﻧﺪ.

ﮔﺎﻫ ﻧﺴﺨﻪ ﺑﺮوز ﺷﺪه ﯾ ﺳﺮوﯾﺲ، از اﻣ ﺎﻧﺎت ﻧﺴﺨﻪ ﻗﺒﻠ ﭘﺸﺘﯿﺒﺎﻧ ﻧﻤ ﮐﻨﺪ و ﺑﻪ

اﺻﻄﻼح ﻫﻤﺴﺎن ﺑﺎ ﻗﺒﻞ (Backward Compatible) ﻧﯿﺴﺖ. اﯾﻦ اﻣﺮ ﺑﺎﻋﺚ ﻣ ﺷﻮد

ﺑﺴﯿﺎری از ﻣﺪﯾﺮان ﺳﺮورﻫﺎ از ﺑﺮوزرﺳﺎﻧ ﺳﺮوﯾﺲ ﺧﻮدداری ﮐﻨﻨﺪ ﺗﺎ ﻧﺮماﻓﺰارﻫﺎﯾﯽ ﮐﻪ از

وﯾﮋﮔ ﻫﺎی ﺧﺎﺻ ﺑﻬﺮه ﻣ ﮔﺮﻓﺘﻨﺪ ﮐﻪ در ﻧﺴﺨﻪ ﺟﺪﯾﺪ ﻣﻮﺟﻮد ﻧﯿﺴﺖ، از ﮐﺎر ﻧﯿﺎﻓﺘﻨﺪ. اﯾﻦ

ﻣﻬﻢ ﻧﯿﺰ ﯾ از اﺻﻠ ﺗﺮﯾﻦ دﻻﯾﻞ ﻫ ﺷﺪن ﺳﺎﯾﺘﻬﺎی ﺑﺰرگ اﺳﺖ.

103

٢٬٧٬۴ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار

از آﻧﺠﺎﯾﯽ ﮐﻪ ﻧﺮماﻓﺰار دﻧﯿﺎی ﺑﺴﯿﺎر وﺳﯿﻌ دارد و ﺑﺮﺧ ﻧﺮماﻓﺰارﻫﺎ ﺑﺮای ﺑﺮﺧ

دﯾ ﺮ ﺣ ﻢ ﺳ ﻮ را دارﻧﺪ، اﻣﻨﯿﺖ ﻧﺮماﻓﺰار ﺑﻪ دو ﺑﺨﺶ اﻣﻨﯿﺖ ﮐﺪ ﻣﺎﺷﯿﻦ (ﻧﺮماﻓﺰار ﺳﻄ

ﭘﺎﯾﯿﻦ) و اﻣﻨﯿﺖ ﻣﻨﻄﻘ /ﺳﻄ ﺑﺎﻻ ﺗﻘﺴﯿﻢ ﻣ ﺷﻮد.

در دﻧﯿﺎی اﻣﺮوز ٧٠% ﺳﺎﯾﺘﻬﺎ ﺗﻮﺳﻂ اﻣﻨﯿﺖ ﻣﻨﻄﻘ ﻗﺎﺑﻞ ﻧﻔﻮذ ﻫﺴﺘﻨﺪ و ﮐﻤﺘﺮ

ﻧﻔﻮذﮔﺮی ﺑﻪ دﻧﺒﺎل ﻧﻔﻮذ از ﻃﺮق دﯾ ﺮ (ﮐﻪ ﻣﻌﻤﻮﻻ ﺑﺴﯿﺎر دﺷﻮارﺗﺮ ﻫﺴﺘﻨﺪ) ﻣ رود. ﺑﻪ

ﻫﻤﯿﻦ دﻟﯿﻞ رﻓ ﻣﻌﻀﻼت ﻣﻨﻄﻘ اﻣﻨﯿﺘ ﯾ ﻧﺮماﻓﺰار ﺗﺤﺖ وب، اﻣﻨﯿﺖ ﻋﻤﻮﻣ آﻧﺮا ﺑﻪ

ﻃﺮز ﻗﺎﺑﻞ ﻣﻼﺣﻈﻪای اﻓﺰاﯾﺶ ﻣ دﻫﺪ.

٢٬٧٬۴٬١ اﻣﻨﯿﺖ ﮐﺪ ﻣﺎﺷﯿﻦ

ﺗﻌﺪادی از ﺣﻤﻠﻪﻫﺎی اﻣﻨﯿﺘ ﮐﻪ ﻣﻌﻤﻮﻻ ﺑﺎ ﻧﺎم Exploit ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮﻧﺪ، ﺑﺮ روی

ﮐﺪ ﻣﺎﺷﯿﻦ ﯾ ﻧﺮماﻓﺰار ﻗﺎﺑﻞ اﻧﺠﺎم ﻫﺴﺘﻨﺪ. اﯾﻦ

ﺣﻤﻠﻪﻫﺎ ﺳﻄ ﭘﺎﯾﯿﻦ ﺑﻮده، ﯾﺎﻓﺘﻦ آﻧﻬﺎ و رﻓ آﻧﻬﺎ ﺗﺎ

ﺣﺪودی ﻣﺸ ﻞ اﺳﺖ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺣﻤﻠﻪ ﻣﻌﺮوف

Buffer Overflow ﻫﻨﮕﺎﻣ رخ ﻣ دﻫﺪ ﮐﻪ ﺗﺎﺑﻌ

ﮐﻪ اﻧﺘﻈﺎر درﯾﺎﻓﺖ ﻣﺜﻼ ٢٠٠ ﺑﺎﯾﺖ داده دارد، ٢٠٨

ﺑﺎﯾﺖ داده درﯾﺎﻓﺖ ﮐﻨﺪ و آدرس ﺑﺎزﮔﺸﺖ از ﺗﺎﺑﻊ ﻧﯿﺰ

ﺑﺮ روی ﭘﺸﺘﻪ ﺳﯿﺴﺘﻢ ﺑﺎزﻧﻮﯾﺴ ﺷﻮد، ﻟﺬا ﭘﺲ از

اﺟﺮای ﺗﺎﺑﻊ، ﮐﺪ ﺑﻪ ﻗﺴﻤﺖ ﻗﺎﺑﻞ ﮐﻨﺘﺮﻟ ﺗﻮﺳﻂ

ﻧﻔﻮذﮔﺮ ﻣﻨﺘﻘﻞ ﻣ ﺷﻮد.

اﯾﻦ دﺳﺘﻪ از ﺣﻤﻼت، ﺗﻮﺳﻂ ﻣﺘﺨﺼﺼﺎت اﻣﻨﯿﺘ ﺷﻞ ٦٤ ﻧﻤﺎی ﺗﺼﻮﯾﺮیBuffer Overflow

104

ﮐﺸﻒ ﻣ ﺷﻮﻧﺪ و ﺑﺮای ﻧﻔﻮذ ﺑﻪ ﺳﯿﺴﺘﻢﻫﺎ از آﻧﻬﺎ اﺳﺘﻔﺎده ﻣ ﺷﻮد. ﭘﺲ از ﻣﺪﺗ ﮐﻪ ﻟﻮ

رﻓﺘﻨﺪ و ﻣﻨﺘﺸﺮ ﺷﺪﻧﺪ، ﺗﯿﻢ ﻧﺮماﻓﺰارﻫﺎ وﺻﻠﻪای ﺑﺮای رﻓ اﯾﻦ ﻣﺸ ﻞ اراﺋﻪ ﻣ ﺪﻨﻨﮐ.

ﻢﺘﺴﯿﺳﻫﺎی ﻋﺎﻣﻞ و ﺑﺴﺘﺮﻫﺎی ﻧﺮماﻓﺰاری، ﻣ ﺎﻧﯿﺰمﻫﺎی ﺑﯿﺸﻤﺎری را ﺑﺮای

ﺟﻠﻮﮔﯿﺮی از اﯾﻦ ﻧﻮع ﺣﻤﻼت در ﻧﻈﺮ ﮔﺮﻓﺘﻪاﻧﺪ، ﻣﺎﻧﻨﺪ ASLR ﮐﻪ روﺷﯿﺴﺖ ﺑﺮای

ﺗﺼﺎدﻓ ﭼﯿﺪن ﺣﺎﻓﻈﻪﻫﺎی ﯾ ﺑﺮﻧﺎﻣﻪ ﺗﺎ ﻧﻔﻮذﮔﺮ ﻧﺘﻮاﻧﺪ اﻟ ﻮی ﺣﺎﻓﻈﻪ را ﮐﺸﻒ ﮐﺮده

و ﺑﻪ آن ﻧﻔﻮذ ﮐﻨﺪ.

اﯾﻦ دﺳﺘﻪ ﺣﻤﻼت از ﺑﺤﺚ اﯾﻦ ﺳﻨﺪ ﺧﺎرج ﻫﺴﺘﻨﺪ و ﺳﻨﺪی ﺟﺪاﮔﺎﻧﻪ ﻣ ﺪﻨﺒﻠﻃ.

٢٬٧٬۴٬٢ اﻣﻨﯿﺖ ﻣﻨﻄﻘ/ﺳﻄﺢ ﺑﺎﻻ

اﻣﻨﯿﺖ ﻣﻨﻄﻘ ﯾﺎ ﺳﻄ ﺑﺎﻻ، ﻣﺮﺑﻮط ﺑﻪ ﻧﻘﺎط ﺿﻌﻔﯿﺴﺖ ﮐﻪ در ﮐﺪ ﺳﻄ ﺑﺎﻻ وﺟﻮد

دارﻧﺪ، ﻣﺎﻧﻨﺪ ﺣﻤﻼت SQL Injection و XSS. اﯾﻦ ﺑﺨﺶ از اﻣﻨﯿﺖ، اﺣﺘﯿﺎج ﺑﻪ

آﮔﺎﻫ از روﺷﻬﺎی ﻧﻔﻮذ و دﻓﺎعﻫﺎی ﻣﻮﺟﻮد ر ﺑﺮاﺑﺮ آﻧﻬﺎ دارد ﺗﺎ ﺑﻪ درﺳﺘ ﺑﺘﻮان

ﻪﻣﺎﻧﺮﺑﻧﻮﯾﺴ ﮐﺮد و ﻧﻔﻮذﮔﺮان ﻧﺘﻮاﻧﻨﺪ ﺑﻪ راﺣﺘ آﻧﺮا ﻫ ﮐﻨﻨﺪ.

اﯾﻦ ﺑﺨﺶ از اﻣﻨﯿﺖ ﯾﺎ ﺑﻪ دﻟﯿﻞ ﺣﻮاﺳﭙﺮﺗ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﭘﯿﺶ ﻣ آﯾﺪ، ﯾﺎ ﺑﻪ دﻟﯿﻞ

ﺧﻮﺷﺒﯿﻨ او. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻣﻌﻤﻮﻟ ﻫﯿﭽ ﺎه ﺗﺼﻮر ﻧﺨﻮاﻫﺪ ﮐﺮد ﮐﻪ

ﻓﺮدی رﻣﺰ ﻋﺒﻮر را or 1=’1 ’1 وارد ﻧﻤﺎﯾﺪ، ﻟﺬا از اﻣ ﺎن اﺳﺘﻔﺎده از SQL Injection

ﺑﺮای ﮔﺬر از ورود ﺑﻪ ﺳﯿﺴﺘﻢ ﺑﺎ ﺧﺒﺮ ﻧﯿﺴﺖ. آﮔﺎﻫ اﺑﺘﺪاﯾﯽ و ﻋﻨﻮانوار در ﻣﻮرد وﺟﻮد

اﯾﻨﮕﻮﻧﻪ ﻣﺨﺎﻃﺮات، ﺑﺮای اﯾﻨﮑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﺑﺘﻮاﻧﺪ از آﻧﻬﺎ ﺟﻠﻮﮔﯿﺮی ﮐﻨﺪ ﺗﺎ ﺣﺪودی

ﮐﻔﺎﯾﺖ ﻣ ﮐﻨﺪ. ﻫﻨﮕﺎﻣﯿ ﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ از ﺧﻄﺮ اﻃﻼع ﯾﺎﻓﺖ، ﺧﻮد ﺑﻪ دﻧﺒﺎل راهﻞﺣ

آن ﺧﻮاﻫﺪ ﺑﻮد.

105

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺗﻤﺎﻣ اﯾﻦ دﺳﺘﻪﻫﺎ در اﻣﻨﯿﺖ ﯾ ﺳﯿﺴﺘﻢ ﺑﺎﯾﺪ رﻋﺎﯾﺖ ﺷﻮﻧﺪ، و ﻫﺮﮐﺪام دارای

ﺟﺰﺋﯿﺎت و ﻧﮑﺎت ﺑﺴﯿﺎری ﻫﺴﺘﻨﺪ، اﻣﻨﯿﺖ ﻣﻄﻠﻖ دﺳﺖ ﯾﺎﻓﺘﻨ ﺗﻠﻘ ﻧﻤ ﺷﻮد و اﻣﻨﯿﺖ ﻧﺴﺒﯽ ﻧﯿﺰ

در دﻧﯿﺎی اﻣﺮوز در ﺣﺪی اﺳﺖ ﮐﻪ ﻃﺒﻖ آﺧﺮﯾﻦ آﻣﺎر ﺑﯿﺶ از ٧٠% ﺳﺎﯾﺘﻬﺎی اﯾﻨﺘﺮﻧﺘ ﻗﺎﺑﻞ رﺧﻨﻪ

ﻫﺴﺘﻨﺪ و ﻫﻤﺎﻧﻄﻮری ﮐﻪ در رﺳﻪﻧﺎﻫﺎ ﺷﺎﻫﺪ ﻫﺴﺘﯿﻢ، ﺑﺴﯿﺎری از ﺳﺎﯾﺘﻬﺎی ﻣﻬﻢ و ﺑﺰرگ ﻫﺮروزه

ﻫ ﻣ ﺪﻧﻮﺷ.

در اﯾﻦ ﻣﯿﺎن وﺟﻮد ﯾ ﭼﻬﺎرﭼﻮب ﺧﻮب و اﻣﻦ، اﺣﺘﻤﺎل ﻧﻔﻮذ را ﺑﻪ ﺷﺪت ﮐﺎﻫﺶ ﻣ دﻫﺪ زﯾﺮا

ﻋﻤﺪه ﻧﻔﻮذﮔﺮان ﻣﺒﺘﺪی ﻫﺴﺘﻨﺪ و ﭘﺲ از ﺑﺮرﺳ روﺷﻬﺎی ﺳﺎده ﻧﻔﻮذ ﻧﺎ اﻣﯿﺪ ﺧﻮاﻫﻨﺪ ﺷﺪ. اﻣﺎ اﮔﺮ

ﻧﻔﻮذﮔﺮان ﺣﺮﻓﻪای ﺑﻪ ﺻﻮرت ﺗﯿﻤ و ﺳﺎزﻣﺎن ﯾﺎﻓﺘﻪ ﺑﺮای ﻧﻔﻮذ ﺑﻪ ﯾ ﺳﯿﺴﺘﻢ ﺗﻼش ﮐﻨﻨﺪ ( ﮐﻪ

اﻣﺮوزه ﺑﺎ واژه ﻣﺨﻮف APT –Advanced Persistent Threat ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮد)، ﺣﺘﻤﺎ ﺑﻪ ﻫﺪف

ﻣﺮﺑﻮﻃﻪ دﺳﺖ ﭘﯿﺪا ﺧﻮاﻫﻨﺪ ﮐﺮد. از ﻫﻤﯿﻦ دﺳﺘﻪ ﻫﺴﺘﻨﺪ وﯾﺮوﺳﻬﺎی ﺳﺎﯾﺒﺮی ﻣﻨﺘﺸﺮ ﺷﺪه در

ﺳﺎﻟﻬﺎی اﺧﯿﺮ از ﺟﻤﻠﻪ Stuxnet, Duqu, Flame.

106

٣ ﻣﺨﺎﻃﺮات اﻣﻨﯿﺖ وب

ﻗﺒﻞ از اﯾﻨﮑﻪ ﺑﻪ ﻣﻄﺮح ﮐﺮدن ﻣﺨﺎﻃﺮات ﺑﭙﺮدازﯾﻢ، ﺗﻌﺮﯾﻒ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار و اﻣﻨﯿﺖ وب ﺑﻪ

ﻋﻨﻮان ﯾ ﺑﺴﺘﺮ اراﺋﻪ ﻧﺮماﻓﺰار را ﻣﺮور ﻣ ﻢﯿﻨﮐ:

٣٬١ ﺣﻮزهﻫﺎی اﻣﻨﯿﺖ ﻧﺮماﻓﺰار

در ﺗﻌﺮﯾﻒ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار، ﺳﻪ ﺑﺨﺶ را ﮐﻪ ﺑﺎ واژه CIA ﺧﻼﺻﻪ ﻣ ﺷﻮﻧﺪ ﻣﻄﺮح ﻣ ﺪﻨﯾﺎﻤﻧ:

٣٬١٬١ Confidentiality ﻣﺤﺮﻣﺎﻧﮕ ، ﯾﻌﻨ اﻣ ﺎن دزدی و دﯾﺪن ﻣﻄﺎﻟﺒﯽ ﮐﻪ ﻧﯿﺎزﻣﻨﺪ اﻣﻨﯿﺖ ﻫﺴﺘﻨﺪ ﺗﻮﺳﻂ

اﺷﺨﺎص ﺛﺎﻟﺚ ﻣﻤ ﻦ ﻧﺒﺎﺷﺪ. ﻣﺤﺮﻣﺎﻧﮕ در ﻧﺮماﻓﺰارﻫﺎ ﺗﻮﺳﻂ ﭘﺮوﺗﮑﻞﻫﺎی رﻣﺰﻧﮕﺎری و

ﭘﯿﺎدهﺳﺎزی ﺻﺤﯿﺢ آﻧﻬﺎ ﺻﻮرت ﻣ ﮔﯿﺮد. ﻣﺤﺮﻣﺎﻧﮕ در وب ﻣﻌﻤﻮﻻ ﺗﻮﺳﻂ ﭘﺮوﺗﮑﻞ

SSL/TLS اﻧﺠﺎم ﻣ ﺷﻮد ﮐﻪ دادهﻫﺎی ﺗﻌﺎﻣﻠ را رﻣﺰ ﻣ ﺪﻨﮐ.

ﭘﺮوﺗﮑﻞ HTTPS ﮐﻪ در واﻗ در ﺑﺴﺘﺮ SSL اﺟﺮا ﻣ ﺷﻮد، ﭘﯿﭽﯿﺪﮔ ﻫﺎی ﻗﺎﺑﻞ ﺗﻮﺟﻬ

دارد. از ﻣﻬﻤﺘﺮﯾﻦ ﭘﯿﭽﯿﺪﮔ ﻫﺎی اﯾﻦ ﭘﺮوﺗﮑﻞ، زﯾﺮﺳﺎﺧﺖ ﮐﻠﯿﺪ ﻋﻤﻮﻣ (PKI) اﺳﺖ ﮐﻪ

اﻣﻀﺎی دﯾﺠﯿﺘﺎل و ﮔﻮاﻫﯿﻨﺎﻣﻪ دﯾﺠﯿﺘﺎل و ﺗﺎﯾﯿﺪ و رد ﻫﻮﯾﺖﻫﺎ را در ﺑﺮ ﻣ ﮔﯿﺮد.

ﺑﺴﯿﺎری از ﻣﺨﺎﻃﺮات ﻣﻮﺟﻮد اﯾﻦ وﯾﮋﮔ را ﻧﻘﺾ ﻣ ﮐﻨﻨﺪ و ﺑﻪ دادهﻫﺎی ﻣﺤﺮﻣﺎﻧﻪ و

ﺧﺼﻮﺻ دﺳﺖ ﻣ ﺪﻨﺑﺎﯾ.

٣٬١٬٢ Integrity ﯾ ﭙﺎرﭼ ﯾﻌﻨ ﻋﺪم اﻣ ﺎن دﺳﺘﮑﺎری اﻃﻼﻋﺎت. ﻫﻨﮕﺎﻣ ﮐﻪ ﺷﻤﺎ ﯾ ﻧﺎﻣﻪ

اﻟ ﺘﺮوﻧﯿ از رﯾﯿﺴﺘﺎن درﯾﺎﻓﺖ ﻣ ﮐﻨﯿﺪ ﮐﻪ دﺳﺘﻮر ﻣﻬﻤ را ﺑﻪ ﺷﻤﺎ داده اﺳﺖ، ﺑﺎﯾﺪ

ﻣﻄﻤﺌﻦ ﺑﺎﺷﯿﺪ ﮐﻪ اﯾﻦ ﻧﺎﻣﻪ از ﺳﻤﺖ رﯾﯿﺲ ﺷﻤﺎﺳﺖ و ﮐﺴ آﻧﺮا دﺳﺘﮑﺎری ﻧﮑﺮدهاﺳﺖ.

107

اﯾﻦ ﻣﻬﻢ ﻧﯿﺰ ﺗﻮﺳﻂ زﯾﺮﺳﺎﺧﺖ ﮐﻠﯿﺪ ﻋﻤﻮﻣ و اﻣﻀﺎی دﯾﺠﯿﺘﺎل ﻓﺮاﻫﻢ ﻣ ﺷﻮد. در

ﺻﻮرﺗ ﮐﻪ زﯾﺮﺳﺎﺧﺖ ﮐﻠﯿﺪ ﻋﻤﻮﻣ دﭼﺎر ﻣﺸ ﻞ ﺷﻮد ﯾﺎ ﮐﺎرﺑﺮان اﻫﻤﯿﺖ آﻧﺮا ﻓﺮاﻣﻮش

ﮐﻨﻨﺪ، اﻣ ﺎن دﺳﺘﮑﺎری ﺗﻌﺎﻣﻼت ﻓﺮاﻫﻢ ﻣ ﺷﻮد و ﻧﻔﻮذﮔﺮان ﺑﺪون درک ﮐﺎرﺑﺮ ﻣ ﺗﻮاﻧﻨﺪ

دادهﻫﺎ را دﺳﺘﮑﺎری ﮐﻨﻨﺪ. اﯾﻦ ﺣﻤﻼت ﺑﺎ ﻧﺎم ﻣﺮد ﻣﯿﺎﻧ (Man in the Middle)

ﺷﻨﺎﺧﺘﻪ ﻣ ﺪﻧﻮﺷ.

٣٬١٬٣ Availability در دﺳﺘﺮس ﺑﻮدن، در ﮔﺬﺷﺘﻪ از ﻣﻨﻈﺮ اﻣﻨﯿﺘ ﻣﻬﻢ ﻧﺒﻮد اﻣﺎ ﺳﯿﺴﺘﻢﻫﺎی اﻣﺮوزی اﯾﻦ

ﻣﻬﻢ را ﺑﯿﺶ از ﻫﺮ وﯾﮋﮔ دﯾ ﺮی ﺣﺴﺎس ﻣ ﺷﻤﺎرﻧﺪ.

ﺗﺼﻮر ﮐﻨﯿﺪ ﮐﻪ ﯾ ﻧﻔﻮذﮔﺮ ﺑﺘﻮاﻧﺪ ﮔﻮﮔﻞ را ﺑﺮای ١۵ دﻗﯿﻘﻪ از دﺳﺘﺮس ﺧﺎرج ﮐﻨﺪ،

ﺗﻤﺎم اﻋﺘﺒﺎر و آﺑﺮوی آن ﺧﻮاﻫﺪ رﻓﺖ و ﻫﻤﭽﻨﯿﻦ ﻣﺸﺘﺮﯾﺎن ﮔﻮﮔﻞ از آن ﻧﺎ اﻣﯿﺪ ﻣ ﺷﻮﻧﺪ و

دﯾ ﺮ ﺑﺪان اﻋﺘﻤﺎد ﻧﻤ ﺪﻨﻨﮐ.

High Availability از ﭼﺎﻟﺶﻫﺎی ﻣﻬﻢ اﻣﺮوزی دﻧﯿﺎی ﻧﺮماﻓﺰار اﺳﺖ ﮐﻪ ﻣﺘﺨﺼﺼﺎن

ﺑﺴﯿﺎری ﺑﺮ روی آن ﮐﺎر ﻣ ﺪﻨﻨﮐ.

ﺣﻤﻼت ﺑﺴﯿﺎری در اﯾﻦ ﺣﻮزه ﻣﺘﻤﺮﮐﺰ ﻫﺴﺘﻨﺪ، ﮐﻪ از ﻧﻈﺮ ﺗﺨﺮﯾﺐ اﻫﻤﯿﺖ ﭘﺎﯾﯿﻨﺘﺮی از

دو ﺣﻮزه دﯾ ﺮ دارﻧﺪ، ﻟﺬا ﻫﻨﮕﺎﻣ ﮐﻪ ﮔﻔﺘﻪ ﻣ ﺷﻮد ﯾ ﺳﯿﺴﺘﻢ ﻫ ﺷﺪه اﺳﺖ، ﻣﻬﻢ

اﺳﺖ ﮐﻪ داﻧﺴﺘﻪ ﺷﻮد ﮐﺪام ﺣﻮزه آن ﺑﻪ ﺧﻄﺮ اﻓﺘﺎده اﺳﺖ. اﮔﺮ ﺗﻨﻬﺎ در دﺳﺘﺮس ﭘﺬﯾﺮی

ﺑﺎﺷﺪ ﻧﮑﺘﻪ ﺑﺴﯿﺎر ﻣﻬﻤ ﻧﯿﺴﺖ.

ﻫﻤﭽﻨﯿﻦ دو ﺣﻤﻠﻪ DOS و DDOS ﻫﺪف اﺻﻠﯿﺸﺎن از ﺑﯿﻦ ﺑﺮدن دﺳﺘﺮﺳ ﭘﺬﯾﺮی

اﺳﺖ ﮐﻪ ﺑﺎ ارﺳﺎل درﺧﻮاﺳﺖﻫﺎی ﻣﺘﻌﺪد ﺑﻪ ﯾ ﺳﯿﺴﺘﻢ ﯾﺎ ﺳﺮوﯾﺲ، ﺳﻌ در از ﻣﺪار

ﺧﺎرج ﮐﺮدن آن دارﻧﺪ.

108

٣٬٢ ﻣﻌﻀﻼت ﻣﺸﻬﻮر اﻣﻨﯿﺖ وب

در اﯾﻦ ﺑﺨﺶ، ﺑﺎ اﺳﺘﻨﺎد ﺑﻪ ﺳﻨﺪ OWASP Top 10 ﮐﻪ ﺑﻪ ﺑﺮرﺳ ١٠ ﺧﻄﺮ اﺻﻠ اﻣﻨﯿﺖ

وب ﻣ ﭘﺮدازد، اﻧﻮاع ﻣﻌﻀﻼت ﻣﺸﻬﻮر اﻣﻨﯿﺖ وب ﺑﺎ ﺗﻮﺿﯿﺢ ﺑﺮرﺳ ﻣ ﺷﻮﻧﺪ. ﻫﻤﭽﻨﯿﻦ در ﻓﺼﻞ

ﺑﻌﺪی راﻫ ﺎرﻫﺎﯾﯽ ﺑﺮای ﺟﻠﻮﮔ از آﻧﺎن اراﺋﻪ ﻣ ﺷﻮد.

ﺷﻞ ٦٥ ﻧﻤﺎﯾﻪ اواﺳﭗ

ﻗﺎﺑﻞ ذﮐﺮ اﺳﺖ ﮐﻪ OWASP ﺑﻪ ﻋﻨﻮان ﻣﻌﺘﺒﺮﺗﺮﯾﻦ اﻧﺠﻤﻦ ﺑﯿﻦاﻟﻤﻠﻠ اﻣﻨﯿﺖ وب

ﺳﺎﻟﻬﺎﺳﺖ ﮐﻪ در ﺑﻪ ﻧﺸﺮ آﮔﺎﻫ و آﻣﻮزش اﻣﻨﯿﺖ در اﯾﻦ زﻣﯿﻨﻪ ﻣ ﭘﺮدازد و اﻋﺘﻤﺎد ﻋﻤﻮﻣ ﺑﻪ آن

ﺑﺴﯿﺎر ﺑﺎﻻﺳﺖ. ﻧﮕﺎرﻧﺪه ﻧﯿﺰ در اﯾﻦ اﻧﺠﻤﻦ ﻋﻀﻮ ﺑﻮده، ﻋﻼوه ﺑﺮ ﺳﺮﭘﺮﺳﺖ ﺣﻮزه اﯾﺮان اﻧﺠﻤﻦ

ﺑﻮدن در ﺗﺪوﯾﻦ ﺳﻨﺪﻫﺎ (از ﺟﻤﻠﻪ Top 10 و PH P Security) ﻧﻘﺶ ﻣﻮﺛﺮی دارد.

ﺳﻨﺎرﯾﻮﻫﺎی ﻣﻄﺮح ﺷﺪه در اﯾﻦ ﺑﺨﺶ ﺑﺮ روی زﺑﺎن PHP و ﭘﺎﯾ ﺎه داده MySQL ﺗﻤﺮﮐﺰ

دارﻧﺪ، وﻟ ﺑﺮ روی ﻫﻤﻪ ﺳﯿﺴﺘﻢﻫﺎ ﺑﺎ ﺗﻐﯿﯿﺮات ﺟﺰﺋ ﻗﺎﺑﻞ اﺟﺮا ﻫﺴﺘﻨﺪ. در ﺻﻮرﺗ ﮐﻪ در

ﺳﯿﺴﺘﻢﻫﺎی دﯾ ﺮ ﺗﻔﺎوت ﻋﻤﺪه ﺑﺎﺷﺪ، در ﺳﻨﺎرﯾﻮ ذﮐﺮ ﺧﻮاﻫﺪ ﺷﺪ.

ﻫﻤﭽﻨﯿﻦ ﺑﺴﯿﺎری از اﯾﻦ ﻣﻌﻀﻼت در ﻧﺮماﻓﺰار آﻣﻮزﺷ OWASP WebGoat و

OWASP WebGoatPHP ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪه و ﺑﺮرﺳ ﮐﺎﻣﻞ اﺳﺖ.

٣٬٢٬١ SQL Injection اﯾﻦ ﺣﻤﻠﻪ ﮐﻪ در ﺳﺎل ٢٠٠٧، رﺗﺒﻪ دوم را ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص داده ﺑﻮد و اﻧﺘﻈﺎر ﻣ -

رﻓﺖ ﺑﻪ رﺗﺒﻪﻫﺎی ﭘﺎﯾﯿﻦﺗﺮﯾﻦ ﻧﺰول ﮐﻨﺪ، ﺑﻪ دﻟﯿﻞ ﻋﺪم اﯾﺠﺎد آﮔﺎﻫ ﮐﺎﻓ (ﮐﺎری ﮐﻪ

ﺳﺎﻟﻬﺎﺳﺖ در ﺣﺎل ﺻﻮرت ﮔﺮﻓﺘﻦ اﺳﺖ) اﮐﻨﻮن ﺑﻪ رﺗﺒﻪ اول ﺻﻌﻮد ﮐﺮده اﺳﺖ.

109

SQL Injection ﺣﻤﻠﻪ ﺑﺴﯿﺎر ﺧﻄﺮﻧﺎﮐﯿﺴﺖ و ﻫﻤﻪ ﻧﻔﻮذﮔﺮان ﻗﺒﻞ از ﺗﺴﺖ ﻫﺮ ﺣﻤﻠﻪ

دﯾ ﺮ اﯾﻦ ﺣﻤﻠﻪ را ﺗﺴﺖ ﻣ ﮐﻨﻨﺪ. ﺑﺮای ﺗﺴﺖ اﯾﻦ ﺣﻤﻠﻪ ﮐﺎﻓﯿﺴﺖ در ﺻﻔﺤﻪ ورود ﯾﺎ ﻫﺮ

ﭘﺎراﻣﺘﺮ ورودی دﯾ ﺮ ﯾ وب ﻋﺒﺎرﺗ ﻣﺎﻧﻨﺪ or 1=’1 ’1 وارد ﻧﻤﺎﯾﯿﺪ. درﺧﻮاﺳﺘ ﮐﻪ از

ﻃﺮﯾﻖ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﭘﺎﯾ ﺎه داده ارﺳﺎل ﻣ ﺷﻮد ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻐﯿﯿﺮ ﺧﻮاﻫﺪ ﮐﺮد:

SELECT * FROM users WHERE Username=’$1’ AND Password=’$2’

SELECT * FROM users

WHERE Username=’foo’ AND Password=’1’ or 1=’1’

ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﻣﺸﺎﻫﺪه ﻣ ﺷﻮد درﺧﻮاﺳﺖ ﺑﻪ ﯾ ﺷﺮط ﻫﻤﻮاره ﺻﺤﯿﺢ ﺗﺒﺪﯾﻞ ﺷﺪ

و ﺑﻪ ﻫﻤﯿﻦ ﺳﺎدﮔ ﮐﺎرﺑﺮ ﻣ ﺗﻮاﻧﺪ ﺑﺎ دﺳﺘﺮﺳ ﻣﺪﯾﺮ وارد ﺳﯿﺴﺘﻢ ﺷﻮد. اﯾﻦ ﺣﻤﻠﻪ ﺑﻪ دو

دﺳﺘﻪ اﺻﻠ ﺗﻘﺴﯿﻢ ﻣ ﺷﻮد:

٣٬٢٬١٬١ ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ ﮐﻮر

Blind SQL Injection ﻧﺎﻣﯿﺴﺖ ﮐﻪ ﺑﺮای اﯾﻦ ﻧﻮع از ﺣﻤﻼت ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ

ﺑﺮﮔﺰﯾﺪهاﻧﺪ. در ﺑﺴﯿﺎری از ﺳﺎﯾﺖﻫﺎ، ﭘﺎﺳ ﯾ درﺧﻮاﺳﺖ ﭘﺎﯾ ﺎﻫ ﺑﺮ روی ﺻﻔﺤﻪ

ﻧﻤﺎﯾﺶ داده ﻧﻤ ﺷﻮد. ﻣﺜﻼ در ﯾ ﺻﻔﺤﻪ رایﮔﯿﺮی، ﺷﻤﺎ رای ﺧﻮد را اﻧﺘﺨﺎب ﻣ -

ﮐﻨﯿﺪ و ﺳﯿﺴﺘﻢ آﻧﺮا درون ﭘﺎﯾ ﺎه داده ﻣ اﻓﺰاﯾﺪ. ﺣﺎﻻ اﮔﺮ ﺗﺰرﯾﻖ ﮐﻨﯿﺪ، ﻣﻌﻠﻮم ﻧﯿﺴﺖ

ﮐﻪ ﺗﺰرﯾﻖ ﺷﻤﺎ ﮐﺎر ﮐﺮده اﺳﺖ ﯾﺎ ﺧﯿﺮ.

ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل دﯾ ﺮ ﻣ ﺗﻮان ﭘﺎراﻣﺘﺮﻫﺎﯾﯽ را در ﻧﻈﺮ ﮔﺮﻓﺖ ﮐﻪ وﻗﺘ در آﻧﻬﺎ ﺗﺰرﯾﻖ

ﻣ ﺷﻮد ﺑﺮﻧﺎﻣﻪ اﯾﺠﺎد ﺧﻄﺎ ﻣ ﮐﻨﺪ و در ﻏﯿﺮ اﯾﻨﺼﻮرت ﺧﻄﺎﯾﯽ رخ ﻧﻤ دﻫﺪ. اﯾﻦ ﻧﯿﺰ

ﺑﻪ ﻋﻨﻮان ﻣﺜﺎﻟ از ﺗﺰرﯾﻖ ﮐﻮر ﺗﻠﻘ ﻣ ﺷﻮد. ﺑﻪ ﻃﻮر ﮐﻠ ﻫﺮ ﺗﺰرﯾﻘ ﮐﻪ ﻧﺘﺎﯾﺞ

110

درﺧﻮاﺳﺖ آن ﻣﺴﺘﻘﯿﻤﺎ ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ داده ﻧﺸﻮد، ﺗﺰرﯾﻖ ﮐﻮر ﻧﺎﻣﯿﺪه ﻣ -

ﺷﻮد.

ﺗﺰرﯾﻖ ﮐﻮر، ﻧﻔﻮذﮔﺮ را ﺑﻪ ﺑﺎزی ٢٠ ﺳﻮاﻟ وا ﻣ دارد. ﻫﺮ ﺑﺎر ﮐﻪ ﻧﻔﻮذﮔﺮ ﺗﺰرﯾﻖ ﻣ -

ﮐﻨﺪ، در ﺻﻮرﺗ ﮐﻪ ﯾ اﺗﻔﺎق ﺑﯿﺎﻓﺘﺪ ﭘﺎﺳ ﺑﻠﻪ و در ﺻﻮرﺗ ﮐﻪ اﺗﻔﺎق دﯾ ﺮ ﺑﯿﺎﻓﺘﺪ

ﭘﺎﺳ ﺧﯿﺮ درﯾﺎﻓﺖ ﺷﺪه اﺳﺖ. ﺑﺎ اﺳﺘﻔﺎده از ﺗﻘﺴﯿﻢ دودوﯾﯽ ﺣﺎﻟﺖ ﻣﻘﺼﺪ ﺑﺎ ﺗﻌﺪاد

درﺧﻮاﺳﺖ ﺑﺎﻻ ﺑﺎ ﻫﻤﯿﻦ ﺗﺰرﯾﻖ ﮐﻮر ﻧﯿﺰ ﻣ ﺗﻮان ﺑﻪ ﻫﻤﻪ دادهﻫﺎی ﯾ ﭘﺎﯾ ﺎه داده

دﺳﺖ ﯾﺎﻓﺖ.

ﻧﮑﺘﻪ اﺻﻠ در آﻧﺠﺎﺳﺖ ﮐﻪ ﺗﺰرﯾﻖ ﮐﻮر ﺗﻮﺳﻂ ﻧﺮماﻓﺰارﻫﺎی اﺗﻮﻣﺎﺗﯿ اﻧﺠﺎم ﻣ ﺷﻮد

(ﺑﻪ دﻟﯿﻞ ﺗﻌﺪاد درﺧﻮاﺳﺖ ﻣﻮرد ﻧﯿﺎز ﺑﺎﻻ) و اﯾﻨﮑﺎر ﺑﺮ روی ﺳﺮور اﯾﺠﺎد ﮔﺰارﺷ

ﻣﻔﺼﻞ ﻣ ﮐﻨﺪ ﮐﻪ در ﺻﻮرت ﺑﺮرﺳ ﻣﺪﯾﺮان ﺳﺮور ﮐﺸﻒ و ﻣﺸﺨﺺ ﻣ ﺷﻮد.

ﻫﻤﭽﻨﯿﻦ ﺑﺎ اﺳﺘﻔﺎده از درﺧﻮاﺳﺖﺪﻨﻧﺎ ﯽﯾﺎﻫ Benchmark ﻣ ﺗﻮان ﺗﺰرﯾﻖ ﮐﻮر را

ﻪﺑ ﺮ ﻨﻣ DOS ﺷﺪن ﺳﯿﺴﺘﻢ ﮐﺮد. اﯾﻦ درﺧﻮاﺳﺖﻫﺎ، ﯾ ﻋﻤﻠﯿﺎت را ﻣﯿﻠﯿﻮنﻫﺎ ﺑﺎر

ﺑﺮای ﺳﻨﺠﺶ ﺳﺮﻋﺖ ﺗﮑﺮار ﻣ ﺪﻨﻨﮐ.

٣٬٢٬١٬٢ ﺗﺰرﯾﻖ ﻋﺎدی

ﺗﺰرﯾﻖ ﻣﻌﻤﻮﻟ ﻧﺎم ﺧﺎﺻ ﺑﺮای ﺧﻮد ﻧﺪارد. اﯾﻦ ﺗﺰرﯾﻖ، ﺗﻤﺎم ﭘﺎﺳ ﻫﺎی ﻣﻮﺟﻮد را

ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ. ﻧﮑﺘﻪ اﺻﻠ در اﻧﺠﺎم دادن ﺗﺰرﯾﻖ ﻣﻌﻤﻮﻟ (ﮐﻪ

ﮐﻤﯿﺎبﺗﺮ اﺳﺖ) آﻧﺴﺖ ﮐﻪ ﻧﻔﻮذﮔﺮ ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﺷﻤﺎی ﮐﻠ ﯾ درﺧﻮاﺳﺖ را ﺗﺸﺨﯿﺺ

دﻫﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ ﺑﻪ آن ﻧﻔﻮذ ﮐﻨﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل درﺧﻮاﺳﺖ زﯾﺮ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ

ﺗﻌﺪادی ﻣﺤﺼﻮل در ﯾ ﻓﺮوﺷ ﺎه را ﭘﺲ از ﺟﺴﺘﺠﻮ ﺑﺎر ﻣ ﺪﻨﮐ:

SELECT Name, Category, Image

111

WHERE Name LIKE ‘%$1%’

FROM Product ORDER BY AddTime LIMIT 10,20

ﺳﭙﺲ ﮔﺮوه، ﺗﺼﻮﯾﺮ و ﻧﺎم ﻫﺮ ﻣﺤﺼﻮل را ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ. در

ﺻﻮرﺗ ﮐﻪ ﻧﻔﻮذﮔﺮ، ﻋﺒﺎرت or 1=’1 ’1 را در درﺧﻮاﺳﺖ ﺑﺎﻻ ﺗﺰرﯾﻖ ﮐﻨﺪ، ﺗﻨﻬﺎ اﺗﻔﺎﻗ

ﮐﻪ ﻣﯿﺎﻓﺘﺪ آﻧﺴﺖ ﮐﻪ ﺗﻤﺎم ﻣﺤﺼﻮﻻت اﻧﺘﺨﺎب ﻣ ﺷﻮﻧﺪ، ﮐﻪ در ﺣﺎﻟﺖ ﻋﺎدی ﻧﯿﺰ ﻗﺎﺑﻞ

اﻧﺠﺎم اﺳﺖ. در اﯾﻨﺠﺎ ﻧﻔﻮذﮔﺮ ﻗﺼﺪ دارد اﻃﻼﻋﺎت دﯾ ﺮ ﺟﺪاول ﺳﯿﺴﺘﻢ (ﻣﺜﻞ ﺟﺪول

ﮐﺎرﺑﺮان ﯾﺎ ﺣﺴﺎبﻫﺎی ﺑﺎﻧﮑ ) را اﺳﺘﺨﺮاج ﻧﻤﺎﯾﺪ ﯾﺎ ﺣﺘ ﻧﺎم ﮐﺎرﺑﺮی ﺳﯿﺴﺘﻢ ﭘﺎﯾ ﺎه

داده را ﮐﺸﻒ ﮐﻨﺪ ﮐﻪ ﻧﯿﺎزﻣﻨﺪ ﺗﮑﻨﯿ زﯾﺮ اﺳﺖ.

٣٬٢٬١٬٢٬١ Union Bypassing در اﯾﻨﮕﻮﻧﻪ ﺳﻨﺎرﯾﻮﻫﺎ، ﻧﻔﻮذﮔﺮ ﺑﺎﯾﺪ از ﺗﮑﻨﯿ ﮔﺬر اﺟﺘﻤﺎﻋ اﺳﺘﻔﺎده ﮐﻨﺪ.

اﺟﺘﻤﺎع ﯾ از ﻋﻤﻠ ﺮﻫﺎی ﺳﯿﺴﺘﻢ ﭘﺎﯾ ﺎه داده اﺳﺖ ﮐﻪ دو ﻣﺠﻤﻮﻋﻪ را اﺟﺘﻤﺎع

ﻣ ﮔﯿﺮد. در ﻣﺜﺎل ﻓﻮق در ﺻﻮرﺗ ﮐﻪ ﻧﻔﻮذﮔﺮ ﻋﺒﺎرت زﯾﺮ را درج ﮐﻨﺪ اﯾﻦ ﺗﮑﻨﯿ

ﻣﻮﻓﻖ ﻋﻤﻞ ﮐﺮده اﺳﺖ:

1’ and 1=0 union select 1,2,3 ; - -

درج ﻋﺒﺎرت ﺑﺎﻻ، درﺧﻮاﺳﺖ را ﺑﻪ درﺧﻮاﺳﺖ زﯾﺮ ﺗﻘﻠﯿﻞ ﻣ دﻫﺪ:

SELECT Name, Category, Image FROM Product

WHERE Name LIKE ‘%1’ and 1=0

UNION SELECT 1,2,3 ; - -

%’ ORDER BY AddTime LIMIT 10,20

112

از آﻧﺠﺎﯾﯽ ﮐﻪ ﻋﻤﻠ ﺮ دو ﺧﻂ ﻓﺎﺻﻠ (- -) در MySQL ﺑﻪ ﻣﻌﻨ

ﺗﻮﺿﯿﺤﺎت در اداﻣﻪ اﺳﺖ، ﻗﺴﻤﺖﻫﺎﯾﯽ از درﺧﻮاﺳﺖ ﮐﻪ ﭘﺲ از آن ذﮐﺮ ﺷﺪه اﻧﺪ

ﻟﺤﺎظ ﻧﻤ ﺷﻮﻧﺪ. در واﻗ درﺧﻮاﺳﺖ ﻓﻮق ﻣ ﮔﻮﯾﺪ از ﻣﺤﺼﻮﻻت آﻧﻬﺎﯾﯽ را اﻧﺘﺨﺎب

ﮐﻦ ﮐﻪ ﻧﺎﻣﺸﺎن ﺷﺒﯿﻪ ﯾ ﺑﺎﺷﺪ و ﯾ ﻣﺴﺎوی ﺻﻔﺮ ﺑﺎﺷﺪ، ﮐﻪ اﯾﻦ ﺷﺮط ﻫﯿﭽ ﺎه

ﺑﺮﻗﺮار ﻧﯿﺴﺖ. ﺳﭙﺲ در ﻗﺴﻤﺖ دوم ﻣ ﺪﯾﻮﮔ ١و٢و٣ را اﻧﺘﺨﺎب ﮐﻦ. ﺣﺎﺻﻞ ﮐﻠ

اﯾﻦ درﺧﻮاﺳﺖ ﯾ رﮐﻮرد ١و٢و٣ اﺳﺖ ﮐﻪ ﺑﺮ روی ﺻﻔﺤﻪ دﯾﺪه ﻣ ﺷﻮد (١ ﻪﺑ

ﺟﺎی ﻧﺎم ﻣﺤﺼﻮل، ٢ ﺑﻪ ﺟﺎی دﺳﺘﻪ آن و ٣ ﺑﻪ ﺟﺎی ﺗﺼﻮﯾﺮ آن)

ﻫﺮﭼﻨﺪ درﺧﻮاﺳﺖ ﻓﻮق ﻫﯿﭻ ﮐﺎرﺑﺮدی ﻧﺪارد، اﻫﻤﯿﺖ آن در اﯾﻨﺴﺖ ﮐﻪ

ﻧﻔﻮذﮔﺮ ﻣﺘﻮﺟﻪ ﻣ ﺷﻮد ﺗﺰرﯾﻖ وی ﺑﻪ درﺳﺘ ﮐﺎر ﮐﺮده و ﺣﺎﺻﻞ ﺗﺰرﯾﻖ ﺑﺮ روی

ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ داده ﺷﺪه اﺳﺖ. ﺣﺎل ﮐﺎﻓﯿﺴﺖ ﻧﻔﻮذﮔﺮ در اداﻣﻪ، ﻗﺴﻤﺖ

SELECT 1,2,3

را ﺑﺎ ﻫﺮ درﺧﻮاﺳﺖ SELECT دﯾ ﺮی ﮐﻪ دوﺳﺖ دارد ﺟﺎﯾ ﺰﯾﻦ ﮐﻨﺪ.

ﻼﺜﻣ

SELECT Username,Password,3 FROM users

SELECT DatabaseName(),User(),3

ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ از آﻧﺠﺎﯾﯽ ﮐﻪ ﺳﻮﻣﯿﻦ ﻓﯿﻠﺪ ﺗﺼﻮﯾﺮ ﻣ ﺷﻮد،

ﻗﺮاردادن ﻓﯿﻠﺪ ﺻﺤﯿﺢ در آن ﻓﺎﯾﺪهای ﻧﺪارد.

ﻣﻬﻤﺘﺮﯾﻦ ﻧﮑﺘﻪ در ﮔﺬر اﺟﺘﻤﺎﻋ ، ﺗﺸﺨﯿﺺ درﺳﺖ ﺗﻌﺪاد ﻓﯿﻠﺪﻫﺎی

درﺧﻮاﺳﺖ ﺷﺪه اﺳﺖ. اﮔﺮ در ﻣﺜﺎل ﻓﻮق، ﺑﺮﻧﺎﻣﻪ اﺻﻠ ﺑﻪ ﺟﺎی ٣ ﻓﯿﻠﺪ، ﭼﻬﺎر ﻓﯿﻠﺪ

113

را درﺧﻮاﺳﺖ ﮐﺮده ﺑﻮد، ﺗﺰرﯾﻖ ﻣﺎ درﺳﺖ ﮐﺎر ﻧﻤ ﮐﺮد. در اﺟﺘﻤﺎع ﻫﺮ دو ﻣﺠﻤﻮﻋﻪ

ﺑﺎﯾﺪ از ﯾ ﺷ ﻞ ﺑﺎﺷﻨﺪ.

اﯾﻨﮑﺎر ﻧﯿﺰ ﺑﺎ ﺗﺴﺖ ﺗﻌﺪاد ﻓﯿﻠﺪﻫﺎی ﻣﺨﺘﻠﻒ ﺑﻪ ﺳﺎدﮔ اﻧﺠﺎم ﻣ ﺷﻮد. در

ﺑﺮﺧ از ﺳﻨﺎرﯾﻮﻫﺎ ﺑﯿﺶ از ٢٠ ﺪﻠﯿﻓ اﻧﺘﺨﺎب ﺷﺪه ﮐﻪ ﺑﺎز ﻫﻢ ﺑﺎ اﺳﺘﻔﺎده از اﺑﺰار

اﺗﻮﻣﺎﺗﯿ ﺑﻪ ﺳﺎدﮔ ﻗﺎﺑﻞ ﺗﺴﺖ ﺷﺪن اﺳﺖ.

٣٬٢٬١٬٢٬٢ رﺧﻨﻪ ﺑﻪ ﺳﯿﺴﺘﻢ

اﮐﺜﺮ ﻣﻮاردی ﮐﻪ ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ رخ ﻣ دﻫﺪ، در درﺧﻮاﺳﺖﻫﺎی SELECT

اﺳﺖ. اﮔﺮ در درﺧﻮاﺳﺖﻫﺎی دﯾ ﺮ ﺑﺘﻮاﻧﯿﻢ ﺗﺰرﯾﻖ ﮐﻨﯿﻢ، اﯾﺠﺎد ﺧﻄﺮ ﺑﯿﺸﺘﺮی ﺑﺮای

ﺳﯿﺴﺘﻢ ﺧﻮاﻫﺪ ﮐﺮد زﯾﺮا دادهﻫﺎی آﻧﺮا ﺗﻐﯿﯿﺮ داده ﯾﺎ ﭘﺎک ﻣ ﻢﯿﻨﮐ.

ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ درﺧﻮاﺳﺖ ﺧﺎص، ﻧﻤ ﺗﻮان آﺳﯿﺒﯽ ﺑﻪ ﺳﯿﺴﺘﻢ رﺳﺎﻧﺪ، وﻟ

ﻣﺮﺣﻠﻪ ﺑﻌﺪی ﮐﺸﻒ اﻃﻼﻋﺎت ﺣﺴﺎس ﺳﯿﺴﺘﻢ اﺳﺖ. اوﻟﯿﻦ ﻗﺪم، ﮐﺸﻒ دﺳﺘﺮﺳ

ﮐﺎرﺑﺮﯾﺴﺖ ﮐﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺎ اﺳﺘﻔﺎده از آن ﺑﻪ ﭘﺎﯾ ﺎه داده ﻣﺘﺼﻞ ﺷﺪه اﺳﺖ. اﮔﺮ اﯾﻦ

ﮐﺎرﺑﺮ root ﺑﺎﺷﺪ، و دﺳﺘﺮﺳ از دور ﺑﻪ ﺳﯿﺴﺘﻢ داده ﺷﺪه ﺑﺎﺷﺪ، ﺑﻪ ﺳﺎدﮔ ﺑﻪ

ﭘﺎﯾ ﺎه داده ﺳﺮور اﺗﺼﺎل ﻣﺴﺘﻘﯿﻢ ﺑﺮﻗﺮار ﻣ ﮐﻨﯿﻢ و ﻫﺮﮐﺎری ﺧﻮاﺳﺘﯿﻢ اﻧﺠﺎم ﻣ -

دﻫﯿ ﻢ .

در ﺻﻮرﺗ ﮐﻪ ﮐﺎرﺑﺮ ﭘﺎﯾ ﺎه ﻣﺤﺪود ﺑﺎﺷﺪ، ﺑﻪ ﺳﺮاغ ﮐﺎرﺑﺮان ﺳﯿﺴﺘﻢ ﻣ روﯾﻢ.

اﺳﺘﺎﻧﺪارد در آﻧﺴﺖ ﮐﻪ رﻣﺰ ﻋﺒﻮر ﮐﺎرﺑﺮان ﺑﺎ ﯾ روش ﺧﺎص رﻣﺰ ﺷﺪه در ﺳﯿﺴﺘﻢ

ﻗﺮار ﮔﯿﺮد ﺗﺎ ﭘﺲ از ﻧﻔﻮذ ﺑﻪ ﺳﯿﺴﺘﻢ اﻣ ﺎن ﺑﺎزﯾﺎﺑﯽ آن ﻧﺒﺎﺷﺪ، وﻟ ﺑﻪ دﻟﯿﻞ ﻋﺪم

آﮔﺎﻫ اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎ اﯾﻦ ﻣﻬﻢ را رﻋﺎﯾﺖ ﻧﻤ ﮐﻨﻨﺪ و ﻟﺬا ﯾﺎﻓﺘﻦ ﻋﺒﺎرت رﻣﺰ ﺷﺪه

ﯾ رﻣﺰ ﻋﺒﻮر، ﻣﻨﺠﺮ ﺑﻪ ﮐﺸﻒ ﺧﻮد رﻣﺰ ﻣ ﺷﻮد. ﭘﺲ از ﮐﺸﻒ رﻣﺰ ﮐﺎرﺑﺮان ﻣﺪﯾﺮ

ﺳﯿﺴﺘﻢ، ﻣ ﺗﻮاﻧﯿﻢ ﺑﺎ ورود ﺑﻪ ﺳﯿﺴﺘﻢ ﺑﺎ دﺳﺘﺮﺳ آﻧﻬﺎ، ﻫﻤﻪ ﮐﺎر اﻧﺠﺎم دﻫﯿﻢ. 114

در ﺻﻮرﺗ ﮐﻪ ﺑﺎز ﻫﻢ ﻣ ﺎﻧﯿﺰم ﮐﺎﻣﻠ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه ﺑﻮد، ﺑﺎ رﻓﺘﻦ ﺑﻪ ﺳﺮاغ

ﺟﺪول ﻧﺸﺴﺖﻫﺎ، اﻗﺪام ﺑﻪ ﺳﺮﻗﺖ ﻧﺸﺴﺖ ﻣ ﮐﻨﯿﻢ.

راه دﯾ ﺮ اﺳﺘﻔﺎده از اﻃﻼﻋﺎت ﺣﺴﺎس و ﻣﺪﯾﺮﯾﺖ ﻫﺮ ﺳﯿﺴﺘﻢ اﺳﺖ. ﻫﻤﻪ

ﺳﯿﺴﺘﻢﻫﺎ اﻃﻼﻋﺎت ﺧﻮد را ﻣﺤﺮﻣﺎﻧﻪ ﺗﻠﻘ ﻣ ﮐﻨﻨﺪ. ﻣﺜﻼ ﭘﯿﺎمﻫﺎﯾﯽ ﮐﻪ ﺑﯿﻦ

ﮐﺎرﺑﺮان رد و ﺑﺪل ﺷﺪه اﺳﺖ در ﭘﺎﯾ ﺎه داده ﻗﺎﺑﻞ دﺳﺘﺮﺳ اﺳﺖ.

ﺧﯿﻠ ﮐﻢ ﭘﯿﺶ ﻣ آﯾﺪ ﮐﻪ ﺳﯿﺴﺘﻤ ﺗﻤﺎﻣ راهﻫﺎی ﻓﻮق را ﺑﺴﺘﻪ ﺑﺎﺷﺪ، وﻟ

ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ را ﺑﺎز ﮔﺬاﺷﺘﻪ ﺑﺎﺷﺪ، ﻟﺬا اﯾﻦ ﺳﻨﺎرﯾﻮ را ﺑﯿﺸﺘﺮ ﺑﺮرﺳ ﻧﻤ ﮐﻨﯿﻢ.

ﺷﻞ ٦٦ ﺗﺼﻮﯾﺮ ﻧﻤﺎدﯾﻦ ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ

٣٬٢٬٢ ﺗﺰرﯾﻘﺎت دﯾﺮ

ﺑﻪ ﻏﯿﺮ از ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ ﭘﺎﯾ ﺎﻫ ، ﭼﻨﺪﯾﻦ ﻧﻮع ﺗﺰرﯾﻖ دﯾ ﺮ ﻧﯿﺰ وﺟﻮد دارد. ﺑﻪ

ﻋﺒﺎرت دﻗﯿﻖﺗﺮ، ﻫﺮﺟﺎﯾﯽ ﮐﻪ رﺷﺘﻪ دادهای ﮐﻪ ﻗﺴﻤﺘ از آن از ﮐﺎرﺑﺮ ﮔﺮﻓﺘﻪ ﺷﺪه، ﺑﻪ ﻧﺮم-

اﻓﺰار ﺛﺎﻟﺜ ﺑﺮای اﺟﺮا ارﺳﺎل ﻣ ﺷﻮد، اﻣ ﺎن ﺗﺰرﯾﻖ ﻓﺮاﻫﻢ ﻣ ﺷﻮد.

ﺗﺰرﯾﻘﺎت ﻣﻬﻢ ﺑﻪ ﺷﺮح زﯾﺮ ﻫﺴﺘﻨﺪ:

115

٣٬٢٬٢٬١ ﺗﺰرﯾﻖ ﺑﻪ ﮐﻨﺴﻮل

ﮐﻨﺴﻮل، واﺳﻂ ﮐﺎرﺑﺮی ﺳﺎده ﯾ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ اﺳﺖ. ﺑﺴﯿﺎری از ﻧﺮماﻓﺰارﻫﺎ ﺑﺮای

ﮐﺎرﻫﺎی روزﻣﺮه ﺧﻮد، ﺗﮑﻪ ﮐﺪی را در ﮐﻨﺴﻮل اﺟﺮا ﻣ ﮐﻨﻨﺪ. ﺑﺎ اﯾﻨﮑﺎر درواﻗ از

اﻣ ﺎﻧﺎت ﻫﺰاران ﺑﺮﻧﺎﻣﻪ ﻗﺪرﺗﻤﻨﺪ دﯾ ﺮ ﺑﻬﺮه ﻣ ﺪﻧﺮﯿﮔ.

ﻣﺜﻼ ﺳﯿﺴﺘﻢ آﻧﻼﯾﻨ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ ﯾ ﻗﻄﻌﻪ ﮐﺪ از ﮐﺎرﺑﺮان ﻣ ﮔﯿﺮد، آﻧﺮا

ﮐﺎﻣﭙﺎﯾﻞ و اﺟﺮا ﻣ ﮐﻨﺪ و ﺣﺎﺻﻞ را ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ. اﯾﻦ ﺳﯿﺴﺘﻢ ﺑﺎ اﺳﺘﻔﺎده از

ﮐﻨﺴﻮل، داده ورودی ﮐﺎرﺑﺮ را ﺑﻪ ﺑﺮﻧﺎﻣﻪ gcc داده، ﺣﺎﺻﻞ را ﮔﺮﻓﺘﻪ اﺟﺮا ﮐﺮده و

ﺧﺮوﺟ ﮐﻨﺴﻮل را ﺑﻪ ﮐﺎرﺑﺮ ﻧﻤﺎﯾﺶ ﻣ دﻫﺪ.

ﺣﺎل اﮔﺮ ﮐﺎرﺑﺮی ﺑﻪ ﺟﺎی ﻧﺎم ﻓﺎﯾﻞ ﺑﺮﻧﺎﻣﻪ ﺧﻮد، اﯾﻦ ﻧﺎم را ﺑﺮﮔﺰﯾﻨﺪ ﮐﻞ دادهﻫﺎی

ﺳﯿﺴﺘﻢ ﭘﺎک ﻣﯿﺸﻮد:

Foo | rm –rf /

اﻟﺒﺘﻪ ﺑﺎﯾﺪ ﺗﻮﺟﻪ داﺷﺖ ﮐﻪ دﺳﺘﺮﺳ ﮐﺎرﺑﺮ وب ﺳﺮور ﻣﺤﺪو د اﺳﺖ و اﻣ ﺎن ﭘﺎک

ﮐﺮدن ﻫﻤﻪ ﻓﺎﯾﻠﻬﺎ را ﻧﺪارد وﻟ آﺳﯿﺐ ﺟﺪی ﺑﻪ ﺳﯿﺴﺘﻢ ﺧﻮاﻫﺪ رﺳﺎﻧﺪ.

٣٬٢٬٢٬٢ ﺗﺰرﯾﻖ ﮐﺪ

ﺗﻘﺮﯾﺒﺎ ﻫﻤﻪ زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ اﻣﺮوزی ﻣﻔﺴﺮی ﻫﺴﺘﻨﺪ. زﺑﺎنﻫﺎی ﻣﻔﺴﺮی در

اﺟﺮا ﮐﻨﺪﺗﺮ ﻫﺴﺘﻨﺪ، وﻟ اﻣ ﺎﻧﺎت ﻗﺎﺑﻞ ﻣﻼﺣﻈﻪای دارﻧﺪ ﮐﻪ زﺑﺎنﻫﺎی ﻣﺘﺮﺟﻤ

ﻧﺪارﻧﺪ. ﯾ از اﯾﻦ اﻣ ﺎﻧﺎت، اﺟﺮای ﯾ رﺷﺘﻪ در ﺑﺴﺘﺮ زﺑﺎن اﺳﺖ. ﻣﺜﻼ ﻣ ﺗﻮان ﯾ

ﺪﮐ ﻪ ﻄﻗ PHP از ﮐﺎرﺑﺮ ﮔﺮﻓﺖ و آﻧﺮا ﺗﻮﺳﻂ دﺳﺘﻮر Eval در ﻗﺎﻟﺐ ﺑﺮﻧﺎﻣﻪ اﺟﺮا ﮐﺮده،

ﺣﺎﺻﻞ آﻧﺮا ﺑﻪ ﮐﺎرﺑﺮ ﺑﺎز ﮔﺮداﻧﺪ.

116

اﯾﻨﮑﺎر ﮐﺎرﺑﺮد زﯾﺎدی ﻧﺪارد، وﻟ در ﺻﻮرﺗ ﮐﻪ اﻧﺠﺎم ﺷﻮد، ﮐﺎرﺑﺮ ﻣ ﺗﻮاﻧﺪ اﻧﻮاع

ﮐﺪﻫﺎی ﻣﺨﺮب را ﺑﻪ ﺳﺎدﮔ ﺑﺮ روی ﺳﺮور اﺟﺮا ﻧﻤﺎﯾﺪ.

٣٬٢٬٢٬٣ ﺗﺰرﯾﻘﺎت دﯾﺮ

ﻫﻤﺎﻧﻄﻮر ﮐﻪ ذﮐﺮ ﺷﺪ، ارﺳﺎل داده ﺗﺎﺛﯿﺮ ﮔﺮﻓﺘﻪ از ﮐﺎرﺑﺮ ﺑﻪ ﻧﺮماﻓﺰار ﺛﺎﻟﺚ، اﻣ ﺎن

ﺗﺰرﯾﻖ را ﻓﺮاﻫﻢ ﻣ ﺘﮐ . ﻨﮐﻪﻧﺎﺨﺑﺎﻫﺎ و ﻧﺮماﻓﺰارﻫﺎﯾﯽ ﻣﺎﻧﻨﺪ LDAP, Xpathو ﻏﯿﺮه در

ﻣﻘﺎﺑﻞ اﯾﻦ ﻧﮑﺘﻪ آﺳﯿﺐ ﭘﺬﯾﺮ ﻫﺴﺘﻨﺪ.

٣٬٢٬٣ اﺳﺮﯾﭗﺴﯾﻮﻧ ﺘﯾﺎ ﻦﯿﺑ

اﯾﻦ ﺣﻤﻠﻪ ﮐﻪ ﺑﻪ اﺧﺘﺼﺎر Cross Site Scripting) XSS) ﻧﺎﻣﯿﺪه ﻣ ﺷﻮد، ﺣﻤﻠﻪ

ﺑﺴﯿﺎر ﺧﻄﺮﻧﺎﮐﯿﺴﺖ ﮐﻪ از رﺗﺒﻪ اول ﻟﯿﺴﺖ ٢٠٠٧ ﺑﻪ رﺗﺒﻪ دوم ﻟﯿﺴﺖ ٢٠١٠ ﻧﺰول داﺷﺘﻪ

اﺳﺖ، اﻣﺎ اﺳﺘﻔﺎده از آن اﺻﻼ ﮐﺎﻫﺶ ﻧﯿﺎﻓﺘﻪ اﺳﺖ.

وﯾﮋﮔ اﺻﻠ اﯾﻦ ﺣﻤﻠﻪ، ﺑﺴﯿﺎر دﺷﻮار ﺑﻮدن ﻣﻘﺎﺑﻠﻪ ﺑﺎ آن اﺳﺖ و ﺗﻨﻮع ﺑﺴﯿﺎری ﮐﻪ دارا

اﺳﺖ. ﺑﺴﯿﺎری از ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن و ﺣﺘ ﻧﻔﻮذﮔﺮان ﺑﻪ ﺧﻮﺑﯽ ﺑﺎ اﯾﻦ ﺣﻤﻠﻪ آﺷﻨﺎ ﻧﯿﺴﺘﻨﺪ وﻟ

ﺑﺴﯿﺎری از وﯾﺮوﺳﻬﺎ و ﮐﺮمﻫﺎ و ﺑﺪاﻓﺰارﻫﺎ اﻣﺮوزه ﺗﻮﺳﻂ اﯾﻦ ﺣﻤﻠﻪ ﻣﻨﺘﺸﺮ ﻣ ﺪﻧﻮﺷ.

ﺑﺮای آﺷﻨﺎﯾﯽ ﺑﯿﺸﺘﺮ ﺑﺎ اﯾﻦ ﺣﻤﻠﻪ، ﺑﺎﯾﺪ داﻧﺴﺖ ﮐﻪ ﺟﺎواﺳ ﺮﯾﭙﺘ ﮐﻪ در ﯾ ﺻﻔﺤﻪ

وب اﺟﺮا ﻣ ﺷﻮد، ﺗﺤﺖ ﻗﺎﻧﻮن Same Origin Policy) SOP) ﺗﻨﻬﺎ اﺟﺎزه ارﺳﺎل

درﺧﻮاﺳﺖ و درﯾﺎﻓﺖ ﭘﺎﺳ از ﺳﺮوری را دارد ﮐﻪ ﺳﺎﯾﺖ از آن ﻟﻮد ﺷﺪه اﺳﺖ. ﺑﻪ ﻋﻨﻮان

ﻣﺜﺎل اﮔﺮ ﺷﻤﺎ ﯾ اﺳ ﺮﯾﭙﺖ ﺑﺮ روی ﺳﺎﯾﺖ abiusx.com داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﺑﺮ روی

ﮐﺎوﺷ ﺮ ﮐﺎرﺑﺮ ﺑﺎر ﺷﻮد، و ﻗﺼﺪ آژاﮐﺲ زدن ﺑﻪ download.com داﺷﺘﻪ ﺑﺎﺷﺪ، ﻓﻌﺎﻟﯿﺖ آن

ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮ ﺑﻪ دﻻﯾﻞ اﻣﻨﯿﺘ ﻣﺘﻮﻗﻒ ﻣ ﺷﻮد.

117

اﯾﻦ ﻗﺎﻧﻮن ﺑﺮای ﺟﻠﻮﮔﯿﺮی از دﺳﺘﺮﺳ اﺳ ﺮﯾﭙﺖﻫﺎی ﻣﺨﺮب ﺑﻪ دادهﻫﺎی ﯾ ﮐﺎرﺑﺮ

در ﯾ ﺳﺎﯾﺖ اﺳﺖ، ﻣﺜﻼ اﮔﺮ اﯾﻦ ﻗﺎﻧﻮن وﺟﻮد ﻧﺪاﺷﺖ، ﺷﻤﺎ ﺑﺎ درج ﯾ اﺳ ﺮﯾﭙﺖ ﻣﺨﺮب

در ﯾ ﺳﺎﯾﺖ ﻣ ﺗﻮاﻧﺴﺘﯿﺪ ﺗﻤﺎم اﻃﻼﻋﺎت ﺻﻔﺤﻪ آﻧﺮا داﺷﺘﻪ ﺑﺎﺷﯿﺪ (ﮐﻪ ﺑﺮای ﻫﺮ ﮐﺎرﺑﺮی،

ﺧﺎص ﺑﺎر ﻣ ﺷﻮد).

ﻧﮑﺘﻪ ﻗﺎﺑﻞ ﺗﻮﺟﻪ آﻧﺴﺖ ﮐﻪ SOP ﺑﺮای درﺧﻮاﺳﺖ و ﭘﺎﺳ ﻣﻄﺮح اﺳﺖ، وﻟ ارﺳﺎل

ﯾ درﺧﻮاﺳﺖ ﺑﻪ ﻫﺮ ﺳﺮوری ﻣﻤ ﻦ اﺳﺖ، ﺷﻤﺎ ﺗﻨﻬﺎ ﻧﻤ ﺗﻮاﻧﯿﺪ ﭘﺎﺳ آﻧﺮا داﺷﺘﻪ ﺑﺎﺷﯿﺪ

(ﮐﻪ آن ﻫﻢ ﺑﺎ روش JSONP ﻗﺎﺑﻞ دور زدن اﺳﺖ)

XSS ﻋﺒﺎرت اﺳﺖ از درج ﯾ ﺗﮑﻪ ﮐﺪ ﺟﺎواﺳ ﺮﯾﭙﺖ در ﭘﺎﯾ ﺎه داده ﯾ ﺳﯿﺴﺘﻢ

ﺗﻮﺳﻂ ﻧﻔﻮذﮔﺮ، ﺑﻪ ﻃﻮری ﮐﻪ اﯾﻦ اﺳ ﺮﯾﭙﺖ ﺑﺮ روی ﮐﺎوﺷ ﺮ دﯾ ﺮ ﮐﺎرﺑﺮان ﺑﺎر ﺷﻮد. در

واﻗ اﺳ ﺮﯾﭙﺘﯿﻨﮓ ﺑﯿﻦ ﺳﺎﯾﺘ ، ﯾﻌﻨ اﺳ ﺮﯾﭙﺘ ﮐﻪ ﺗﻮﺳﻂ ﯾ ﮐﺎرﺑﺮ اﺿﺎﻓﻪ ﻣ ﺷﻮد، وﻟ

ﺗﻮﺳﻂ ﮐﺎرﺑﺮ دﯾ ﺮی اﺟﺮا ﻣ ﺷﻮد.

ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺳﺎﯾﺖ ﻣﺤﺒﻮب ﻓﯿﺲ ﺑﻮک را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ. ﻫﺮ ﮐﺎرﺑﺮی اﻣ ﺎن درج

داده دراﯾﻦ ﺳﺎﯾﺖ را دارد. اﮔﺮ ﻣ ﺎﻧﯿﺰمﻫﺎی ﻣﻘﺎﺑﻠﻪ ﺑﺎ XSS در اﯾﻦ ﺳﺎﯾﺖ وﺟﻮد ﻧﺪاﺷﺘﻪ

ﺑﺎﺷﺪ، ﺷﻤﺎ ﺑﻪ ﺳﺎدﮔ ﺑﻪ ﺟﺎی ﻧﻈﺮ ﮔﺬاﺷﺘﻦ ﺑﺮای دﯾ ﺮان، ﻋﺒﺎرت زﯾﺮ را ﻣ ﻪﮐ ﺪﯿﺴ ﻮﻧ

ﺑﺎﻋﺚ اﺟﺮا ﺷﺪن ﯾ اﺳ ﺮﯾﭙﺖ و دزدﯾﺪه ﺷﺪن ﺷﻤﺎره ﻧﺸﺴﺖ آﻧﻬﺎ ﻣ ﺷﻮد:

ﺑﺎ اﺟﺮا ﺷﺪن اﺳ ﺮﯾﭙﺖ ﻓﻮق، ﮐﻞ ﮐﻮﮐ ﻫﺎی ﮐﺎرﺑﺮی ﮐﻪ آﻧﺮا اﺟﺮا ﮐﺮده، ﺑﺪون آﻪﮑﻧ

ﻣﺘﻮﺟﻪ ﺷﻮد ﺑﺮای ﻧﻔﻮذﮔﺮ ارﺳﺎل ﻣ ﺷﻮد و اﻣ ﺎن دزدی ﻧﺸﺴﺖ را ﻓﺮاﻫﻢ ﻣ ﺪﻨﮐ.

ﻫﻤﭽﻨﯿﻦ ﻧﻔﻮذﮔﺮ ﻣ ﺗﻮاﻧﺪ ﺑﺪون آﮔﺎﻫ ﮐﺎرﺑﺮ ﻧﺴﺒﺖ ﺑﻪ ﺧﺮﯾﺪ، درج ﻣﻄﺎﻟﺐ، ﺣﺬف ﻣﻄﺎﻟﺐ

و دﯾ ﺮ ﮐﺎرﻫﺎ ﺗﻮﺳﻂ اﺳ ﺮﯾﭙﺖ اﻗﺪام ﻧﻤﺎﯾﺪ.

118

ﺷﻞ ٦٧ ﺗﺼﻮﯾﺮ ﻧﻤﺎدﯾﻦ XSS

دو ﻧﻮع ﺣﻤﻠﻪ XSS وﺟﻮد دارد:

٣٬٢٬٣٬١ XSS ذﺧﯿﺮه ﺷﺪه

اﯾﻦ ﺣﻤﻠﻪ، ﻫﻤﺎﻧﮕﻮﻧﻪ ﮐﻪ در ﺑﺎﻻ ﺗﻮﺿﯿﺢ داده ﺷﺪ، ﺗﻮﺳﻂ ذﺧﯿﺮه ﯾ

اﺳ ﺮﯾﭙﺖ ﻣﺨﺮب در ﭘﺎﯾ ﺎهداده ﺳﺮور و اﺟﺮا ﺷﺪن آن ﺑﺮ روی ﺳﯿﺴﺘﻢ ﮐﺎرﺑﺮان آن

ﺳﺮور اﻧﺠﺎم ﻣ ﺷﻮد.

اﯾﻦ ﺣﻤﻠﻪ ﺑﺴﯿﺎر ﻣﺨﺮب اﺳﺖ و ﺑﺪون اﯾﻨﮑﻪ ﮐﺎرﺑﺮ ﻣﺘﻮﺟﻪ ﺷﻮد ﺑﻪ ﺳﺎدﮔ ﺑﻪ

دﺳﺘﮑﺎری و ﺳﺮﻗﺖ اﻃﻼﻋﺎت ﻣ ﭘﺮدازد. ﻫﻤﭽﻨﯿﻦ در ﺻﻮرﺗ ﻫﻮﺷﻤﻨﺪ ﺑﻮدن ﮐﺎﻓ ،

ﻣ ﺗﻮاﻧﺪ ﺧﻮد را ﺗﻮﺳﻂ ﮐﺎﺑﺮان در ﺳﺎﯾﺖﻫﺎی ﻣﺨﺘﻠﻒ ﮔﺴﺘﺮش دﻫﺪ و ﻫﻤﻪ را آﻟﻮده

ﮐﻨﺪ.

٣٬٢٬٣٬٢ XSS ﻣﻨﻌﮑﺲ ﺷﺪه

اﯾﻦ ﺣﻤﻠﻪ ﮐﻪ ﺑﺎ ﻧﺎم Reflected XSS ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮد، ﺗﻮﺳﻂ ﺑﺴﯿﺎری از اﻓﺮادی

ﮐﻪ از XSS آﮔﺎﻫ دارﻧﺪ ﻧﯿﺰ ﻧﺎﺷﻨﺎﺧﺘﻪ ﻣﺎﻧﺪه اﺳﺖ. ﺑﺎور ﻋﻤﻮﻣ ﺑﺮ آﻧﺴﺖ ﮐﻪ اﮔﺮ

119

ﺳﺎﯾﺘ ﻣﻄﺎﻟﺐ را ذﺧﯿﺮه ﻧﮑﻨﺪ، ﯾﺎ در ﻣﻄﺎﻟﺐ ذﺧﯿﺮه ﺷﺪه دﻗﺖ ﮐﻨﺪ و XSS ﺑﺮ روی

آﻧﻬﺎ اﻧﺠﺎم ﻧﺸﻮد، دﯾ ﺮ ﻣﺸ ﻞ XSS ﻧﺨﻮاﻫﺪ داﺷﺖ.

ﺑﻪ ﻋﻨﻮان ﯾ ﺳﻨﺎرﯾﻮی ﺑﺴﯿﺎر ﻣﺤﺘﻤﻞ ﻓﺮض ﮐﻨﯿﺪ ﯾ ﺳﺎﯾﺖ ﺻﻔﺤﻪای دارد ﮐﻪ

ﺧﻄﺎی ﯾﺎﻓﺘﻪ ﻧﺸﺪن ﻣﻄﺎﻟﺐ را ﻧﺸﺎن ﻣ دﻫﺪ. اﯾﻦ ﺻﻔﺤﻪ، ﻋﺒﺎرت درج ﺷﺪه در

ﻗﺴﻤﺖ آدرس ﮐﺎوﺷ ﺮ را ﺑﺮ روی ﺻﻔﺤﻪ ﭼﺎپ ﻣ ﮐﻨﺪ و در اداﻣﻪ ﻣ ﻧﻮﯾﺴﺪ ﮐﻪ اﯾﻦ

آدرس ﯾﺎﻓﺖ ﻧﺸﺪ ﯾﺎ وﺟﻮد ﻧﺪارد.

ﺣﺎل اﮔﺮ ﻧﻔﻮذﮔﺮی، آدرس زﯾﺮ را ﺑﺮای ﺷﻤﺎ ارﺳﺎل ﮐﻨﺪ و ﺷﻤﺎ روی آن ﮐﻠﯿ

ﮐﻨﯿﺪ، دﭼﺎر اﮐﺲ اس اس ﻣﻨﻌﮑﺲ ﺷﺪه ﻣ ﺷﻮﯾﺪ و ﺣﺴﺎب ﺷﻤﺎ ﺑﺪون اﯾﻨﮑﻪ ﺑﺪاﻧﯿﺪ

ﺖﻗ ﺳ ﻪﺑ ﻣ رود:

http://Site.com/

ﻫﻨﮕﺎﻣ ﮐﻪ ﺷﻤﺎ ﺑﺮ روی آدرس ﻓﻮق ﮐﻠﯿ ﻣ ﮐﻨﯿﺪ، ﺳﺮور ﻗﺼﺪ دارد ﺑﻪ

ﺷﻤﺎ ﺑ ﻮﯾﺪ آدرس ﯾﺎﻓﺖ ﻧﺸﺪ، و ﺑﻪ ﻫﻤﯿﻦ ﻣﻨﻈﻮر آدرس را ﭼﺎپ ﻣ ﮐﻨﺪ. ﭼﺎپ

ﺷﺪن اﯾﻦ آدرس ﻣﻨﺠﺮ ﺑﻪ ﺗﺒﺪﯾﻞ ﺷﺪن آن ﺑﻪ HTML ﺷﺪه، از آﻧﺠﺎﯾﯽ ﮐﻪ

ﺑﺮﭼﺴﺐ اﺳ ﺮﯾﭙﺖ اﺳﺖ، اﺟﺮا ﻣ ﺷﻮد. ﺷﻤﺎ ﻋﺒﺎرﺗ ﻣ ﺖﯾﺎﺳ ﮐ ﯿﻨﯿﺑ «ﺧﺎﻟ »

ﯾﺎﻓﺖ ﻧﺸﺪ، وﻟ در ﭘﺲ ﺻﺤﻨﻪ اﺳ ﺮﯾﭙﺖ اﺟﺮا ﺷﺪه و ﮐﺎر ﺧﻮد را ﮐﺮده اﺳﺖ.

اﯾﻦ ﺣﻤﻠﻪ ﻧﯿﺎزﻣﻨﺪ دﻗﺖ ﺑﺴﯿﺎر ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن اﺳﺖ ﺗﺎ ﻫﯿﭻ ﺧﺮوﺟ ای از

ﺳﯿﺴﺘﻢ ﺑﺪون ﺑﺮرﺳ ﺑﺮ روی ﺻﻔﺤﻪ ﻧﺮود.

120

ﺷﻞ ٦٨ ﻧﺴﺒﺖ ﺣﻤﻼت ﻣﺨﺘﻠﻒ در اﯾﻨﺘﺮﻧﺖ

٣٬٢٬۴ اﻧﻀﻤﺎم ﻓﺎﯾﻞ ﻣﺨﺮب

ﺣﻤﻠﻪ اﻧﻀﻤﺎم ﻓﺎﯾﻞ ﻣﺨﺮب (Malicious File Inclusion) ﺣﻤﻠﻪاﯾﺴﺖ ﮐﻪ در ﺳﺎل

٢٠٠٧ ﺑﻪ ﻋﻨﻮان ﺳﻮﻣﯿﻦ ﺣﻤﻠﻪ ﺧﻄﺮﻧﺎک ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺑﻮد، وﻟ در ﺳﺎل ٢٠١٠ از ﻟﯿﺴﺖ

اﺻﻠ ﺣﺬف ﺷﺪ. اﯾﻦ ﺣﻤﻠﻪ رﻓ ﻧﺸﺪه و ﺗﻨﻬﺎ در ﺣﻤﻠﻪ ﭼﻬﺎرم ﮔﻨﺠﺎﻧﯿﺪه ﺷﺪه اﺳﺖ.

ﺑﺴﯿﺎری از ﺳﯿﺴﺘﻢﻫﺎ، ﯾ ﻗﺎﻟﺐ ﮐﻠ ﻃﺮاﺣ ﮐﺮده و ﺑﺮای ﺻﻔﺤﺎت ﻣﺨﺘﻠﻒ دادهﻫﺎی

ﻣﺨﺘﻠﻒ درون ﻓﺎﯾﻠﻬﺎی ﻣﺨﺘﻠﻒ ﻣ ﭼﯿﻨﻨﺪ ﮐﻪ ﺑﺴﺘﻪ ﺑﻪ درﺧﻮاﺳﺖ ﮐﺎرﺑﺮ، اﯾﻦ ﺻﻔﺤﻪﻫﺎ در

ﻗﺎﺑﻞ ﮐﻠ ﺿﻤﯿﻤﻪ ﻣ ﺷﻮﻧﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﺗﻨﺒﻞ ﻫﺴﺘﻨﺪ، ﻣﻌﻤﻮﻻ درﺧﻮاﺳﺖ ﮐﺎرﺑﺮی ﮐﻪ ﺑﺎﯾﺪ ﺻﻔﺤﻪ

ﻣﺮﺑﻮﻃﻪ را ﺑﺎر ﮐﻨﺪ، ﺑﺎ ﻧﺎم ﺻﻔﺤﻪ ﯾ ﺴﺎن اﺳﺖ، ﺑﻨﺎﺑﺮاﯾﻦ ﺑﻪ ﺳﺎدﮔ ﻓﺎﯾﻞ درﺧﻮاﺳﺖ ﮐﺎرﺑﺮ

را ﺑﺎر ﮐﺮده ﺻﻔﺤﻪ را ﻧﻤﺎﯾﺶ ﻣ دﻫﻨﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺳﯿﺴﺘﻢ زﯾﺮ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ:

Welcome to my Site

121

اﯾﻦ ﺻﻔﺤﻪ ﺑﺴﯿﺎر ﺳﺎده، ﺑﺎ اﺳﺘﻔﺎده از ﯾ ﺳﺮآﯾﻨﺪ ﺳﺎده و ﯾ ﺑﺴﺎﯾﻨﺪ ﻣﺮﺑﻮط ﺑﻪ

درﯾﺎﻓﺖ ﻧﻈﺮات ﮐﺎرﺑﺮ، ﺻﻔﺤﻪای ﮐﻪ ﮐﺎرﺑﺮ درﺧﻮاﺳﺖ داده از ﭘﻮﺷﻪ ﺟﺎری ﺑﺎر ﻣ ﮐﻨﺪ و در

ﻣﯿﺎﻧﻪ ﺻﻔﺤﻪ ﻧﺸﺎن ﻣ دﻫﺪ. ﺣﺎل اﮔﺮ ﮐﺎرﺑﺮ ﻋﺒﺎرت زﯾﺮ را در آدرس وارد ﮐﻨﺪ:

Site.com/?page=https://abx.ir/me/malicious.txt

ﮐﺪ ﺑﺮای ﺑﺎر ﮐﺮدن ﻗﺴﻤﺖ ﻣﯿﺎﻧ ، ﯾ ﺗﮑﻪ ﮐﺪ از ﯾ ﺳﺎﯾﺖ دﯾ ﺮ را ﺑﺎر ﻣ ﮐﻨﺪ. در

اﯾﻦ ﺳﻨﺎرﯾﻮ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻓﺮض ﮐﺮده ﮐﻪ ﮐﺎرﺑﺮ ﭼﯿﺰی ﺧﺎرج از ﻟﯿﺴﺘ ﮐﻪ ﺧﻮد در اﺧﺘﯿﺎر او

ﻗﺮار داده، ﺑﻪ ﻋﻨﻮان ﺻﻔﺤﻪ درﺧﻮاﺳﺖ ﻧﻤ ﺪﻨﮐ.

اﯾﻦ ﺣﻤﻠﻪ ﺑﻪ ﺳﺎدﮔ ﺧﻄﺮﻧﺎکﺗﺮﯾﻦ ﺣﻤﻠﻪ ﻣﻮﺟﻮد اﺳﺖ، زﯾﺮا ﻧﻔﻮذﮔﺮ ﻣ ﺗﻮان ﻫﺮ

ﮐﺪ دﻟﺨﻮاﻫ را ﺑﻪ ﺳﺮﻋﺖ ﺑﺮ روی ﺳﺮور اﺟﺮا ﻧﻤﺎﯾﺪ و ردﭘﺎﯾﯽ ﻧﯿﺰ از ﮐﺪ اﺟﺮا ﺷﺪه ﺑﺮ روی

ﺳﺮور ﻧﻤ ﺪﻧﺎﻣ!

دو ﻧﻮع ﮐﻠ ﻧﯿﺰ ﺑﺮای اﯾﻦ ﺣﻤﻠﻪ ﻣﺘﺼﻮر اﺳﺖ:

٣٬٢٬۴٬١ اﻧﻀﻤﺎم ﻓﺎﯾﻞ از دور

در اﯾﻦ ﺳﻨﺎرﯾﻮ (Remote File Inclusion)، ﻪﻣﺎﻧﺮﺑﻞﯾﺎﻓ ﺲﯾﻮﻧ را ﺗﺤﺖ ﻗﺎﻟﺐ

ﯾ دﺳﺘﻮر اﻧﻀﻤﺎم (ﻣﺎﻧﻨﺪ include) ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﯿﻢ ﺑﻪ ﺻﻔﺤﻪ وارد ﮐﺮده اﺳﺖ.

ﻧﻔﻮذﮔﺮ ﻧﯿﺰ ﯾ آدرس ﮐﺎﻣﻞ ﺑﻪ ﺟﺎی ﭘﺎراﻣﺘﺮ ﻣﻮرد ﻧﻈﺮ وارد ﻣ ﮐﻨﺪ و ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ

اﻣ ﺎﻧﺎت PHP، ﻓﺎﯾﻞ از روی اﯾﻨﺘﺮﻧﺖ ﻧﯿﺰ ﻗﺎﺑﻞ ﺑﺎز ﮐﺮدن اﺳﺖ.

122

٣٬٢٬۴٬٢ اﻧﻀﻤﺎم ﻓﺎﯾﻞ ﻣﺤﻠ

اﻧﻀﻤﺎم ﻓﺎﯾﻞ ﻣﺤﻠ ، ﺑﺴﯿﺎر ﻣﺤﺪودﺗﺮ از اﻧﻀﻤﺎم ﻓﺎﯾﻞ از دور اﺳﺖ. در اﯾﻦ

ﺳﻨﺎرﯾﻮ، ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﭘﯿﺸﻮﻧﺪی را ﺑﻪ ﻓﺎﯾﻞ اﻧﻀﻤﺎم ﺷﺪه اﺿﺎﻓﻪ ﮐﺮده اﺳﺖ، ﻣﺜﻼ include “page/$file”; include “language_$file.php”;

در اﯾﻨﺠﺎ ﻧﻔﻮذﮔﺮ دﯾ ﺮ ﻧﻤ ﺗﻮان ﯾ آدرس ﮐﺎﻣﻞ را وارد ﻧﻤﺎﯾﺪ، زﯾﺮا ﭘﯿﺸﻮﻧﺪ

اﻓﺰوﻧﻪ ﺷﺪه ﺑﻪ آن از ﺻﺤﯿﺢ ﻣﺎﻧﺪن آن ﺟﻠﻮﮔﯿﺮی ﻣ ﮐﻨﺪ. در ﻋﻮض ﻧﻔﻮذﮔﺮ ﻣ ﺗﻮاﻧﺪ ﺑﺎ

اﺳﺘﻔﺎده از آدرسﻫﺎی ﻧﺴﺒﯽ، ﻓﺎﯾﻠ را ﺑﺮ روی ﺳﯿﺴﺘﻢ ﺳﺮور ﺑﺎر ﮐﻨﺪ. ﻣﺜﻼ ﺑﺎ وارد

ﮐﺮدن ﻋﺒﺎرت config.txt/../../.. ﻣ ﺗﻮاﻧﺪ ﻓﺎﯾﻞ ﺗﻨﻈﯿﻤﺎت ﺳﺎﯾﺖ را از ﺳﻪ ﭘﻮﺷﻪ ﻗﺒﻠﺘﺮ

از ﺟﺎﯾﯽ ﮐﻪ ﺑﺮﻧﺎﻣﻪ اﺟﺮا ﻣ ﺷﻮد ﺑﺨﻮاﻧﺪ.

ﺑﺴﯿﺎری ﺗﺼﻮر ﻣ ﻪﮐ ﺪ ﻨﮐ LFI از RFI ﺑﺴﯿﺎر ﺧﻔﯿﻔﺘﺮ اﺳﺖ، در ﺣﺎﻟ ﮐﻪ

ﺑﯿﺶ از ١۵ روش ﺑﺮای ﺗﺒﺪﯾﻞ ﯾ LFI ﺑﻪ ﯾ RFI وﺟﻮد دارﻧﺪ ﮐﻪ ﺑﺮﺧ از آﻧﻬﺎ در

ﻣﻘﺎﻻت ﻣﻨﺘﺸﺮ ﺷﺪه ﻧﮕﺎرﻧﺪه ذﮐﺮ ﺷﺪهاﻧﺪ.

ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﭘﺴﻮﻧﺪی ﮐﻪ ﺑﻪ داده ﺿﻤﯿﻤﻪ ﻣ ﺷﻮد (ﻣﺎﻧﻨﺪ php.) ﻪﮐ

در ﻣﺜﺎل دوم ﻓﻮق ﻣﺸﺎﻫﺪه ﺷﺪه اﺳﺖ، اﻫﻤﯿﺘ ﻧﺪارد زﯾﺮا ﺑﺎ اﻓﺰودن ﯾ ﮐﺎراﮐﺘﺮ ﺻﻔﺮ

ﻣ ﺗﻮان رﺷﺘﻪ را ﻣﻨﻘﻄ ﻧﻤﻮد و اداﻧﻪ آﻧﺮا دور رﯾﺨﺖ.

٣٬٢٬۵ ارﺟﺎع ﻣﺴﺘﻘﯿﻢ ﻧﺎﻣﻄﻤﺌﻦ ﺑﻪ ﻣﺤﺘﻮا

ﺑﺮای اﻓﺮادی ﮐﻪ ﺳﺎﻋﺖﻫﺎی ﺑﺮای ﻧﻔﻮذ ﺑﻪ ﯾ ﺳﯿﺴﺘﻢ ﺗﻼش ﻧﮑﺮدهﺑﺎﺷﻨﺪ، اﯾﻦ ﺣﻤﻠﻪ ﺗﺎ

ﺣﺪودی ﮔﻤﺮاه ﮐﻨﻨﺪه ﺧﻮاﻫﺪ ﺑﻮد. Insecure Direct Object Reference ﯾﻌﻨ

123

ﻣﺤﺘﻮای داﺧﻠ ﺳﯿﺴﺘﻢ - ﺧﺼﻮﺻﺎ ﻣﺤﺘﻮای ﺣﺴﺎس – ارﺟﺎع ﻣﺴﺘﻘﯿﻢ و ﺧﻄ داﺷﺘﻪ

ﺑﺎﺷﻨﺪ ﮐﻪ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﯿﺰ ﺑﺮ روی آﻧﻬﺎ اﻧﺠﺎم ﻧﺸﻮد.

در ﺑﺴﯿﺎر از ﺳﯿﺴﺘﻢﻫﺎی ﺑﺮای ﺣﻔﻆ ﺳﺮﻋﺖ، ﮐﻨﺘﺮل دﺳﺘﺮﺳ را ﺗﻨﻬﺎ ﺑﺮ روی ﺑﺮﺧ از

اﻟﻤﺎنﻫﺎ اﻧﺠﺎم ﻣ دﻫﻨﺪ ﮐﻪ ﻓﺎﯾﻠﻬﺎی اﯾﺴﺘﺎ را ﺷﺎﻣﻞ ﻧﻤ ﺷﻮد. در اﯾﻦ ﺳﯿﺴﺘﻢﻫﺎ ﻣ ﺗﻮان ﺑﺎ

اﺳﺘﻔﺎده از اﯾﻦ روش ﺑﻪ ﺳﯿﺴﺘﻢ رﺧﻨﻪ ﮐﺮد.

ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل، ﺳﯿﺴﺘﻢ ایﻣﯿﻠ را ﺗﺼﻮر ﮐﻨﯿﺪ ﮐﻪ ایﻞﯿﻣﻫﺎی ﮐﺎرﺑﺮان را در ﭘﻮﺷﻪ

ﺧﺎﺻ ﻗﺮار ﻣ دﻫﺪ. ﻣﺜﻼ اﯾﻤﯿﻞ ﮐﺎرﺑﺮ abiusx ﮐﻪ ﮐﺎرﺑﺮ ١٧ ام ﺳﯿﺴﺘﻢ اﺳﺖ، در ﭘﻮﺷﻪ

زﯾﺮ ﻗﺮار ﻣ ﮔﯿﺮد و ﻧﺎم ﻫﺮ ﻓﺎﯾﻞ اﯾﻤﯿﻞ ﯾ ﺷﻤﺎره اﺳﺖ ﮐﻪ از ﺗﺎرﯾﺦ و ﺳﺎﻋﺖ اﯾﺠﺎد ﺷﺪه

اﺳﺖ:

Email.com/mails/17/2012-07-01_17-22-11.txt

ﺳﺴﯿﺘﻢ ﻓﻮق اﯾﻤﯿﻞﻫﺎ را در ﻗﺎﻟﺐ ﻣﻄﺮح ﺷﺪه ﻣ ﭼﯿﻨﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﺧﻮاﻧﺎﺗﺮ ﺑﻮده

دﺳﺘﺮﺳ ﺑﻪ ﻓﺎﯾﻞﻫﺎی ﺳﺎدهﺗﺮ ﺷﻮد. ﻫﻤﺎﻧﻄﻮر ﮐﻪ ذﮐﺮ ﺷﺪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﻫﻢ ﺗﻨﺒﻞ ﻫﺴﺘﻨﺪ

ﻫﻢ ﻣﻨﻈﻢ، در ﺣﺎﻟ ﮐﻪ اﻣﻨﯿﺖ ﺗﺎ ﺣﺪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﺑﯽ ﻧﻈﻤ ﻻزم دارد.

ﻧﻔﻮذﮔﺮی ﮐﻪ در ﺳﯿﺴﺘﻢ ﻓﻮق ﺣﺴﺎب دارد، ﺑﺎ ﮐﺸﻒ اﻟ ﻮی ﻣﻄﺮح ﺷﺪه، ﺑﻪ

ﺳﺎدﮔ ﻣ ﺗﻮاﻧﺪ اﯾﻤﯿﻞﻫﺎی ﻣﺤﺘﻤﻞ دﯾ ﺮ ﮐﺎرﺑﺮان را ﺑﺎز ﮐﺮده و ﺑﺨﻮاﻧﺪ. ﮐﺎﻓﯿﺴﺖ ﺷﻤﺎره

ﮐﺎرﺑﺮی آن ﮐﺎرﺑﺮ را ﭘﯿﺪا ﮐﻨﺪ و ﺳﺎﻋﺖ ﺗﻘﺮﯾﺒﯽ اﯾﻤﯿﻞ ﻣﻮرد ﻧﻈﺮ را ﻧﯿﺰ ﺑﺪاﻧﺪ.

ﻋﻼرﻏﻢ اﯾﻨﮑﻪ ﺑﻪ ﻧﻈﺮ ﻣ رﺳﺪ اﯾﻦ ﻣﺸ ﻞ زﯾﺎد ﻣﻌﻤﻮل ﻧﯿﺴﺖ، ﺗﻘﺮﯾﺒﺎ ﺗﻤﺎﻣ

ﺖﯾﺎﺳﻫﺎ از اﯾﻦ ﻣﻌﻀﻞ ﺑﻪ ﻃﻮری رﻧ ﻣ ﺪﻧﺮﺑ.

اﯾﻦ ﺣﻤﻠﻪ در ﺳﺎل ٢٠٠٧ و ٢٠١٠ ﺑﻪ ﻋﻨﻮان ﺣﻤﻠﻪ ﭘﺮﮐﺎرﺑﺮد ﭼﻬﺎرم ﻣﻄﺮح ﺷﺪه

اﺳﺖ.

124

٣٬٢٬۶ ﺟﻌﻞ درﺧﻮاﺳﺖ ﺑﯿﻦ ﺳﺎﯾﺘ

اﯾﻦ ﺣﻤﻠﻪ ﮐﻪ ﺑﺎ ﻋﻨﻮان CSRF ﺎﯾ Cross Site Request Forgery) XSCR)

ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮد ﻧﯿﺰ از ﺣﻤﻼت ﭘﯿﭽﯿﺪه و ﺑﻪ ﺷﺪت ﺧﻄﺮﻧﺎک اﺳﺖ. در ﺳﺎل ٢٠٠٧ و

٢٠١٠ اﯾﻦ ﺣﻤﻠﻪ در رﺗﺒﻪ ۵ ام ﻗﺮار داﺷﺘﻪ اﺳﺖ.

در اﯾﻦ ﺣﻤﻠﻪ، ﻧﻔﻮذﮔﺮ اﺑﺘﺪا ﺑﺎ درج ﻗﻄﻌﻪای اﺳ ﺮﯾﭙﺖ در ﯾ ﺳﺎﯾﺖ ﭘﺮﺑﺎزدﯾﺪ و دارای

رﺧﻨﻪ (ﺑﺎ اﺳﺘﻔﺎده از روﺷﻬﺎی XSS)، از ﺿﻌﻒ ﯾ ﺳﺎﯾﺖ دﯾ ﺮ ﺑﻬﺮه ﻣ ﮔﯿﺮد و ﻣﺤﺘﻮای

ﮐﺎرﺑﺮان در آن ﺳﺎﯾﺖ را ﺗﻐﯿﯿﺮ ﻣ دﻫﺪ.

ﻓﺮض ﮐﻨﯿﺪ ﮐﻪ ﺳﺎﯾﺖ ﻓﯿﺲ ﺑﻮک، ﺑﺎ درﯾﺎﻓﺖ ﯾ درﺧﻮاﺳﺖ GET ﺑﺮ روی آدرس زﯾﺮ،

ﯾ ﻧﻈﺮ ﺑﺮای ﯾ ﻣﻄﻠﺐ درج ﮐﻨﺪ:

Facebook.com/doComment.php?postId=100&comment=die in hell

اﯾﻦ ﻣ ﺎﻧﯿﺰم ﺳﺎﯾﺖ ﻓﯿﺴﺒﻮک، دارای رﺧﻨﻪ درﺧﻮاﺳﺖ ﺑﯿﻦ ﺳﺎﯾﺘ اﺳﺖ و اﻣ ﺎن

ﺟﻌﻞ درﺧﻮاﺳﺖ در آن ﻓﺮاﻫﻢ اﺳﺖ. ﮐﺎﻓﯿﺴﺖ ﻧﻔﻮذﮔﺮی، ﯾ ﺗﺼﻮﯾﺮ در ﯾ ﺳﺎﯾﺖ

ﭘﺮﺑﺎزدﯾﺪ (ﻣﺎﻧﻨﺪ Youtube) ﻗﺮار دﻫﺪ ﮐﻪ آدرس آن دﻗﯿﻘﺎ آدرس ﻓﻮق ﺑﺎﺷﺪ. اﯾﻦ ﺗﺼﻮﯾﺮ

درﺳﺖ ﺑﺎر ﻧﺨﻮاﻫﺪ ﺷﺪ و ﺑﻪ ﺟﺎی آن ﺷﻤﺎﯾﻞ ﻋﺪم ﺑﺎر ﺷﺪن ﺗﺼﻮﯾﺮ ﻧﻤﺎﯾﺶ داده ﻣ ﺷﻮد،

اﻣﺎ ﻫﺮ ﮐﺎرﺑﺮی ﮐﻪ ﺻﻔﺤﻪ دارای اﯾﻦ ﺗﺼﻮﯾﺮ را ﻣ ﺑﯿﻨﺪ، ﮐﺎوﺷ ﺮ وی ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر

درﺧﻮاﺳﺖ ﺑﻪ آدرس ﻓﻮق ارﺳﺎل ﻣ ﮐﻨﺪ ﺗﺎ ﺗﺼﻮﯾﺮ را درﯾﺎﻓﺖ ﮐﻨﺪ. ارﺳﺎل ﯾ درﺧﻮاﺳﺖ

ﺑﻪ آدرس ﻓﻮق ﻧﯿﺰ (در ﺻﻮرﺗ ﮐﻪ ﮐﺎرﺑﺮ در ﺣﺎل ﺣﺎﺿﺮ داﺧﻞ ﺳﺎﯾﺖ ﻓﯿﺲ ﺑﻮک ﻧﯿﺰ وارد

ﺷﺪه ﺑﺎﺷﺪ) ﻣﻨﺠﺮ ﺑﻪ درج ﯾ ﻧﻈﺮ زﯾﺮ ﻣﻄﻠﺐ ذﮐﺮ ﺷﺪه ﺗﻮﺳﻂ اﯾﻦ ﮐﺎرﺑﺮ ﻣ ﺷﻮد، ﺑﺪون

اﯾﻨﮑﻪ ﮐﺎرﺑﺮ ذرهای ﻣﺘﻮﺟﻪ اﺗﻔﺎق اﻓﺘﺎده ﺑﺎﺷﺪ.

125

ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ روش ﻣ ﺗﻮان ﺗﺮاﻓﯿ ﻗﺎﺑﻞ ﺗﻮﺟﻬ را ﺑﻪ ﯾ ﺳﺎﯾﺖ وارد ﮐﺮد،

ﺑﺪون اﯾﻨﮑﻪ ﮐﺎرﺑﺮان ﻣﺘﻮﺟﻪ اﯾﻦ اﺗﻔﺎق ﺑﺎﺷﻨﺪ. ﻫﻤﭽﻨﯿﻦ اﮔﺮ ﺳﯿﺴﺘﻢﻫﺎی ﺣﺴﺎس (ﻣﺎﻧﻨﺪ

ﻢﺘﺴﯿﺳﻫﺎی ﺑﺎﻧﮑ ) ﯾﺎ ﻓﻌﺎﻟﯿﺖﻫﺎی ﺣﺴﺎس داﺧﻞ ﯾ ﺳﺎﯾﺖ (ﻣﺎﻧﻨﺪ ﺗﻐﯿﯿﺮ رﻣﺰ) ﺑﻪ اﯾﻦ

ﺣﻤﻠﻪ ﺣﺴﺎس ﺑﺎﺷﻨﺪ، ﻣ ﺗﻮان ﺑﻪ ﺳﺎدﮔ و ﺑﺪون ﻓﻬﻢ ﮐﺎرﺑﺮ اﻧﺘﻘﺎل وﺟﻪ و ﺗﻐﯿﯿﺮ رﻣﺰ داد.

ﺗﻨﻬﺎ ﻧﯿﺎز اﯾﻦ ﺣﻤﻠﻪ، ﺟﺎﻣﻌﻪ آﻣﺎری ﺑﺰرگ اﺳﺖ. در ﺳﻨﺎرﯾﻮی ﺑﺎﻻ ﮐﺎرﺑﺮاﻧ ﮐﻪ در

ﺳﺎﯾﺖ ﻓﯿﺲ ﺑﻮک وارد ﻧﺸﺪهاﻧﺪ (در ٣٠ دﻗﯿﻘﻪ ﮔﺬﺷﺘﻪ) درﺧﻮاﺳﺘﺸﺎن ﮐﺎر ﺧﺎﺻ ﻧﺨﻮاﻫﺪ

ﮐﺮد. ﻫﻤﭽﻨﯿﻦ ﺳﺎﯾﺖ ﺧﺎﻃ ، ﺳﺎﯾﺘﯿﺴﺖ ﮐﻪ ﺑﻪ اﯾﻦ ﺣﻤﻠﻪ ﻣﻘﺎوم ﻧﯿﺴﺖ (در ﺳﻨﺎرﯾﻮی ﻓﻮق

ﻓﯿﺲ ﺑﻮک) ﻧﻪ ﺳﺎﯾﺘ ﮐﻪ اﺳ ﺮﯾﭙﺖ ﻣﺨﺮب در آن درج ﺷﺪه اﺳﺖ.

ﺑﺮ ﺧﻼف ﺑﺎور ﻋﻤﻮم، CSRF ﺗﻨﻬﺎ ﺑﺮ روی درﺧﻮاﺳﺖﻫﺎی GET ﻗﺎﺑﻞ اﺟﺮا ﻧﯿﺴﺖ

و ﺑﺮ روی درﺧﻮاﺳﺖﻫﺎی POST ﻧﯿﺰ ﺑﻪ ﺳﺎدﮔ اﻧﺠﺎم ﻣ ﮔﯿﺮد. ﮐﺎﻓﯿﺴﺖ ﺑﻪ ﺟﺎی ﯾ

ﺗﺼﻮﯾﺮ، ﯾ ﻗﻄﻌﻪ اﺳ ﺮﯾﭙﺖ اﺟﺮا ﺷﻮد ﮐﻪ ﯾ ﻓﺮم ﻧﺎﻣﺮﺋ را ارﺳﺎل ﻧﻤﺎﯾﺪ.

ﺑﺴﯿﺎری از ﺳﺎﯾﺖﻫﺎی رایﮔﯿﺮی، ﻧﺴﺒﺖ ﺑﻪ اﯾﻦ ﻣﺴﺌﻠﻪ ﺿﻌﯿﻒ ﻫﺴﺘﻨﺪ و ﺑﺎ

اﺳﺘﻔﺎده از ﻣ ﺎﻧﯿﺰم ﻓﻮق، ﻣ ﺗﻮان ﺗﻮﺳﻂ ﮐﺎرﺑﺮان ﺑﺴﯿﺎری ﺑﺪون آﻧﮑﻪ ﺑﺪاﻧﻨﺪ ﺑﻪ ﯾ

ﻣﻮﺿﻮع ﯾﺎ ﻓﺮد ﺧﺎص رای داد و آرا را ﻏﯿﺮواﻗﻌ ﮐﺮد.

126

ﺷﻞ ٦٩ ﺳﻨﺎرﯾﻮی ﻧﻤﺎدﯾﻦ CSRF

٣٬٢٬٧ ﺿﻌﻒ اﺣﺮاز ﻫﻮﯾﺖ و ﻣﺪﯾﺮﯾﺖ ﻧﺸﺴﺖ

اﺣﺮاز ﻫﻮﯾﺖ و ﻣﺪﯾﺮﯾﺖ ﻧﺸﺴﺖ، ﻣﻌﻤﻮﻻ ﺑﻪ ﺻﻮرت واﺣﺪ در ﯾ ﺳﯿﺴﺘﻢ اﻧﺠﺎم

ﻣ ﺷﻮﻧﺪ. ﺑﺪون ﻣﺪﯾﺮﯾﺖ و اﯾﺠﺎد ﻧﺸﺴﺖ، اﻣ ﺎن اﺣﺮاز ﻫﻮﯾﺖ ﻧﯿﺰ وﺟﻮد ﻧﺨﻮاﻫﺪ داﺷﺖ.

اﮐﺜﺮ ﻗﺮﯾﺐ ﺑﻪ اﺗﻔﺎق ﺳﯿﺴﺘﻢﻫﺎی اﻣﺮوزی ﻧﺴﺒﺖ ﺑﻪ روشﻫﺎی ﭘﯿﭽﯿﺪه اﺣﺮاز ﻫﻮﯾﺖ

ﻣﺸ ﻞ دارﻧﺪ و ﭘﯿﺎدهﺳﺎزیﻫﺎی ﺿﻌﯿﻒ و ﻧﺎدرﺳﺖ اراﺋﻪ دادهاﻧﺪ. اﯾﻦ ﺣﻤﻠﻪ از رﺗﺒﻪ ٧ام در

ﺳﺎل ٢٠٠٧، ﺑﻪ رﺗﺒﻪ ﺳﻮم ﺳﺎل ٢٠١٠ اﻧﺘﻘﺎل ﯾﺎﻓﺘﻪ اﺳﺖ.

در ﺻﻮرﺗ ﮐﻪ ﻋﺒﺎرت اﻧﺘﺨﺎب ﺷﺪه ﺑﺮای ﺷﻨﺎﺳﻪ ﻧﺸﺴﺖ (Session ID)، از

ﺧﺎﺻﯿﺖ ﺗﺼﺎدﻓ ﮐﺎﻓ ﺑﺮﺧﻮردار ﻧﺒﺎﺷﺪ و ﺑﻪ ﻃﺮﯾﻘ ﻗﺎﺑﻞ ﻣﺤﺎﺳﺒﻪ ﺑﺎﺷﺪ، ﺗﻤﺎم ﮐﺎرﺑﺮان

ﺳﯿﺴﺘﻢ در ﻣﻌﺮض ﺧﻄﺮ ﻗﺮار ﻣ ﮔﯿﺮﻧﺪ.

127

ﻫﻤﭽﻨﯿﻦ ﺑﺴﯿﺎری از ﺳﺎﯾﺖﻫﺎ ﻓﺮاﻣﻮش ﻣ ﮐﻨﻨﺪ ﮐﻪ ﮐﺎرﺑﺮان را ﭘﺲ از ٣٠ دﻗﯿﻘﻪ

ﻋﺪم ﻓﻌﺎﻟﯿﺖ و ﯾ ﻫﻔﺘﻪ ﻓﻌﺎﻟﯿﺖ، ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر از ﺳﯿﺴﺘﻢ ﺧﺎرج ﮐﻨﻨﺪ، ﻟﺬا ﻫﻨﮕﺎﻣ

ﮐﻪ ﮐﺎرﺑﺮی در ﯾ ﮐﺎﻓ ﻧﺖ ﮐﺎرش ﺗﻤﺎم ﻣ ﺷﻮد و ﻣﺤﻞ را ﺗﺮک ﻣ ﮐﻨﺪ، ﮐﺎرﺑﺮ ﺑﻌﺪی ﺑﻪ

اﻃﻼﻋﺎت وی دﺳﺘﺮﺳ ﺧﻮاﻫﺪ داﺷﺖ.

ﻣ ﺎﻧﯿﺰم ﻣﺤﺒﻮب «ﻣﺮا ﺑﻪ ﯾﺎد داﺷﺘﻪ ﺑﺎش» ﻧﯿﺰ در اﮐﺜﺮ ﺳﺎﯾﺖﻫﺎ دﭼﺎر ﻣﺸ ﻞ

اﻣﻨﯿﺘ اﺳﺖ. راﺣﺘﺘﺮﯾﻦ راه ﭘﯿﺎدهﺳﺎزی اﯾﻦ ﻣ ﺎﻧﯿﺰم، درج ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر ﻓﺮد در

ﮐﻮﮐ اﺳﺖ ﺗﺎ وﻗﺘ دﻓﻌﻪ ﺑﻌﺪی ﺑﻪ ﺻﻔﺤﻪ ورود ﺳﯿﺴﺘﻢ رﺟﻮع ﮐﺮد، اﻃﻼﻋﺎت ورود ﺑﻪ

ﺳﯿﺴﺘﻢ ﺧﻮدﮐﺎر ﺗﻮﺳﻂ ﮐﺎوﺷ ﺮ اراﺋﻪ ﺷﻮد و ﮐﺎرﺑﺮ دﯾ ﺮ ﻧﯿﺎزی ﺑﻪ وارد ﮐﺮدن آﻧﻬﺎ ﻧﺪاﺷﺘﻪ

ﺑﺎﺷﺪ. در اﯾﻦ روش اﮔﺮ ﮐﺴ ﺑﻪ ﮐﻮﮐ دﺳﺘﺮﺳ ﭘﯿﺪا ﮐﻨﺪ (XSS، دﺳﺘﺮﺳ ﻣﺴﺘﻘﯿﻢ) ﻧﺎم

ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر را ﺧﻮاﻫﺪ داﺷﺖ.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺣﻤﻼت اﯾﻦ ﺑﺨﺶ ﺑﺴﯿﺎر ﮔﺴﺘﺮده ﻫﺴﺘﻨﺪ، در ﺑﺨﺶ ﺑﻌﺪی ﺑﺎ ﺑﺮرﺳ

ﻣ ﺎﻧﯿﺰمﻫﺎی دﻓﺎﻋ ﺑﯿﺸﺘﺮ ﺑﺎ آﻧﻬﺎ آﺷﻨﺎ ﺧﻮاﻫﯿﺪ ﺷﺪ.

٣٬٢٬٨ ﺗﻨﻈﯿﻤﺎت ﻧﺎﺻﺤﯿﺢ و ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ

ﻧﺮماﻓﺰارﻫﺎی اﺳﺘﻔﺎده ﺷﺪه در ﯾ ﺳﯿﺴﺘﻢ وب، ﺑﺴﯿﺎر ﻣﺘﻌﺪد و ﻣﺘﻨﻮع ﻫﺴﺘﻨﺪ و

ﭘﯿﭽﯿﺪﮔ ﻗﺎﺑﻞ ﺗﻮﺟﻬ دارﻧﺪ. اﯾﻨﮕﻮﻧﻪ ﻧﺮماﻓﺰارﻫﺎ ﻣﻌﻤﻮﻻ ﻓﺎﯾﻞ ﺗﻨﻈﯿﻤﺎت ﻣﻔﺼﻠ دارﻪﮐ ﺪﻧ

ﺑﺴﯿﺎری از ﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن و ﻣﺪﯾﺮان ﺳﺮور، ﺣﻮﺻﻠﻪ ﺑﺮرﺳ ﮐﺎﻣﻞ و اﺻﻼح آﻧﺮا ﻧﺪارﻧﺪ و

اﺻﻼ ﺑﺎ ﺑﺴﯿﺎری از ﻣﻔﺎﻫﯿﻢ داﺧﻞ آن آﺷﻨﺎﯾﯽ ﻧﺪارﻧﺪ.

اﯾﻦ ﻣﻬﻢ، ﺑﺴﺘﺮ را ﺑﺮای ﻧﻔﻮذ ﺑﻪ ﺳﯿﺴﺘﻢ ﺑﺎز ﻣ ﮔﺬارد. از ﻣﻬﻤﺘﺮﯾﻦ ﺗﻨﻈﯿﻤﺎت

ﻧﺎدرﺳﺖ، ﺗﻨﻈﯿﻤﺎت ﻧﺎﺻﺤﯿﺢ ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎﺳﺖ. ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض، ﺧﻄﺎﻫﺎی رخ داده

128

در ﺳﯿﺴﺘﻢ ﺑﺎ ﺟﺰﺋﯿﺎت ﮐﺎﻣﻞ (و ﺣﺘ ﻗﺴﻤﺘ از ﮐﺪ ﻧﺮماﻓﺰار) ﺑﺮ روی ﺻﻔﺤﻪ اراﺋﻪ ﻣ -

ﺷﻮﻧﺪ. اﯾﻨﮑﺎر ﺑﺮای راﺣﺘ ﺗﻮﺳﻌﻪ ﺳﯿﺴﺘﻢﻫﺎ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن اﺳﺖ.

ﺗﻨﻈﯿﻤﺎت درﺳﺖ اﯾﺠﺎب ﻣ ﮐﻨﺪ ﮐﻪ ﺧﻄﺎﻫﺎ در ﻫﻨﮕﺎم ﮐﺎرﮐﺮد ﻣﻌﻤﻮل ﺳﯿﺴﺘﻢ، ذﺧﯿﺮه

و ﮔﺰارﺷ ﯿﺮی (Log) ﺷﻮﻧﺪ و اﺻﻼ ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ داده ﻧﺸﻮﻧﺪ. ﺑﺴﯿﺎری از

ﻧﻔﻮذﮔﺮان اﺑﺘﺪا ﺑﺎ دادن ورودیﻫﺎی ﻏﯿﺮ ﻣﻌﻤﻮل ﺑﻪ ﯾ ﺳﯿﺴﺘﻢ، ﺧﻄﺎﻫﺎی آﻧﺮا ﻣﺸﺎﻫﺪه

ﻣ ﮐﻨﻨﺪ و ﺳﭙﺲ ﺑﻪ ﻧﺤﻮه ﮐﺎرﮐﺮد داﺧﻠ ﺳﯿﺴﺘﻢ ﭘﯽ ﻣ ﺑﺮﻧﺪ ﺗﺎ آﻧﺮا ﻣﻮرد ﻧﻔﻮذ ﻗﺮار

دﻫﻨﺪ. ﺳﯿﺴﺘﻤ ﮐﻪ ﺧﻄﺎ ﻧﻤ دﻫﺪ، ﺑﻪ ﺳﺎدﮔ ﻗﺎﺑﻞ رﺧﻨﻪ ﻧﯿﺴﺖ.

ﻫﻤﭽﻨﯿﻦ ﺗﻨﻈﯿﻤﺎت درﺳﺖ اﯾﺠﺎب ﻣ ﻧﻤﺎﯾﺪ ﮐﻪ ﺧﻄﺎﻫﺎ ﻫﻨﮕﺎم ﮐﺎرﮐﺮدن ﻣﺪﯾﺮ ﺳﯿﺴﺘﻢ

ﯾﺎ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن آن، ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ داده ﺷﻮﻧﺪ. اﮔﺮ اﯾﻦ ﻣﻬﻢ رﻋﺎﯾﺖ ﻧﺸﻮد،

ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﺑﯽ ﺣﻮﺻﻠﻪ ﺑﻪ ﺳﺎدﮔ ﺗﻨﻈﯿﻤﺎت ﻣﺨﻔ ﮐﺮدن ﺧﻄﺎﻫﺎ را ﺣﺬف ﻣ ﮐﻨﻨﺪ ﺗﺎ

راﺣﺘﺘﺮ ﺑﺘﻮاﻧﻨﺪ ﺳﯿﺴﺘﻢ را ﺗﻮﺳﻌﻪ دﻫﻨﺪ.

٣٬٢٬٩ ﻣﺨﻔﮐﺎری

ﻣﺨﻔ ﮐﺎری، ﻣﻌﻀﻞ دﻫﻢ و ﻫﺸﺘﻢ ﺳﺎﻟﻬﺎی ٢٠٠٧ و ٢٠١٠ ﺑﻮده اﺳﺖ. ﺑﺴﯿﺎری

از ﺗﻮﺳﻌﻪدﻫﻨﺪﮔﺎن، ﺑﻪ ﺟﺎی ﭘﯿﺎدهﺳﺎزی ﺻﺤﯿﺢ اﺣﺮاز ﻫﻮﯾﺖ و ﮐﻨﺘﺮل دﺳﺘﺮﺳ ، از ﻣﺨﻔ

ﮐﺎری اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ. ﺑﻪ ﻋﻨﻮان ﺑﻪ ﺟﺎی اﺳﺘﻔﺎده از ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر و ﮐﻨﺘﺮل

دﺳﺘﺮﺳ ﻗﻮی ﺑﺮای ﻣﺪﯾﺮﯾﺖ ﺳﯿﺴﺘﻢ، ﯾ آدرس ﭘﯿﭽﯿﺪه ﺑﺮای ﺻﻔﺤﻪ ﻣﺪﯾﺮ ﺳﯿﺴﺘﻢ در

ﻧﻈﺮ ﻣ ﮔﯿﺮﻧﺪ ﮐﻪ ﺗﻨﻬﺎ ﺑﺎ وارد ﮐﺮدن آن ﺑﺘﻮان وارد ﺳﯿﺴﺘﻢ ﺷﺪ:

Site.com/admin/you_have_to_know_this/1234/

در ﻧﮕﺎه اول ﺷﺎﯾﺪ ﺑﻪ ﻧﻈﺮ ﺑﺮﺳﺪ اﯾﻦ ﻣ ﺎﻧﯿﺰم ﺧﻮب

اﺳﺖ، وﻟ در دراز ﻣﺪت و ﻫﻤﭽﻨﯿﻦ ﺑﺎ ﻫ ﺷﺪن ﺳﯿﺴﺘﻢ

129

ﯾ از ﮐﺎرﺑﺮان ﻣﺪﯾﺮ اﯾﻦ ﺳﯿﺴﺘﻢ، آدرس ﻟﻮ ﻣ رود و ﻫﻤﻪ ﭼﯿﺰ ﺑﺮﻣﻼ ﻣ ﺷﻮد.

در ﺳﯿﺴﺘﻢﻫﺎی اﻣﻨﯿﺘ ، ﻣﺨﻔ ﮐﺎری ﺣﺪاﻗﻠ اﯾﺪهآل اﺳﺖ و اﻣﻨﯿﺖ ﺑﻪ وﺳﯿﻠﻪ

ﻣﺨﻔ ﮐﺎری ﻫﻤﯿﺸﻪ ﻣﺬﻣﻮم اﺳﺖ. ﺷﻞ ٧٠ ﻔﺨﻣ ﺰﻨﻃﮐﺎری

٣٬٢٬١٠ رﻣﺰﻧﮕﺎری ﻧﺎﻣﻄﻤﺌﻦ

اﺗﻔﺎﻗ ﮐﻪ در ﺳﺎل ٢٠٠٧، رﺗﺒﻪ ٨ و ٩ را ﯾ ﺠﺎ و در ﺳﺎل ٢٠١٠ رﺗﺒﻪ ٧ و ٩ را ﺑﻪ ﺧﻮد

اﺧﺘﺼﺎص داده اﺳﺖ. رﻣﺰﻧﮕﺎری ﻋﻠﻤ ﭘﯿﭽﯿﺪه ﻣﯿﺎن ﻋﻠﻢﻫﺎی رﯾﺎﺿﯿﺎت، ﮐﺎﻣﭙﯿﻮﺗﺮ و

ﻣﺨﺎﺑﺮات اﺳﺖ. ﺑﺴﯿﺎری از ﻣﺘﺨﺼﺼﺎن اﻣﻨﯿﺖ ﺣﺮﻓﻪای ﻧﯿﺰ آﮔﺎﻫ ﮐﺎﻓ ﺑﺎ رﻣﺰﻧﮕﺎری

ﻧﺪارﻧﺪ. ٨٠% ﻪﻌﺳﻮﺗدﻫﻨﺪﮔﺎن ﺑﺎور دارﻧﺪ ﮐﻪ ﺗﺎﺑﻊ MD5 ﺗﺎﺑﻊ ﭼ ﯿﺪهﺳﺎز ﯾ ﻄﺮﻓﻪ و اﻣﻦ

اﺳﺖ، در ﺣﺎﻟ ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ در ﺳﺎل ٢٠٠٠ ﺷ ﺴﺘﻪ ﺷﺪه و در ﺳﺎل ٢٠٠٨ ﮐﺎﻣﻼ ﻣﻨﻘﻀ

ﺷﺪه اﺳﺖ.

رﻣﺰﻧﮕﺎری دو رﺗﺒﻪ ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص داده، زﯾﺮا ﻣ ﺗﻮان آﻧﺮا ﺑﻪ دو دﺳﺘﻪ ﻋﻤﺪه ﺗﻘﺴﯿﻢ

ﻧﻤﻮد:

٣٬٢٬١٠٬١ رﻣﺰﻧﮕﺎری ارﺗﺒﺎﻃﺎت

ﮐﺎرﺑﺮان ﻫﻨﮕﺎﻣ ﮐﻪ ﻋﻤﻠﯿﺎت ﺣﺴﺎﺳ را درون ﯾ ﺳﺎﯾﺖ اﻧﺠﺎم ﻣ دﻫﻨﺪ، از

HTTPS اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ. ﺗﻨﻬﺎ ﺗﻔﺎوت آن ﺑﺎ HTTP در آﻧﺴﺖ ﮐﻪ دادهﻫﺎی ﺗﺒﺎدل

ﺷﺪه در ﺷﺒ ﻪ ﺗﻮﺳﻂ ﻫﯿﭽ ﺲ ﻗﺎﺑﻞ ﺧﻮاﻧﺪن ﻧﯿﺴﺖ.

ﻢﺘﺴﯿﺳﻫﺎی وﺑﯽ، اﺣﺘﯿﺎج ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﺑﻪ ارﺗﺒﺎط ﺑﺎ دﯾ ﺮ ﺳﯿﺴﺘﻢﻫﺎی وﺑﯽ و

ﺳﺮورﻫﺎی دﯾ ﺮ – ﺟﻬﺖ اﻧﺠﺎم اﻣﻮر ﻣﺨﺘﻠﻒ – دارﻧﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﺴﯿﺎری از

130

ﺳﺎﯾﺘﻬﺎی اﻣﺮوزی، اﺣﺮاز ﻫﻮﯾﺖ ﺧﻮد را ﺑﺎ ﻧﺎم ﮐﺎرﺑﺮی ورﻣﺰ ﻋﺒﻮر ﮔﻮﮔﻞ ﺷﻤﺎ اﻧﺠﺎم

ﻣ دﻫﻨﺪ و دﯾ ﺮ ﻻزم ﻧﯿﺴﺖ ﺑﺮ روی آﻧﻬﺎ ﺣﺴﺎب ﺟﺪﯾﺪ ﺑﺴﺎزﯾﺪ.

در ﺻﻮرﺗ ﮐﻪ اﯾﻦ ﺳﯿﺴﺘﻢﻫﺎ، ﺗﺒﺎدل اﻃﻼﻋﺎت ﺧﻮد ﺑﺎ ﮔﻮﮔﻞ را از ﻃﺮﯾﻖ HTTP

اﻧﺠﺎم دﻫﻨﺪ، ﻫﺮ ﻧﻔﻮذﮔﺮی ﮐﻪ در ﻣﺴﯿﺮ اﯾﻦ ارﺗﺒﺎط ﺑﺎﺷﺪ ﺑﻪ ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر

ﺗﻤﺎم ﮐﺎرﺑﺮان اﯾﻦ ﺳﯿﺴﺘﻢ دﺳﺘﺮﺳ ﺧﻮاﻫﺪ ﯾﺎﻓﺖ، اﻣﺎ از آﻧﺠﺎﯾﯽ ﮐﻪ اﯾﻦ ﺳﯿﺴﺘﻢﻫﺎ

ﻣﻌﻤﻮﻻ در اﯾﻨﺘﺮﻧﺖ ﻫﺴﺘﻨﺪ، ﻓﺮض ﺗﻮﺳﻌﻪدﻫﻨﺪﮔﺎن ﺑﺮ آﻧﺴﺖ ﮐﻪ ﻧﻔﻮذﮔﺮی ﺳﺮ راه ﻗﺮار

ﻧﺨﻮاﻫﺪ ﮔﺮﻓﺖ.

در ﻋﻮض ﻧﻔﻮذﮔﺮان ﻣﺒﺘﮑﺮ، اﻗﺪام ﺑﻪ ﺳﺮﻗﺖ ﯾﺎ ﺣﺘ ﺧﺮﯾﺪ ﯾ ﺳﺮور در دﯾﺘﺎﺳﻨﺘﺮ

ﺳﺮور ﻣﻮرد ﻧﻈﺮ ﻣ ﮐﻨﻨﺪ، و ﺑﻪ ﺳﺎدﮔ ﺑﻪ ﺗﺮاﻓﯿ ﺷﺒ ﻪ آن ﺳﺮور دﺳﺘﺮﺳ ﮐﺎﻣﻞ ﻣ -

ﯾﺎﺑﻨﺪ.

ﺷﻞ ٧١ ﺳﺎﯾﺖﻫﺎی دارای ﮔﻮاﻫﯿﻨﺎﻣﻪ ﻣﻌﺘﺒﺮ ﻣﻌﻤﻮﻻ ﭼﻨﯿﻦ ﻟﻮﮔﻮی ارﺟﺎﻋ ﺑﻪ ﻣﺮﺟﻊ ﺗﺎﯾﯿﺪ ﮐﻨﻨﺪه دارﻧﺪ

٣٬٢٬١٠٬٢ رﻣﺰﻧﮕﺎری دادهﻫﺎ

دادهﻫﺎی ذﺧﯿﺮه ﺷﺪه در ﯾ ﺳﯿﺴﺘﻢ، در ﺻﻮرﺗ ﮐﻪ ﺣﺴﺎﺳﯿﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻬ

داﺷﺘﻪ ﺑﺎﺷﺪ، ﺑﺎﯾﺪ رﻣﺰﻧﮕﺎری ﺷﻮد. ﻫﯿﭻ ﺳﯿﺴﺘﻤ اﺟﺎزه ﻧﺪارد اﻃﻼﻋﺎت ﮐﺎرت

اﻋﺘﺒﺎری، رﻣﺰ ﻋﺒﻮر و دﯾ ﺮ اﻃﻼﻋﺎت ﺑﺴﯿﺎر ﺣﺴﺎس ﮐﺎرﺑﺮان در ﻣﺴﺘﻘﯿﻤﺎ درﭘﺎﯾ ﺎه

داده ﺧﻮد ذﺧﯿﺮه ﻧﻤﺎﯾﺪ، زﯾﺮا ﮐﺎرﺑﺮان دﻟﯿﻠ ﻧﺪارﻧﺪ ﺑﻪ ﺗﻤﺎم ﭘﺮﺳﻨﻞ آن ﺳﯿﺴﺘﻢ اﻋﺘﻤﺎد

ﮐﺎﻓ داﺷﺘﻪ ﺑﺎﺷﻨﺪ.

131

اﯾﻨﮕﻮﻧﻪ اﻃﻼﻋﺎت ﺑﺎﯾﺪ ﯾ ﻄﺮﻓﻪ ﯾﺎ دوﻃﺮﻓﻪ رﻣﺰﻧﮕﺎری ﺷﻮﻧﺪ:

٣٬٢٬١٠٬٢٬١ رﻣﺰﻧﮕﺎری ﯾﻄﺮﻓﻪ (ﭼﯿﺪهﮔﯿﺮی)

رﻣﺰ ﻋﺒﻮر ﮐﺎرﺑﺮان، و ﻫﺮ اﻃﻼﻋﺎﺗ ﮐﻪ ﻓﻘﻂ داﻧﺴﺘﻦ آن ﺗﻮﺳﻂ ﮐﺎرﺑﺮ ﻻزم اﺳﺖ

و ﺑﺮروی آن ﺟﺴﺘﺠﻮ و ﻋﻤﻠﯿﺎت دﯾ ﺮی اﻧﺠﺎم ﻧﻤ ﮔﯿﺮد، ﺑﺎﯾﺪ ﺑﻪ ﺻﻮرت ﯾ ﻄﺮﻓﻪ

ﭼﯿ ﺪهﮔﯿﺮی (Hash) ﺷﻮﻧﺪ. ﻋﻤﻠﯿﺎت ﭼ ﯿﺪهﮔﯿﺮی ﯾ ﻄﺮﻓﻪ اﺳﺖ، ﻟﺬا از ﭼ ﯿﺪه

ﯾ رﻣﺰ ﻧﻤ ﺗﻮان ﺧﻮد آﻧﺮا ﮐﺸﻒ ﮐﺮد.

در ﺻﻮرﺗ ﮐﻪ اﯾﻦ ﻣﻬﻢ اﻧﺠﺎم ﻧﺸﻮد، ﻧﻔﻮذﮔﺮ ﺑﺎ ﻧﻔﻮذ ﺑﻪ ﯾ ﺳﯿﺴﺘﻢ، رﻣﺰ ﺗﻤﺎم

ﮐﺎرﺑﺮان آن ﺳﯿﺴﺘﻢ را ﮐﺸﻒ ﻣ ﮐﻨﺪ و اﮐﺜﺮ اﯾﻦ ﮐﺎرﺑﺮان در ﺳﯿﺴﺘﻢﻫﺎی دﯾ ﺮ ﻧﯿﺰ

از ﻫﻤﯿﻦ رﻣﺰ اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ.

ﺷﻞ ٧٢ ﻧﺤﻮه ﮐﺎرﮐﺮد MD5

٣٬٢٬١٠٬٢٬٢ رﻣﺰﻧﮕﺎری دوﻃﺮﻓﻪ

رﻣﺰﻧﮕﺎری دوﻃﺮﻓﻪ (Encryption) ﺑﺮای دادهﻫﺎی ﺣﺴﺎس، ﻣﺎﻧﻨﺪ ﻓﺎﯾﻞﻫﺎی

ﺧﺼﻮﺻ و ﻣﻄﺎﻟﺐ ﺧﺼﻮﺻ ﮐﺎرﺑﺮان، ﻣﻔﯿﺪ اﺳﺖ. اﯾﻦ دادهﻫﺎ ﺑﺎ داﺷﺘﻦ رﻣﺰ 132

ﻣﻨﺎﺳﺐ ﻗﺎﺑﻞ ﺑﺎزﯾﺎﺑﯽ اﺳﺖ. ﻻزم ﺑﻪ ذﮐﺮ اﺳﺖ ﮐﻪ رﻣﺰ ﻣﻮرد ﻧﻈﺮ در ﺳﯿﺴﺘﻢ ذﺧﯿﺮه

ﻧﻤ ﺷﻮد ﺑﻠ ﻪ ﻫﺮ دﻓﻌﻪ ﮐﻪ ﮐﺎرﺑﺮ ﻗﺼﺪ دﺳﺘﺮﺳ ﺑﻪ اﻃﻼﻋﺎت ﻣﺬﮐﻮر را دارد، رﻣﺰ را

وارد ﻣ ﮐﻨﺪ و ﺳﯿﺴﺘﻢ ﺑﻪ ﺻﻮرت ﯾ ﺒﺎر ﻣﺼﺮف آﻧﺮا اﺳﺘﻔﺎده ﻣ ﺪﻨﮐ.

در ﺻﻮرﺗ ﮐﻪ اﯾﻨﮑﺎر اﻧﺠﺎم ﻧﺸﻮد، ﺑﺎ رﺧﻨﻪ ﺑﻪ ﯾ ﺳﯿﺴﺘﻢ، ﺗﻤﺎم اﻃﻼﻋﺎت ﺗﻤﺎم

ﮐﺎرﺑﺮان ﻟﻮ ﻣ رود و اﮔﺮ اﯾﻦ اﻃﻼﻋﺎت ﻣﺤﺮﻣﺎﻧﻪ و ﺧﺼﻮﺻ ﺑﺎﺷﻨﺪ (ﻣﺎﻧﻨﺪ اﺳﻨﺎد

ﻋﻤﻠﯿﺎﺗ ﯾ ﺳﺎزﻣﺎن) اﻋﺘﺒﺎر آن ﺳﺎزﻣﺎن دﭼﺎر ﺧﺪﺷﻪ اﺳﺎﺳ ﻣ ﺷﻮد.

٣٬٢٬١١ اﻣﻨﯿﺖ ﻃﺮف ﻣﺸﺘﺮی

ﺑﺴﯿﺎری از ﺳﺎﯾﺖﻫﺎ، اﻣﻨﯿﺖ را در ﺳﻄ ﻣﺸﺘﺮی ﺗﺎﻣﯿﻦ ﻣ ﮐﻨﻨﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﯾ

ﻓﺮم ﻋﻀﻮﯾﺖ در ﺳﯿﺴﺘﻢ را در ﻧﻈﺮ ﺑ ﯿﺮﯾﺪ ﮐﻪ ﺗﻮﺳﻂ ﺟﺎواﺳ ﺮﯾﭙﺖ ﻓﯿﻠﺪﻫﺎی آن ﺑﺮرﺳ

ﻣ ﺷﻮد و روی اﺻﻮل ﺑﻮدن آن ﺗﺎﯾﯿﺪ ﻣ ﮔﺮدد.

از آﻧﺠﺎﯾﯽ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ اﯾﻦ ﻓﺮم ﯾ ﺒﺎر ﮐﺪ ﻣﺮﺑﻮط ﺑﻪ ﺗﺎﯾﯿﺪ ﺻﺤﺖ و درﺳﺘ دادهﻫﺎ را

در ﺟﺎواﺳ ﺮﯾﭙﺖ ﻧﻮﺷﺘﻪ اﺳﺖ، ﺣﻮﺻﻠﻪ ﺑﺎزﻧﻮﯾﺴ ﮐﺪ ﻣﺸﺎﺑﻪ در ﺳﻤﺖ ﺳﺮور را ﻧﺪارد، ﻟﺬا

ﺑﻪ ﺑﺮرﺳ ﺳﻤﺖ ﮐﻼﯾﻨﺖ اﮐﺘﻔﺎ ﻣ ﮐﻨﺪ. ﺑﺎ ﺗﺴﺖ و اﺟﺮای ﺑﺮﻧﺎﻣﻪ ﻧﯿﺰ ﺑﻪ اﻃﻤﯿﻨﺎن ﻣ رﺳﺪ

ﮐﻪ ﺑﺮرﺳ ﻫﺎ ﺻﺤﯿﺢ اﻧﺠﺎم ﻣ ﺪﻧﻮﺷ.

اﻣﺎ ﯾ ﻧﻔﻮذﮔﺮ ﺑﻪ ﺳﺎدﮔ ﺑﺮرﺳ ﻫﺎی اﻋﻤﺎل ﺷﺪه روی ﺻﻔﺤﻪ را ﻏﯿﺮ ﻓﻌﺎل ﻣ ﮐﻨﺪ و ﯾﺎ

ﯾ ﺻﻔﺤﻪ ﻣﺸﺎﺑﻪ ﺑﺪون ﻧﯿﺎز ﺑﻪ ﺑﺮرﺳ ﻣ ﺳﺎزد و از ﻃﺮﯾﻖ آن ﻧﺴﺒﺖ ﺑﻪ ارﺳﺎل داده اﻗﺪام

ﻣ ﮐﻨﺪ. در ﺻﻮرﺗ ﮐﻪ ﺳﺮور در ﺳﻤﺖ ﺧﻮد ﺑﺮرﺳ ﻫﺎ را ﻣﺠﺪد ﭼ ﻧﮑﻨﺪ دﭼﺎر ﻣﺸ ﻞ

ﺟﺪی ﺧﻮاﻫﺪ ﺷﺪ.

133

ﻫﻤﭽﻨﯿﻦ ﺑﺴﯿﺎری از اوﻗﺎت ﻓﯿﻠﺪﻫﺎی ﻣﺨﻔ ﺑﺮای ارﺳﺎل داده اﺳﺘﻔﺎده ﻣ ﺷﻮﻧﺪ و ﺧﻂ

ﻓﻌﺎﻟﯿﺖ ﮐﺎرﺑﺮ ﺗﻮﺳﻂ ﺳﯿﺴﺘﻢ ﺧﻮدش ﭘﯿ ﯿﺮی ﻣ ﺷﻮد. ﺗﻤﺎﻣ اﯾﻦ ﻣﻮارد ﻣﻌﻀﻞ اﻣﻨﯿﺘ

ﻗﺎﺑﻞ ﺗﻮﺟﻪ دارﻧﺪ.

٣٬٢٬١٢ ﻏﯿﺮه

ﺣﻤﻼت وب ﺑﻪ ﺣﻤﻼت ﻣﻄﺮح ﺷﺪه در ﺑﺎﻻ ﻣﺤﺪود ﻧﯿﺴﺘﻨﺪ و ﺣﻤﻼت ﺑﺴﯿﺎری روزاﻧﻪ

ﮐﺸﻒ ﻣ ﺷﻮﻧﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻣ ﺗﻮان ﺑﻪ ﺣﻤﻠﻪ DSN Rebinding اﺷﺎره داﺷﺖ ﮐﻪ در

ﺳﻄ DNS ﺗﻌﺪاد ﻗﺎﺑﻞ ﺗﻮﺟﻬ از ﮐﺎرﺑﺮان را آﻟﻮده ﻣ ﮐﺪﻨ.

ﺣﻤﻼﺗ ﮐﻪ در اﯾﻦ ﺑﺨﺶ ﻣﻄﺮح ﻧﺸﺪﻧﺪ ﯾﺎ ﮐﻢ اﻫﻤﯿﺖ ﻫﺴﺘﻨﺪ ﯾﺎ از ﭘﯿﭽﯿﺪﮔ ﺑﺎﻻ – و ﻟﺬا

ﺗﻌﺪاد ﻧﻔﻮذﮔﺮان ﮐﻤﺘﺮ – ﺑﺮﺧﻮردار ﻫﺴﺘﻨﺪ.

از آﻧﺠﺎﯾﯽ ﮐﻪ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار ﯾ رﺷﺘﻪ ﺑﺴﯿﺎر ﭘﻮﯾﺎ و ﺑﻪ روز اﺳﺖ، ﺑﺮای آﺷﻨﺎﯾﯽ ﺑﯿﺸﺘﺮ ﺑﺎ

اﯾﻦ ﺣﻤﻼت ﺑﺎﯾﺪ ﺑﻪ اﯾﻨﺘﺮﻧﺖ و ﺳﺎﯾﺖﻫﺎی ﺗﺨﺼﺼ ﻣﺮاﺟﻌﻪ ﻧﻤﻮد.

134

٤ ﭼﻬﺎرﭼﻮب ﺗﻮﺳﻌﻪ وب اﻣﻦ

ﺑﺴﯿﺎری از ﻣ ﺎﻧﯿﺰمﻫﺎی اﻣﻦﺳﺎزی ﯾ ﺳﯿﺴﺘﻢ، ﺗﻨﻬﺎ اﻣ ﺎن ﺳﻮء اﺳﺘﻔﺎده از ﯾ رﺧﻪ را

ﺑﻪ ﺻﻮرت اﺣﺘﻤﺎﻟ ﮐﺎﻫﺶ ﻣ دﻫﻨﺪ. اﯾﻦ دﺳﺘﻪ از ﻣ ﺎﻧﯿﺰمﻫﺎ ﺑﻪ ﻃﻮر ﮐﻠ ﺑﯽ ﻓﺎﯾﺪه ﻫﺴﺘﻨﺪ، زﯾﺮا

وﺟﻮد ﯾ رﺧﻨﻪ در ﺳﯿﺴﺘﻢ ﺑﻪ ﻣﻌﻨ ﻧﻔﻮذ ﺷﺪن ﺑﻪ آن اﺳﺖ و اﺳﺘﻔﺎده از اﯾﻦ ﻣ ﺎﻧﯿﺰمﺎﻬ ﺗ ﺎﻫ

ﺑﺎﻋﺚ اﻋﺘﻤﺎد ﮐﺎذب ﻣ ﺷﻮد. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺳﯿﺴﺘﻤ ﮐﻪ ٣٠٠ رﺧﻨﻪ داﺷﺘﻪ ﺑﺎﺷﺪ (ﮐﻪ ﻋﺪد ﺑﺴﯿﺎر

ﻣﺤﺘﻤﻠ اﺳﺖ)، ﺑﺎ اﺳﺘﻔﺎده از اﯾﻨﮕﻮﻧﻪ ﻣ ﺎﻧﯿﺰمﻪﺑ ﺎﻫ ١٠ رﺧﻨﻪ ﮐﺎﻫﺶ ﻣ ﯾﺎﺑﺪ وﻟ اﻣﻨﯿﺖ آن اﺻﻼ

ﺑﻬﺒﻮدی ﻧﻤ ﯾﺎﺑﺪ زﯾﺮا ﻧﻔﻮذﮔﺮان ﻧﯿﺰ ﺑﻪ دﻧﺒﺎل رﺧﻨﻪﻫﺎﯾﯽ ﺧﻮاﻫﻨﺪ ﺑﻮد ﮐﻪ ﺑﺎ روشﻫﺎی ﮐﻼﺳﯿ

ﻗﺎﺑﻞ رﻓ ﻧﺒﺎﺷﺪ.

روﺷﻬﺎﯾﯽ ﻣﺎﻧﻨﺪ ﺣﺬف ﮐﺎراﮐﺘﺮﻫﺎی ‘ و “ از درﺧﻮاﺳﺖﻫﺎ، ﺑﺮرﺳ ﮐﻠﻤﺎت ﻣﻌﻤﻮل SQL injection در ﯾ درﺧﻮاﺳﺖ و ﻏﯿﺮه از اﯾﻦ دﺳﺘﻪ ﻫﺴﺘﻨﺪ.

٤٬١ ﭼﻬﺎرﭼﻮب ﭘﯿﺸﻨﻬﺎدی

ﭼﻬﺎرﭼﻮب اراﺋﻪ ﺷﺪه در اﯾﻦ ﺳﻨﺪ، ﺷﻨﺎﺧﺘﻪ ﺷﺪه ﺑﺎ ﻧﺎم jFramework، ﮐﻪ در ﺑﯿﺶ از

١١٠٠٠ ﺳﺎﯾﺖ در ﺣﺎل اﺳﺘﻔﺎده اﺳﺖ، ﭘﺲ از ﺗﺠﺮﺑﯿﺎت ﻣﺘﻌﺪد ﻧﮕﺎرﻧﺪه در ﺣﻮزه ﻧﻔﻮذﮔﺮی و

اﻣﻨﯿﺖ وب و ﻫﻤﭽﻨﯿﻦ ﺷﺮﮐﺖ در ﭘﺮوژه ﺑﺴﯿﺎر ﺑﺰرگ ﺑﯿﻦاﻟﻤﻠﻠ OWASP ESAPI، ﺑﻪ وﺿﻌﯿﺖ

اﻣﻦ و اﻓﺘﺨﺎر آﻣﯿﺰ اﻣﺮوزی رﺳﯿﺪه اﺳﺖ.

OWASP ESAPI در واﻗ ﯾ ﭼﻬﺎرﭼﻮبٍ ﭼﻬﺎرﭼﻮب اﺳﺖ ﮐﻪ ﺑﺮای ﺳﺎزﻣﺎنﻫﺎی ﺑﺰرگ

ﺑﻪ ﺻﻮرت راﯾ ﺎن ﺗﻮﺳﻂ اﻧﺠﻤﻦ آزاد اواﺳﭗ ﻃﺮاﺣ ﺷﺪه اﺳﺖ. اﯾﻦ ﭼﻬﺎرﭼﻮب، اﺻﻮل ﮐﻠ

اﻣﻨﯿﺖ وب را رﻋﺎﯾﺖ ﮐﺮده و راﻫ ﺎرﻫﺎی ﻣﺨﺘﻠﻒ آﻧﺮا ﺑﺮای ﭘﯿﺎدهﺳﺎزی ﺑﺎز ﮔﺬاﺷﺘﻪ اﺳﺖ. ﺑﻪ دﻟﯿﻞ

ﭘﯿﭽﯿﺪﮔ ﻗﺎﺑﻞ ﺗﻮﺟﻪ اﯾﻦ ﭼﻬﺎرﭼﻮب و ﻫﻤﭽﻨﯿﻦ دﺷﻮاری ﺑﺮﺧ از ﭘﯿﺎدهﺳﺎزیﻫﺎ، اﺳﺘﻔﺎده وﺳﯿﻌ

از اﯾﻦ ﭼﻬﺎرﭼﻮب ﺻﻮرت ﻧﮕﺮﻓﺘﻪ اﺳﺖ.

135 jFramework ﺑﻪ ﻋﻨﻮان ﯾ ﭼﻬﺎرﭼﻮب ﻋﻤﻠﯿﺎﺗ و ﺳﺒ ، ﺑﺎ اﺳﺘﻔﺎده از ﺗﺠﺮﺑﯿﺎت و ﻧﮑﺎت

ESAPI ﻃﺮاﺣ ﺷﺪه و در ﺣﺎل ﺣﺎﺿﺮ ﭼﻬﺎرﭼﻮﺑﯽ ﺑﺴﯿﺎر اﻣﻦ و ﻗﺪرﺗﻤﻨﺪ ﺗﻠﻘ ﻣ ﺷﻮد. ﺑﺴﯿﺎری

از ﺳﺎزﻣﺎنﻫﺎ ﺗﻨﻬﺎ از وﯾﮋﮔ ﻫﺎی اﻣﻨﯿﺘ اﯾﻦ ﭼﻬﺎرﭼﻮب در ﮐﻨﺎر ﺳﯿﺴﺘﻢﻫﺎی از ﭘﯿﺶ آﻣﺎده ﺧﻮد

ﺑﻬﺮه ﻣ ﮔﺪﻧﺮﯿ.

۴٬١٬١ وﯾﮋﮔﻫﺎی ﺑﺎرز ﭼﻬﺎرﭼﻮب ﭘﯿﺸﻨﻬﺎدی

۴٬١٬١٬١ ﺪﻣﺎﻌﺗ

ﭼﻬﺎرﭼﻮب اراﺋﻪ ﺷﺪه ﯾ ﭼﻬﺎرﭼﻮب ﮐﻢ ﺗﻌﺎﻣﺪ اﺳﺖ، ﺑﺪﯾﻦ ﻣﻌﻨ ﮐﻪ ﺑﺮﻧﺎﻣﻪ -

ﻧﻮﯾ ﺲ ﻣ ﺗﻮاﻧﺪ از اﻟ ﻮﻫﺎی آن اﺳﺘﻔﺎده ﮐﻨﺪ، ﯾﺎ اﯾﻨﮑﺎر را ﻧﮑﻨﺪ. ﻫﯿﭽ ﻮﻧﻪ اﻟﺰاﻣ از ﺟﺎﻧﺐ

ﭼﻬﺎرﭼﻮب ﺑﺮ روی ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ اﻟﻘﺎ ﻧﻤ ﺷﻮد و اﯾﻦ ﺧﻮد ﺑﺎﻋﺚ ﻣ ﺷﻮد ﺑﺮﻧﻪﻣﺎﻧﻮﯾﺴﺎن

ﻣﺘﻌﺪد ﺑﻪ ﺳﺮاغ ﭼﻬﺎرﭼﻮب ﺑﯿﺎﯾﻨﺪ.

۴٬١٬١٬٢ زﺑﺎن و ﺑﺴﺘﺮ

ﭼﻬﺎرﭼﻮب ﺑﻪ زﺑﺎن PHP ﻧﻮﺷﺘﻪ ﺷﺪه و ﺑﺮ روی ﺗﻤﺎﻣ ﺳﯿﺴﺘﻢﻫﺎی ﻋﺎﻣﻞ ﻗﺎﺑﻞ

اﺟﺮا و ﺗﺴﺖ ﺷﺪه اﺳﺖ. ﭘﺎﯾ ﺎه داده ﺑﺮای ﮐﺎرﮐﺮد آن اﻟﺰاﻣ ﻧﯿﺴﺖ (و اﻣ ﺎﻧﺎت ﻗﺎﻟﺐ

ﺑﻨﺪی و ﻏﯿﺮه ﻓﻌﺎل ﻫﺴﺘﻨﺪ) وﻟ ﺑﺴﯿﺎری از وﯾﮋﮔ ﻫﺎی ﭘﯿﺸﺮﻓﺘﻪ ﭼﻬﺎرﭼﻮب ﺑﺎ اﺳﺘﻔﺎده از

ﭘﺎﯾ ﺎه داده اﻧﺠﺎم ﻣ ﺪﻧﻮﺷ.

ﻫﻤﭽﻨﯿﻦ ﭼﻬﺎرﭼﻮب اﺣﺘﯿﺎج ﺑﻪ ﻧﺼﺐ ﻧﺪارد و راهاﻧﺪازی آن ﺑﺎ ﮐﭙﯽ اﻧﺠﺎم ﻣ -

ﮔﯿﺮد. ﺣﺘ ﻧﯿﺎزی ﺑﻪ ﺗﻐﯿﯿﺮ ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر ﭘﺎﯾ ﺎه داده در ﻫﻨﮕﺎم ﮐﭙﯽ ﻧﯿﺴﺖ.

۴٬١٬١٬٣ ﭘﺎﯾﺎهداده

ﭼﻬﺎرﭼﻮب از واﺳﻂﻫﺎی ﺧﻮد ﺑﺮای ﭘﺎﯾ ﺎهﻫﺎی ﻣﺨﺘﻠﻒ ﺑﻬﺮه ﻣ ﺮﯿﮔد. واﺳﻂ-

ﻫﺎی ﺗﻌﺮﯾﻒ ﺷﺪه ﺑﺴﯿﺎر اﻣﻦ و ﻗﺎﺑﻞ ردﮔﯿﺮی ﻫﺴﺘﻨﺪ. ﺗﻌﺮﯾﻒ ﯾ واﺳﻂ ﺟﺪﯾﺪ ﺑﺮای 136

ﺳﯿﺴﺘﻢ در ﮐﻤﺘﺮ از ﯾ ﺳﺎﻋﺖ ﻣﻤ ﻦ اﺳﺖ و واﺳﻂﻫﺎی ﻣﻮﺟﻮد ﺑﯿﺶ از ۵ ﭘﺎﯾ ﺎه

داده ﻣﻌﺮوف را ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺪﻨﻨﮐ.

ORM ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض در ﭼﻬﺎرﭼﻮب وﺟﻮد ﻧﺪارد، وﻟ Doctrine اﻣ ﺎن

اﻓﺰوده ﺷﺪن را دارد و ﺑﻪ ﺧﻮﺑﯽ ﺑﺎ ﭼﻬﺎرﭼﻮب ﻗﺎﻟﺐ ﻣ ﮔﯿﺮد. ﻫﻤﭽﻨﯿﻦ ﺗﻤﺎم ﻗﺎﺑﻠﯿﺖ -

ﻫﺎی ﭼﻬﺎرﭼﻮب از ﻃﺮﯾﻖ واﺳ ﻂ ORM ای ﻧﯿﺰ ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﻫﺴﺘﻨﺪ، ﯾﻌﻨ ﭘﺲ از

اﻓﺰودن Doctrine، ﻪﻧﺎﺨﺑﺎﺘﮐﻫﺎی ORMای ﺧﻮد ﭼﻬﺎرﭼﻮب ﻧﯿﺰ ﻓﻌﺎل ﻣ ﺪﻧﻮﺷ.

۴٬١٬١٬۴ ﻣﺪﯾﺮﯾﺖ ﮐﺎرﺑﺮان و ﻧﺸﺴﺖ

ﺟﺪﯾﺪﺗﺮﯾﻦ ﺗﮑﻨﻮﻟﻮژیﻫﺎی و اﺻﻮل اﻣﻨﯿﺘ در ﻣﺪﯾﺮﯾﺖ ﮐﺎرﺑﺮان و ﻣﺪﯾﺮﯾﺖ ﻧﺸﺴﺖ

ﭼﻬﺎرﭼﻮب ﺑﻪ ﮐﺎر ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ. ﻫﻤﻪ ﭼﯿﺰ ﻗﺎﺑﻞ ﺗﻨﻈﯿﻢ اﺳﺖ. ﻣ ﺗﻮان ﺗﻨﻈﯿﻢ ﮐﺮد

ﮐﻪ ﻫﺮ ﮐﺎرﺑﺮ از ﭼﻨﺪ ﻣ ﺎن ﻫﻤﺰﻣﺎن ﺑﺘﻮاﻧﺪ وارد ﺳﯿﺴﺘﻢ ﺑﺎﺷﺪ.

ﻫﻤﭽﻨﯿﻦ وﯾﮋﮔ ﻫﺎی ﺟﺰﺋ ﺑﺎ دﻗﺖ و ﺗﺴﺖ اﻣﻨﯿﺖ ﭘﯿﺎدهﺳﺎزی ﺷﺪهاﻧﺪ. ﺣﺠﻢ ﮐﺪ

ﺑﺴﯿﺎر ﭘﺎﯾﯿﻦ اﺳﺖ و از Bloat ﭘﺮﻫﯿﺰ ﺷﺪه اﺳﺖ.

۴٬١٬١٬۵ ﮐﻨﺘﺮل دﺳﺘﺮﺳ jFramework ﺗﻨﻬﺎ ﭼﻬﺎرﭼﻮﺑﯿﺴﺖ ﮐﻪ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﻘﺶ ﻣﺤﻮر اﺳﺘﺎﻧﺪارد

ﺳﻄ دو را ﺑﻪ ﺻﻮرت ﮐﺎﻣﻞ و ﺑﺎ ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﻣﻼﺣﻈﻪای ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﺮﻫ .ﺪﯾ ﻤﻧ

ﺑﺮرﺳ ﮐﺎﻣﻞ در اﯾﻦ زﯾﺮﺳﺎﺧﺖ ﮐﻤﺘﺮ از ﯾ دﻫﻢ ﺛﺎﻧﯿﻪ زﻣﺎن ﻣ ﮔﯿﺮد (ﺑﺮای ﺳﯿﺴﺘﻤ

ﺑﺎ ﺑﯿﺶ از ١٠٠٠ ﮐﺎرﺑﺮ و ١۴٠٠٠ ﻧﻘﺶ و ﺻﺪ ﻫﺰار ﻣﺠﻮز)

اﯾﻦ زﯾﺮﺳﺎﺧﺖ در ﺗﻤﺎم اﺑﻌﺎد ﺳﯿﺴﺘﻢ ﮔﻨﺠﺎﻧﺪه ﺷﺪه اﺳﺖ و دﺳﺘﺮﺳ ﺑﻪ ﺑﺨﺶ

ﺑﺰرﮔ از ﮐﻞ ﺳﯿﺴﺘﻢ را ﺑﻪ ﺳﺎدﮔ ﺑﺎ اﯾﺠﺎد ﯾ ﻓﺎﯾﻞ ﮐﻨﺘﺮل دﺳﺘﺮﺳ در ﭘﻮﺷﻪ ﭘﺪر

137

ﻣ ﺗﻮان ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر و ﯾ ﺠﺎ اﻧﺠﺎم داد. اﯾﻦ ﻣﻬﻢ ﺑﺎﻋﺚ ﺷﺪه ﻫﯿﭽ ﺪام از

ﻢﺘﺴﯿﺳﻫﺎی ﻧﯿﺮو ﮔﺮﻓﺘﻪ از اﯾﻦ ﭼﻬﺎرﭼﻮب ﺿﻌﻒ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﻨﺪ.

SEO ۴٬١٬١٬۶ ﭼﻬﺎرﭼﻮب اﺻﻮل ﺑﻬﯿﻨﻪﺳﺎزی ﺑﺮای ﻣﻮﺗﻮرﻫﺎی ﺟﺴﺘﺠﻮ را ﮐﺎﻣﻼ رﻋﺎﯾﺖ ﻣ -

ﮐﻨﺪ. ﭘﺮدازش ﺧﺮوﺟ و ﺗﻤﯿﺰ ﮐﺮدن آن (ﻫﻢ از ﻣﻨﻈﺮ اﻣﻨﯿﺘ ﻫﻢ ﻓﻨ )، آدرﺳﻬﺎی زﯾﺒﺎ

ﺷﺪه و اﻣ ﺎن ﻣﺪﯾﺮﯾﺖ ﯾ دﺳﺘﻪ آدرس ﺑﺎ ﯾ ﮐﻨﺘﺮﻟ ﺮ ﺑﻪ ﺻﻮرت ﯾ ﺠﺎ، از وﯾﮋﮔ ﻫﺎی

اﯾﻦ ﺑﺨﺶ ﻫﺴﺘﻨﺪ.

۴٬١٬١٬٧ وب ﺳﺮوﯾﺲ

ﭼﻬﺎرﭼﻮب از اﺑﺘﺪا از ﺑﯿﺶ از ٨ اﺳﺘﺎﻧﺪارد وب ﺳﺮوﯾﺲ ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﺮده و آﻧﺮا ﺑﻪ

ﺻﻮرت ﮐﺎﻣﻼ ﺷﻔﺎف اراﺋﻪ ﻣ دﻫﺪ. ﮐﻨﺘﺮل دﺳﺘﺮﺳ و ﮐﻨﺘﺮل ﻧﺸﺴﺖ ﺑﺮ روی

ﺳﺮوﯾﺲﻫﺎ وﺟﻮد دارﻧﺪ.

ﺳﺮﻋﺖ ﭘﺮدازﺷ ﺳﺮوﯾﺲﻫﺎ ﺑﺴﯿﺎر ﺑﺎﻻﺳﺖ و زﯾﺮﺳﺎﺧﺖ اﻣ ﺎن اﯾﺠﺎد ﺳﯿﺴﺘﻢﻫﺎی

ﺗﻮزﯾﻊﺷﺪه را ﺑﻪ ﺳﺎدﮔ ﻓﺮاﻫﻢ ﻣ آورد.

۴٬١٬١٬٨ آژاﮐﺲ

ﭼﻬﺎرﭼﻮب در زﯾﺮﺳﺎﺧﺖ MVC ﺧﻮد اﻣ ﺎن وﺟﻮد ﻣﯿﻨ ﮐﻨﺘﺮﻟ ﺮﻫﺎ ﺑﺮای آژاﮐﺲ

را ﻓﺮاﻫﻢ آورده اﺳﺖ. ﻫﻤﭽﻨﯿﻦ ﺣﺬف ﻻﯾﻪ ﻧﻤﺎﯾﺶ ﺑﺮای درﺧﻮاﺳﺖﻫﺎی آژاﮐﺲ ﺑﻪ

ﺳﺎدﮔ ﻣﻬﯿﺎﺳﺖ.

۴٬١٬١٬٩ ﮐﺶ و ﭘﺸﺘﯿﺒﺎن

ﭼﻬﺎرﭼﻮب ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض اﻣ ﺎن Cache ﻧﺪارد و واﺑﺴﺘﻪ ﺑﻪ PHP APC

ﻋﻤﻞ ﻣ ﺪﻨﮐ.

138

۴٬١٬١٬١٠ ﻣﺎﻄﺧ ﺖ ﺮﯾﺪ

ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ در ﭼﻬﺎرﭼﻮب ﺑﻪ ﺑﻬﺘﺮﯾﻦ ﻧﺤﻮ ﭘﯿﺎده ﺳﺎزی ﺷﺪه اﺳﺖ.

ﭼﻬﺎرﭼﻮب ﻫﻮﺷﻤﻨﺪاﻧﻪ وﺿﻌﯿﺖ ﮐﺎری را ﺗﺸﺨﯿﺺ ﻣ دﻫﺪ و ﺑﺮ اﺳﺎس آن اراﺋﻪ و

ﮔﺰارﺷ ﯿﺮی ﺧﻄﺎﻫﺎ را اﻧﺠﺎم ﻣ دﻫﺪ.

ﭼﻬﺎرﭼﻮب ﺧﻄﺎﻫﺎی ﺣﺴﺎس و اﻣﻨﯿﺘ را ﺑﻪ ﻣﺪﯾﺮ ﺳﯿﺴﺘﻢ اﯾﻤﯿﻞ و اساماس

ﻣ ﮐﻨﺪ. ﻫﻤﭽﻨﯿﻦ در وﺿﻌﯿﺖ ﺗﻮﺳﻌﻪ ﺳﯿﺴﺘﻢ، ﺧﻄﺎﻫﺎ ﺑﺎ ﺟﺰﺋﯿﺎت و ﭘﯿﺸﻨﻬﺎدات رﻓ

اراﺋﻪ ﻣ ﺪﻧﻮﺷ.

۴٬١٬١٬١١ ﻣﺪﯾﺮﯾﺖ زﻣﺎن

ﭼﻬﺎرﭼﻮب ﺑﺎ زﯾﺮﺳﺎﺧﺖ Profiling ﻗﺪرﺗﻤﻨﺪ، ﺑﺪون اﺗﮑﺎ ﺑﻪ ﻧﺮماﻓﺰار ﺟﺎﻧﺒﯽ،

ﺗﻤﺎم ﻓﻌﺎﻟﯿﺖﻫﺎ را ﮐﻤ و ﮐﯿﻔ زﻣﺎﻧﺴﻨﺠ ﻣ ﮐﻨﺪ و ﮔﺰارش ﻣﺨﺘﺼﺮی از وﺿﻌﯿﺖ

ﺑﺤﺮاﻧ اﯾﺠﺎد ﻣ ﻧﻤﺎد.

۴٬١٬١٬١٢ اﻟﻮی ﺗﻮﺳﻌﻪ

ﭼﻬﺎرﭼﻮب ﻫﺮ دو اﻟ ﻮی Pull MVC و Push MVC را ﮐﺎﻣﻼ ﭘﺸﺘﯿﺒﺎﻧ ﻣ -

ﮐﻨﺪ و از اوﻟﯿﻦ ﭼﻬﺎرﭼﻮبﻫﺎﯾﯿﺴﺖ ﮐﻪ اﯾﻦ اﻟ ﻮ را اراﺋﻪ دادهاﻧﺪ.

MVC در jFramework ﺑﺎ اﺻﻮل ﻣﻬﻨﺪﺳ ﻧﺮماﻓﺰار ﻃﺮاﺣ ﺷﺪه و زﯾﺒﺎﯾﯽ

ﺳﺎﺧﺘﺎر و ﺳﻬﻮﻟﺖ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ را ﺧﺪﺷﻪدار ﻧﻤ ﻧﻤﺎﯾﺪ. ﻫﻤﭽﻨﯿﻦ ﺑﺮای ﻃﺮاﺣ ﯾ

ﺑﻠﻮک MVC ﺮﺘ ﮐ ﻪﺑ از ١٠ ﺧﻂ ﮐﺪ اﺣﺘﯿﺎج اﺳﺖ.

139

۴٬١٬١٬١٣ ﻗﺎﻟﺐ ﺑﻨﺪی

اﻣ ﺎن ﻗﺎﻟﺐﺑﻨﺪی (ﺳﺮآﯾﻨﺪ/ﺑﺴﺎﯾﻨﺪ) ﺑﻪ ﺻﻮرت ﮐﺮﮐﺮهای و ﻣﺠﺰا در ﻗﺎﻟﺐ ﻓﺎﯾﻞ

ﺳﯿﺴﺘﻢ، از ﻗﺪرﺗﻤﻨﺪﺗﺮﯾﻦ اﻣ ﺎﻧﺎت jFramework اﺳﺖ ﮐﻪ ﻧﯿﺎزی ﺑﻪ ﭘﺎﯾ ﺎه داده ﻧﯿﺰ

ﻧﺪارد.

ﻫﻤﭽﻨﯿﻦ اﻓﺰوﻧﻪﻫﺎی آﻣﺎده ﻣﺘﻌﺪدی ﺑﺮای ﭘﺮدازش و ﻗﺎﻟﺐﺑﻨﺪی ﺧﺮوﺟ (در

ﻢﺘﺴﯿﺳﺎﻫی ﺗﻮﮐﺎر) ﻓﺮاﻫﻢ آﻣﺪه اﺳﺖ.

۴٬١٬١٬١۴ ﻣﺪﯾﺮﯾﺖ زﺑﺎن jFramework ﺗﻨﻬﺎ ﭼﻬﺎرﭼﻮﺑﯿﺴﺖ ﮐﻪ ﻣﺪﯾﺮﯾﺖ زﺑﺎن ﮔﺮاﻓ ﻫﻢﻣﺤﻮر ﭘﺎﯾ ﺎﻫ

را ﺑﺪون ﭘﯿﭽﯿﺪﮔ اراﺋﻪ ﻣ دﻫﺪ. اﻓﺰودن ﯾ زﺑﺎن ﺑﻪ ﺳﯿﺴﺘﻢ در ﮐﻤﺘﺮ از ﭼﻨﺪ دﻗﯿﻘﻪ

ﺑﺪون ﺗﻐﯿﯿﺮ ﮐﺪ اﻣ ﺎن ﭘﺬﯾﺮ اﺳﺖ و واﺳﻂ ﺗﺮﺟﻤﻪ ﺟﻤﻼت ﻧﯿﺎزﻣﻨﺪ ﺗﺮﺟﻤﻪ را اراﺋﻪ ﻣ -

دﻫﺪ .

۴٬١٬١٬١۵ اﻓﺰوﻧﻪﺎﻫ jFramework از اﻟ ﻮی Observer ﺑﻪ دﻻﯾﻞ اﻣﻨﯿﺘ ﭘﺸﺘﯿﺒﺎﻧ ﻧﻤ ﮐﻨﺪ و

ﺑﺮای اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎی ﺷﺨﺺ ﺛﺎﻟﺚ، ﺑﺎﯾﺪ ﺑﺮای آﻧﻬﺎ ﮐﺎﻏﺬﭘﯿﭻ (Wrapper)

ﻧﻮﺷﺖ. اﯾﻨﮑﺎر ﺑﻪ دﻻﯾﻞ اﻣﻨﯿﺘ ﻻزم اﺳﺖ.

در ﺻﻮرﺗ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ اﺻﺮار ﺑﻪ ﻋﺪم اﻧﺠﺎم اﯾﻦ ﻣﻬﻢ داﺷﺘﻪ ﺑﺎﺷﺪ، اﻣ ﺎن

اﺳﺘﻔﺎده ﻋﺎدی از ﮐﺘﺎﺑﺨﺎﻧﻪ ﻧﯿﺰ ﻓﺮاﻫﻢ اﺳﺖ.

۴٬١٬١٬١۶ ﻣﺪﯾﺮﯾﺖ داﻧﻠﻮد

ﭼﻬﺎرﭼﻮب دارای ﻣﺎژول ﭘﺮوﺗﮑﻞ HTTP ﺑﻮده، ﺗﻤﺎم رﻓﺘﺎرﻫﺎی HTTP از

ﺟﻤﻠﻪ ﻣﺪﯾﺮﯾﺖ داﻧﻠﻮد را ﺑﻪ ﺧﻮﺑﯽ ﻣﺪﯾﺮﯾﺖ ﻣ ﮐﻨﺪ. ﺗﻤﺎم ﻣﺤﺘﻮای اراﺋﻪ ﺷﺪه

140

(اﯾﺴﺘﺎ/ﭘﻮﯾﺎ) ﻗﺎﺑﻞ ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﺑﺪون ﺳﺮﺑﺎر ﻫﺴﺘﻨﺪ، ﯾﻌﻨ در ﺻﻮرﺗ ﮐﻪ ﮐﻨﺘﺮل

دﺳﺘﺮﺳ ﺑﺮ روی آﻧﻬﺎ اﻋﻤﺎل ﻧﺸﻮد، ﮐﺘﺎﺑﺨﺎﻧﻪﻫﺎی ﻣﺮﺑﻮﻃﻪ ﺑﺮای دﺳﺘﺮﺳ ﺑﻪ ﻣﻨﺎﺑﻊ

ﺑﺎر ﻧﻤ ﺷﻮﻧﺪ و ﺗﻐﯿﯿﺮی در ﺳﺮﻋﺖ اﯾﺠﺎد ﻧﻤ ﺷﻮد.

ﻫﻤﭽﻨﯿﻦ اﻣ ﺎن ﮐﻨﺘﺮل ﺳﺮﻋﺖ و ﺣﺠﻢ ﻧﯿﺰ ﺑﺪون ﺳﺮﺑﺎر ﻓﺮاﻫﻢ اﺳﺖ.

۴٬١٬١٬١٧ ﺖﺴﺗ

ﭼﻬﺎرﭼﻮب از ﻫﺮ دو ﮐﺘﺎﺑﺨﺎﻧﻪ PHPUnit و SimpleTest ﺑﻪ ﺻﻮرت ﻣﺤﻠ

ﭘﺸﺘﯿﺒﺎﻧ ﻣ ﮐﻨﺪ. ﻫﺮ دو ﮐﺘﺎﺑﺨﺎﻧﻪ ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض درون ﭼﻬﺎرﭼﻮب ﻫﺴﺘﻨﺪ و

اﺳﺘﻔﺎده از آﻧﻬﺎ ﺗﻨﻬﺎ ﻧﯿﺎزﻣﻨﺪ اﯾﺠﺎد ﻓﺎﯾﻞﻫﺎی ﺗﺴﺖ اﺳﺖ.

٤٬١٬١٬١٨ ﺗﻮﮐﺎر

ﭼﻬﺎرﭼﻮب ﺑﯿﺶ از ﯾ ﺳﺎل اﺳﺖ ﮐﻪ اﻣ ﺎن اﺳﺘﻔﺎده ﺗﻮﮐﺎر را ﻓﺮاﻫﻢ آورده

اﺳﺖ. اﯾﻦ ﻣﺪ ﻓﻌﺎﻟﯿﺖ، اﻣ ﺎن اﺳﺘﻔﺎده از ﭼﻬﺎرﭼﻮب و اﻣ ﺎﻧﺎت ﻗﺪرﺗﻤﻨﺪ آﻧﺮا در داﺧﻞ

ﺷ ﻢ ﯾ ﻧﺮماﻓﺰار ﺟﺎﻧﺒﯽ (ﻣﺜﻞ Wordpress) ﻓﺮاﻫﻢ آورده اﺳﺖ.

رﺳﯿﺪن ﺑﻪ اﯾﻦ ﻧﻘﻄﻪ ﻧﯿﺎزﻣﻨﺪ وﺟﻮد ﮐﺪ ﺑﺴﯿﺎر ﻣﺮﺗﺐ و ﺳﺎزﻣﺎنﯾﺎﻓﺘﻪ ﺑﺮای

ﭼﻬﺎرﭼﻮب ﺑﻮده اﺳﺖ.

۴٬١٬٢ ﻟﯿﺴﺎﻧﺲ و دﺳﺘﺮﺳ ﭼﻬﺎرﭼﻮب

ﭼﻬﺎرﭼﻮب و ﺗﻤﺎﻣ اﻓﺰوﻧﻪﻫﺎی ﻣﺤﻮری آن ﺗﺤﺖ ﻟﯿﺴﺎﻧﺲ LGPL ﺑﻮده و ﮐﺎﻣﻼ

ﻣﺘﻦ ﺑﺎز ﻣ ﺑﺎﺷﺪ. ﮐﺪ ﻣﻨﺒﻊ ﭼﻬﺎرﭼﻮب در ﺳﺎﯾﺖ jframework.info و .net ﻗﺎﺑﻞ دﺳﺘﺮﺳ ﺑﻮده و ﺳﯿﺴﺘﻢ ﮐﻨﺘﺮل ﻧﺴ آن ﺗﻤﺎﻣ ﻧﺴ آﻧﺮا در

اﺧﺘﯿﺎر ﻗﺮار ﻣ دﻫﺪ.

141

آﺧﺮﯾﻦ ﻧﺴﺨﻪ ﭼﻬﺎرﭼﻮب ﻧﺴﺨﻪ ٣٬۵ اﺳﺖ و ﺣﺠﻢ آن ﮐﻤﺘﺮ از ۵ ﻣ ﺎﺑﺎﯾﺖ ﻣ ﺪﺷﺎﺑ.

ﺳﺮﻋﺖ ﭼﻬﺎرﭼﻮب در ﻣﻘﺎﯾﺴﻪ ﺑﺎ ٩٠% ﭼﻬﺎرﭼﻮبﻫﺎی PHP ﺑﺎﻻﺗﺮ اﺳﺖ.

142

٤٬٢ راﻫﮑﺎرﻫﺎی اﻣﻨﯿﺘﯽ ﭼﻬﺎرﭼﻮب

در اﯾﻦ ﺑﺨﺶ، راﻫ ﺎر ﻣﻌﻀﻼت ﻣﻌﺮﻓ ﺷﺪه در ﺑﺨﺶ ٣٬٢ ﺑﻪ ﺗﻔﺼﯿﻞ اراﺋﻪ ﻣ ﺪﻧﻮﺷ.

ﻋﻨﻮان ﻫﺮ راﻫ ﺎر ﺑﺎ ﻋﻨﻮان ﺣﻤﻠﻪ ﻣﺮﺑﻮﻃﻪ ﯾ ﺴﺎن در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه ﺗﺎ ﻣﺨﺎﻃﺐ ﺑﺘﻮاﻧﺪ ﺑﻪ ﺳﺎدﮔ

راﻫ ﺎر ﺣﻤﻠﻪ را ﭘﯿﺪا و ﻣﻄﺎﻟﻌﻪ ﮐﻨﺪ.

ﺑﺴﯿﺎری از راﻫ ﺎرﻫﺎ ﺑﻪ زﺑﺎن ﻻﺗﯿﻦ در ﺳﺎﯾﺖ OWASP.org ﻗﺎﺑﻞ دﺳﺘﺮﺳ ﻣ ﺪﻨﺷﺎﺑ.

ﻻزم ﺑﻪ ذﮐﺮ اﺳﺖ ﮐﻪ اﮐﺜﺮ ﻣﻄﺎﻟﺐ ﻣﺮﺗﺒﻂ در اﯾﻦ ﻣﺴﺘﻨﺪ ﮐﻪ در ﺳﺎﯾﺖ ﻓﻮق در دﺳﺘﺮﺳ ﻫﺴﺘﻨﺪ،

ﺗﻮﺳﻂ ﻫﻤﯿﻦ ﻧﮕﺎرﻧﺪه اﯾﺠﺎد ﺷﺪهاﻧﺪ.

SQL Injection ۴٬٢٬١ ﺳﻪ راه ﮐﻠ ﺑﺮای دﻓﺎع در ﺑﺮاﺑﺮ ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ وﺟﻮد دارد ﮐﻪ در ﺻﻮرت

اﺳﺘﻔﺎده ﺻﺤﯿﺢ، اﻣﻨﯿﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻬ را اراﺋﻪ ﻣ دﻫﻨﺪ. اﯾﻦ ﺳﻪ روش در زﯾﺮ ﻣﻄﺮح ﺷﺪه-

اﻧﺪ:

Escaping ۴٬٢٬١٬١ Escaping ﺖﻣ ﻋ ﻪﺑﮔﺬاری ﮐﺎراﮐﺘﺮﻫﺎی ﺧﺎص و ﻣﻌﻨ ﺑﺨﺸﯿﺪن ﺑﻪ آﻧﻬﺎ ﮔﻔﺘﻪ

ﻣ ﺷﻮد. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل در زﺑﺎن ﺳ ، ﺑﺮای ﻧﺸﺎن دادن ﮐﺎراﮐﺘﺮ ﺧﻂ ﺟﺪﯾﺪ، از n\

اﺳﺘﻔﺎده ﻣ ﮐﻨﯿﻢ. ﺣﺎل اﮔﺮ ﺑﺨﻮاﻫﯿﻢ ﺧﻮد ﮐﺎراﮐﺘﺮ \ را ﻧﻤﺎﯾﺶ دﻫﯿﻢ، از آﻧﺠﺎﯾﯽ ﮐﻪ

اﯾﻦ ﮐﺎراﮐﺘﺮ ﺑﺮای ﻣﻌﻨ دار ﮐﺮدن دﯾ ﺮ ﮐﺎراﮐﺘﺮﻫﺎ ﺑﻪ ﮐﺎر ﻣ رود، ﺑﺎﯾﺪ آﻧﺮا Escape

ﻢﯿﻨﮐ. \\ در ﺳ ﻣﻌﺎدل ﯾ ﮐﺎراﮐﺘﺮ و \ ﻣ ﺪﺷﺎﺑ.

ﮐﺎراﮐﺘﺮﻫﺎﯾﯽ ﮐﻪ ﻣﻌﻨ ﻏﯿﺮدادهای دارﻧﺪ (ﻣﺜﻞ ”,‘ در ﯾ رﺷﺘﻪ) و ﻣﻔﻬﻮﻣ ﻣ -

رﺳﺎﻧﻨﺪ، ﺑﺮای اﯾﻨﮑﻪ ﺧﻮدﺷﺎن را اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﺑﺎﯾﺪ آﻧﻬﺎ را Escape ﯿﻨﮐﻢ.

143

ﺑﺎ اﺳ ﯿﭗ ﮐﺮدن ﺗﻤﺎم ﮐﺎراﮐﺘﺮﻫﺎی ﻣﻌﻨ دار در ﻋﺒﺎرت ورودی ﮐﺎرﺑﺮ، و ﺳﭙﺲ

ﭼﺴﺒﺎﻧﺪن آن ﺑﻪ درﺧﻮاﺳﺖ، ﻣﺸ ﻞ ﺗﺰرﯾﻖ ﺣﻞ ﺧﻮاﻫﺪ ﺷﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل رﻣﺰ ’1 or 1=’1 ﮐﻪ ﺑﺎﻋﺚ ﺧﻄﺮ ﻣ ﺷﺪ ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﺒﺪﯾﻞ ﻣ ﺷﻮد:

SELECT * FROM users

WHERE Username=’’ AND Password=’1\’ or 1=\’1’

ﮐﻪ در آن ‘ ﻫﺎ ﺑﻪ ﻣﻌﻨ ﮐﺎراﮐﺘﺮ ﻣﺮﺑﻮﻃﻪ ﻫﺴﺘﻨﺪ، ﻧﻪ ﺟﺪا ﮐﻨﻨﺪه رﺷﺘﻪ از

درﺧﻮاﺳﺖ.

ﻣﺸ ﻠ ﮐﻪ در اﯾﻦ روش وﺟﻮد دارد و ﺑﺎﻋﺚ ﻣ ﺷﻮد ﺗﻮﺻﯿﻪ ﻧﺸﻮد، آﻧﺴﺖ

ﮐﻪ اوﻻ ﻓﯿﻠﺪﻫﺎی ﻋﺪدی ﮐﻪ در درﺧﻮاﺳﺖ داﺧﻞ ‘ ﻗﺮار ﻧﮕﺮﻓﺘﻪاﻧﺪ، ﻫﻨﻮز ﻗﺎﺑﻞ

ﺗﺰرﯾﻖ ﻫﺴﺘﻨﺪ و ﺛﺎﻧﯿﺎ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﺑﺎﯾﺪ ﻫﻤﻮاره وﻗﺘ ﻋﺒﺎرت ﮐﺎرﺑﺮ را درج ﻣ ﺪﻨﮐ،

آﻧﺮا اﺳ ﯿﭗ ﮐﻨﺪ. اﮔﺮ در ﯾ ﻣﻮرد اﯾﻦ ﻣﻬﻢ ﻓﺮاﻣﻮش ﺷﻮد، ﺳﯿﺴﺘﻢ ﺧﺪﺷﻪدار ﻣ -

ﺷﻮد .

۴٬٢٬١٬٢ دﺳﺘﻮرات ﻣﻬﯿﺎ ﺷﺪه (Prepared Statement)

ﯾ از اﻣ ﺎﻧﺎت ﺳﯿﺴﺘﻢﻫﺎی ﭘﺎﯾ ﺎﻫ ، دﺳﺘﻮرات ﻣﻬﯿﺎ ﺷﺪه اﺳﺖ. در اﯾﻦ

اﻣ ﺎن، ﯾ درﺧﻮاﺳﺖ ﺑﺪون داده ﺑﻪ ﭘﺎﯾ ﺎه داده ارﺳﺎل ﻣ ﺷﻮد ﺗﺎ آﻧﺮا ﺑﺮرﺳ ﮐﺮده

ﺑﺮای اﺟﺮا ﻣﻬﯿﺎ ﮐﻨﺪ. ﺳﭙﺲ دادهﻫﺎ ﺟﺪاﮔﺎﻧﻪ ﺑﻪ ﭘﺎﯾ ﺎه داده ارﺳﺎل ﻣ ﺷﻮﻧﺪ ﺗﺎ در ﻗﺎﻟﺐ

آن دﺳﺘﻮر ﻗﺮار ﮔﺮﻓﺘﻪ اﺟﺮا ﺷﻮﻧﺪ. اﯾﻨﮑﺎر اﺟﺮای ﭼﻨﺪﯾﻦ دﺳﺘﻮر ﯾ ﻧﻮع را ﺑﺎ ﺳﺮﻋﺖ

ﺑﺎﻻ ﻓﺮاﻫﻢ ﻣ آورد.

اﯾﻦ روش اﺧﺘﻼف ﺳﺮﻋﺖ ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﺑﺎ روش ﻣﻌﻤﻮﻟ در اﺟﺮای ﯾ ﺗﮏ

دﺳﺘﻮر ﻧﺪارد، ﻟﺬا ﻣ ﺗﻮان از آن ﺑﺮای رﻓ ﺗﺰرﯾﻖ ﺑﻬﺮه ﮔﺮﻓﺖ. ﺑﺮای ﻧﻤﻮﻧﻪ ﺗﺎﺑﻊ زﯾﺮ در

144

PHP ﺑﺎ اﺳﺘﻔﺎده از واﺳﻂ MySQLi و دﺳﺘﻮرات ﻣﻬﯿﺎ ﺷﺪه، ﯾ درﺧﻮاﺳﺖ ﭘﺎﯾ ﺎﻫ

را اﺟﺮا ﻣ ﺪﯾﺎﻤﻧ: tion SQL($Query) { global $DB; $args = func_get_args(); if (count($args) == 1) { $result = $DB->query($Query); if ($result->num_rows) { $out = array(); while (null!=($r=$result->fetch_array(MYSQLI_ASSOC))) $out [] = $r; return $out; } return null; } else { if (!$stmt = $DB->prepare($Query)) trigger_error("Unable to prepare {$Query}, reason: " . $DB->error ); array_shift($args); //remove $Query from args lines copy an array values in PHP ٣ the following// $a = array(); foreach ($args as $k => &$v) $a[$k] = &$v; $types = str_repeat("s", count($args)); //all params are strings, works well on MySQL and SQLite array_unshift($a, $types); call_user_func_array(array($stmt, 'bind_param'), $a); $stmt->execute(); //fetching all results in a 2D array $metadata = $stmt->result_metadata(); $out = array(); $fields = array(); if (!$metadata) return null; $length = 0; while (null!=($field = mysqli_fetch_field($metadata))) { $fields [] = &$out [$field->name]; $length+=$field->length; } call_user_func_array(array( $stmt, "bind_result" ), $fields); $output = array(); $count = 0; while ($stmt->fetch()) { foreach ($out as $k => $v) $output [$count] [$k] = $v; $count++; } $stmt->free_result(); return ($count == 0) ? null : $output;

145

} }

ﺟﻬﺖ اﺳﺘﻔﺎده از اﯾﻦ ﺗﺎﺑﻊ، درﺧﻮاﺳﺖ ﺑﺎﯾﺪ ﺑﻪ ﺻﻮرت زﯾﺮ ﺑﻪ ﺗﺎﺑﻊ ارﺳﺎل ﺷﻮد:

$res=SQL("SELECT * FROM users WHERE ID>? ORDER BY ? ASC LIMIT ?" , 5 , "Username" , 2);

در اﺳﺘﻔﺎده از اﯾﻦ روش ﺑﺴﯿﺎر ﻣﻬﻢ اﺳﺖ ﮐﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻫﯿﭽﻮﻗﺖ رﺷﺘﻪ-

ﻫﺎ را ﻣﺘﺼﻞ (Concat) ﻧﮑﻨﺪ و ﺗﻨﻬﺎ از ﻋﻼﻣﺖ ﺳﻮال ﺑﻪ ﻋﻨﻮان ﺟﺎﯾ ﺰﯾﻦ اﺳﺘﻔﺎده

ﻧﻤﺎﯾﺪ، و داده ﻫﺎ را در ﻗﺎﻟﺐ ﭘﺎراﻣﺘﺮ ﺑﻪ ﺗﺎﺑﻊ ارﺳﺎل ﻧﻤﺎﯾﺪ. اﺳﺘﻔﺎده از اﯾﻦ روش ﺑﻪ

ﺷﺪت ﺗﻮﺻﯿﻪ ﻣ ﺷﻮد و ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻧﯿﺰ ﺑﺎ ﯾ ﻗﺎﻋﺪه ﮐﻠ ﻣ ﺗﻮاﻧﺪ ﮐﻞ ﻣﺸ ﻼت

ﺗﺰرﯾﻖ را رﻓ ﻧﻤﺎﯾﺪ.

ﺗﺎﺑﻊ زﯾﺮ ﻧﯿﺰ ﺑﺎ ﻻﯾﻪ اﻧﺘﺰاﻋ ﺳﺎزی PDO در PHP ﻫﻤﺎن ﻣﻨﻈﻮر را ﺑﺮآورده

ﻣ ﮐﻨﺪ و ﺑﺮای ﺗﻤﺎم ﭘﺎﯾ ﺎهﻫﺎی داده ﻗﺎﺑﻞ اﺳﺘﻔﺎده اﺳﺖ: function SQL($Query) { global $DB; $args = func_get_args(); if (count($args) == 1) { $result = $DB->query($Query); if ($result->rowCount()) { return $result->fetchAll(PDO::FETCH_ASSOC); } return null; } else { if (!$stmt = $DB->prepare($Query)) { $Error = $DB->errorInfo(); trigger_error("Error: {$Query}, reason: {$Error[2]}"); } array_shift($args); //remove $Query from args $i = 0; foreach ($args as &$v) $stmt->bindValue(++$i, $v); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_ASSOC); } }

146

۴٬٢٬١٬٣ ﺑﺮرﺳ ورودی

ﺑﺮرﺳ ورودی ﻫﻤﻮاره راهﺣﻞ ﻣﺸ ﻼت ﺗﺰرﯾﻘ اﺳﺖ، اﻣﺎ ﺑﻪ دﻟﯿﻞ دﺷﻮاری

ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ آن، ﻣﻌﻤﻮﻻ اﺳﺘﻔﺎده ﻧﻤ ﺷﻮد. ﺑﺮرﺳ ورودی ﺑﻪ دو روش ﻗﺎﺑﻞ اﻧﺠﺎم

اﺳﺖ ﮐﻪ ﺗﻨﻬﺎ روش دوم از ﻧﻈﺮ اﻣﻨﯿﺘ ﺗﺎﯾﯿﺪ ﺷﺪه اﺳﺖ.

ﺑﺮرﺳ ورودی در SQL ﻫﻨﮕﺎﻣﯿ ﻪ ﻧﯿﺎز ﺑﻪ ﺳﺎﺧﺘﻦ درﺧﻮاﺳﺖﻫﺎی ﭘﻮﯾﺎ (ﺗﻌﺪاد

ﭘﺎراﻣﺘﺮﻫﺎی ﻣﺘﻐﯿﺮ) و ﯾﺎ ارﺳﺎل ﭘﺎراﻣﺘﺮﻫﺎی ﻏﯿﺮدادهای (LIMIT) دارﯾﻢ، ﮐﺎرﺑﺮ

اﺳﺎﺳ دارد.

۴٬٢٬١٬٣٬١ ﻟﯿﺴﺖ ﺳﯿﺎه

در اﯾﻦ روش ﺑﺮرﺳ ورودی، ﻋﺒﺎراﺗ ﮐﻪ ﻧﺎﻣﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ رد ﻣ ﺷﻮﻧﺪ. از

آﻧﺠﺎﯾﯽ ﮐﻪ ﭘﯿﺪا ﮐﺮدن ﻫﻤﻪ ﻋﺒﺎرات ﻧﺎﻣﻨﺎﺳﺐ از ﻧﻈﺮ ﻣﻨﻄﻘ ﻣﻤ ﻦ ﻧﯿﺴﺖ،

ﻪﻣﺎﻧﺮ ﻻﻮﻤﻌﻣﻧﻮﯾﺲ در ﭘﯿﺎدهﺳﺎزی اﯾﻦ روش رﺧﻨﻪای را ﺑﺎز ﻣ ﮔﺬارد ﮐﻪ

ﻧﻔﻮذﮔﺮان ﺑﺎ ﮐﺸﻒ آن، ﻋﺒﺎرات ﻧﺎﻣﻨﺎﺳﺒﯽ را از اﯾﻦ ﺑﺮرﺳ ﻋﺒﻮر ﻣ دﻫﻨﺪ.

ﺑﻪ روﺷﻬﺎی ﺟﺪﯾﺪ ﮐﺸﻒ ﺷﺪه در ﮔﺬر از ﯾ ﻟﯿﺴﺖ ﺳﯿﺎه، Vector ﻣ -

ﺪ ﻨ ﯾ ﻮ ﮔ .

۴٬٢٬١٬٣٬٢ ﺪﯿﻔﺳ ﺖﺴﯿﻟ

در ﺑﺮرﺳ ﻟﯿﺴﺖ ﺳﻔﯿﺪ، ﺗﻨﻬﺎ ﻣﻮاردی ﮐﻪ ﻣﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ، اﺟﺎزه ﻋﺒﻮر ﭘﯿﺪا

ﻣ ﮐﻨﻨﺪ. ﻟﯿﺴﺖ ﮐﺮدن ﺗﻤﺎم ﻣﻘﺎدﯾﺮ ﻣﻨﺎﺳﺐ، ﮐﺎری دﺷﻮار اﺳﺖ وﻟ ﺿﺮﯾﺐ

اﻣﻨﯿﺘ ﺑﺴﯿﺎر ﺑﺎﻻﺗﺮی را اراﺋﻪ ﻣ ﺪﻨﮐ.

147

۴٬٢٬٢ ﺗﺰرﯾﻘﺎت دﯾﺮ

راه ﺣﻞ ﮐﻠ ﺟﻠﻮﮔﯿﺮی از ﺗﺰرﯾﻘﺎت ﻣﺨﺘﻠﻒ، ﺑﺮرﺳ ﻟﯿﺴﺖ ﺳﻔﯿﺪ اﺳﺖ. در زﯾﺮ ﺑﺴﺘﻪ ﺑﻪ

ﻧﻮع ﺗﺰرﯾﻖ ﺟﺰﺋﯿﺎت راهﮐﺎر ﺑﺮرﺳ ﻣ ﺪﻧﻮﺷ:

۴٬٢٬٢٬١ ﺗﺰرﯾﻖ ﺑﻪ ﮐﻨﺴﻮل

ﺗﺰرﯾﻖ ﺑﻪ ﮐﻨﺴﻮل ﻧﯿﺰ ﻗﺎﺑﻞ Escaping اﺳﺖ وﻟ ﻧﻔﻮذﮔﺮان ﻫﻤﻮاره Vectorﯽﯾﺎﻫ

ﺑﺮای رد اﺳ ﯿﭗ ﭘﯿﺪا ﻣ ﮐﻨﻨﺪ. در ﺗﺰرﯾﻖ ﺑﻪ ﮐﻨﺴﻮل ﺑﺎﯾﺪ ﺑﺴﯿﺎر دﻗﺖ داﺷﺖ و ﺗﻮﺳﻂ

ﯾ Regular Expression ورودی را ﺑﺮرﺳ ﻟﯿﺴﺖ ﺳﻔﯿﺪ ﮐﺮد.

۴٬٢٬٢٬٢ ﺗﺰرﯾﻖ ﮐﺪ

دﻓﺎع از ﺗﺰرﯾﻖ ﮐﺪ، ﺗﻨﻬﺎ ﺑﺎ ﺣﺬف آن ﻣﯿﺴﺮ ﻣ ﺷﻮد. اﻣ ﺎن اﺟﺮای ﮐﺪ ﺑﺮای ﻫﯿﭻ

ﮐﺎرﺑﺮی ﻧﺒﺎﯾﺪ ﻣﻬﯿﺎ ﺑﺎﺷﺪ، ﻣ ﺮ اﯾﻨﮑﻪ دﺳﺘﺮﺳ ﺑﻪ ﺻﻔﺤﻪ ﻣﺮﺑﻮﻃﻪ ﺑﻌﺪ از ﮐﻨﺘﺮل

دﺳﺘﺮﺳ و ﻣ ﺎﻧﯿﺰمﻫﺎی اﻣﻨﯿﺘ ﻣﺘﻌﺪد ﻣﻬﯿﺎ ﺷﺪه ﺑﺎﺷﺪ.

ﺑﻪ دﻟﯿﻞ ﭘﯿﭽﯿﺪﮔ زﺑﺎنﻫﺎی ﺑﺮﻧﺎﻣﻪﺳﺎزی، Vectorﻫﺎی ﺑﺴﯿﺎر زﯾﺎدی ﺑﺮای ﻋﺒﻮر از

ﻫﺮﮔﻮﻧﻪ ﺑﺮرﺳ اﯾﻦ ﻣﻮﻟﻔﻪ وﺟﻮد دارﻧﺪ.

۴٬٢٬٢٬٣ ﺗﺰرﯾﻘﺎت دﯾﺮ

در اﯾﻨﮕﻮﻧﻪ ﺗﺰرﯾﻘﺎت ﻧﯿﺰ دﻗﺖ و ﺑﺮرﺳ ﻟﯿﺴﺖ ﺳﻔﯿﺪ ﺗﻨﻬﺎ راه اراﺋﻪ ﺷﺪه ﻫﺴﺘﻨﺪ.

اﺳﺘﻔﺎده از ﺑﺮرﺳ ﻟﯿﺴﺖ ﺳﻔﯿﺪ، ﻣﺸ ﻞ ﺗﺰرﯾﻖ را ﺑﻪ ﺻﻮرت ﮐﺎﻣﻞ رﻓ ﻣ ﺪﯾﺎﻤﻧ.

148

۴٬٢٬٣ اﺳﺮﯾﭗﺴﯾﻮﻧ ﺘﯾﺎ ﻦﯿﺑ

ﮐﺎوﺷ ﺮﻫﺎی وب، HTML ﻏﯿﺮ اﺳﺘﺎﻧﺪارد و ﻧﺎدرﺳﺖ – ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل HTMLای

ﮐﻪ ﯾ ﺑﺮﭼﺴﺐ در آن ﺑﺴﺘﻪ ﻧﺸﺪه ﺑﺎﺷﺪ – را اﺻﻼح ﮐﺮده و ﺑﻪ درﺳﺘ ﭘﺮدازش ﻣ ﺪﻨﻨﮐ.

اﯾﻦ اﻣﺮ ﺑﻪ دﻟﯿﻞ اﻓﺰاﯾﺶ ﻣﺸﺘﺮی و رﺿﺎﯾﺖ آن از ﻧﺮماﻓﺰار ﮔﻨﺠﺎﻧﯿﺪه ﺷﺪه اﺳﺖ. ﻫﺮ

ﮐﺎوﺷ ﺮی ﻧﯿﺰ اﯾﻦ ﮐﺎر را ﺑﻪ ﺻﻮرت ﺧﺎﺻ اﻧﺠﺎم ﻣ دﻫﺪ.

ﺑﻪ دﻟﯿﻞ وﯾﮋﮔ ﺑﺎﻻ، ﺟﻠﻮﮔﯿﺮی از XSS ﺑﺴﯿﺎر ﺑﺴﯿﺎر دﺷﻮار اﺳﺖ. در ﺟﻠﻮﮔﯿﺮی از

XSS ﻣ ﺗﻮان دو ﺳﻨﺎرﯾﻮ ﻣﺨﺘﻠﻒ ﻣﺘﺼﻮر ﺷﺪ:

۴٬٢٬٣٬١ ﻧﯿﺎزی ﺑﻪ ﺑﺮﭼﺴﺐ ﻧﯿﺴﺖ

در ورودیﻫﺎﯾﯽ ﮐﻪ اﺻﻼ ﻧﯿﺎزی ﺑﻪ وﺟﻮد ﺑﺮﭼﺴﺐ ﻧﯿﺴﺖ (ﻣﺜﻞ ﻧﺎم ﮐﺎرﺑﺮ ﯾﺎ ﻫﺮ

ورودی ﺳﺎده دﯾ ﺮ)، ﮐﺎﻓﯿﺴﺖ ﺗﻤﺎم ﮐﺎراﮐﺘﺮﻫﺎی ﻣﻌﻨﺎ دار در HTML ﺣﺬف و

اﺳ ﯿﭗ ﺷﻮﻧﺪ. ﺗﺎﺑﻊ htmlspecialchars در PHP اﯾﻨﮑﺎر را اﻧﺠﺎم ﻣ دﻫﺪ. ﭘﺲ از

ﮔﺬر از اﯾﻦ ﺗﺎﺑﻊ، رﺷﺘﻪﻫﺎ ﺑﯽ ﺧﻄﺮ ﻣ ﺷﻮﻧﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل رﺷﺘﻪ زﯾﺮ ﭘﺲ از ﮔﺬر از

ﺗﺎﺑﻊ ﻧﻤﺎﯾﺶ داده ﺷﺪه اﺳﺖ:

<script>alert(‘1’);</script>

ﺑﺎﯾﺪ ﺗﻮﺟﻪ داﺷﺖ ﮐﻪ اﯾﻦ راﻫ ﺎر ﻓﻘﻂ ﺑﺮای دادهﻪﮐ ﯽ ﺎﻫ درون ﯾ ﺑﺮﭼﺴﺐ

ﻗﺮار ﻣ ﮔﯿﺮﻧﺪ ﺟﻮاﺑ ﻮﺳﺖ. ﻣﺜﻼ ﻣﺘﻦ ﯾ ﻓﯿﻠﺪ ﻣﺘﻨ در ﯾ ﻓﺮم HTML، درون

ﺖﻔﺻ value ﻗﺮار ﻣ ﮔﯿﺮد:

149

در اﯾﻦ ﺻﻮرت، ﺑﺎ htmlspecialchars ﻧﯿﺰ ﻣﺸ ﻞ رﻓ ﻧﻤ ﺷﻮد و ﻧﻔﻮذﮔﺮ

ﻣ ﺗﻮاﻧﺪ ﺑﺎ ﺗﺰرﯾﻖ ﻋﺒﺎرت زﯾﺮ XSS ﺪﻧﺰﺑ:

‘ onload=’alert(1)’ title=’

ﮐﻪ ﻓﯿﻠﺪ را ﺑﻪ ﻋﺒﺎرت زﯾﺮ ﺗﺒﺪﯾﻞ ﻣ ﺪﻨﮐ:

اﯾﻦ ﻓﯿﻠﺪ ﻧﯿﺰ ﺑﻪ ﻣﺤﺾ ﺑﺎر ﺷﺪن، اﺳ ﺮﯾﭙﺖ ﻣﺮﺑﻮط ﺑﻪ رﺧﺪاد ﺧﻮد را اﺟﺮا ﻣ ﺪﻨﮐ.

۴٬٢٬٣٬٢ ﺑﺮﭼﺴﺐ ﻻزم اﺳﺖ

در ﻣﻮاردی ﮐﻪ ﻧﯿﺎز ﺑﻪ درﯾﺎﻓﺖ ﺑﺮﭼﺴﺐ در ورودی ﮐﺎرﺑﺮ ﻫﺴﺖ، ﻣﺜﻞ ﯾ وﺑﻼگ،

ﯾ ﻓﻮروم و ﯾﺎ ﺳﺎﯾﺘ ﻣﺜﻞ ﻓﯿﺲ ﺑﻮک ﮐﻪ در ﻧﻈﺮات ﮐﺎرﺑﺮ ﺗﺼﻮﯾﺮ و ﻟﯿﻨﮏ ﻧﯿﺰ ﻗﺒﻮل

ﻣ ﮐﻨﺪ، ﻣﺸ ﻞ ﺑﺴﯿﺎر ﺣﺎد ﻣ ﺷﻮد.

ﻪﻧﺎﺨﺑﺎﺘﮐﻫﺎی ﻋﻈﯿﻤ وﺟﻮد دارﻧﺪ ﮐﻪ ﺑﺎ روش ﻟﯿﺴﺖ ﺳﯿﺎه، ﻣﻮارد ﺧﻄﺮﻧﺎک را از

اﯾﻨﮕﻮﻧﻪ دادهﻫﺎ ﺣﺬف ﻣ ﮐﻨﻨﺪ. اﺳﺘﻔﺎده از روش ﻟﯿﺴﺖ ﺳﻔﯿﺪ ﻣﻤ ﻦ ﻧﯿﺴﺖ، زﯾﺮا

HTML ﺑﯿﻨﻬﺎﯾﺖ ﺣﺎﻟﺖ ﻣﻌﺘﺒﺮ دارد.

ﻫﻤﭽﻨﯿﻦ اﺳﺘﻔﺎده از روش ﻟﯿﺴﺖ ﺳﯿﺎه، ﯾﺎ ﺑﺎﯾﺪ ﻫﻤﻪ دادهﻫﺎی ﻣﺤﺘﻤﻞ ﺑﺮ ﺧﻄﺮ را

ﺣﺬف ﮐﻨﺪ، ﮐﻪ در اﯾﻨﺼﻮرت رﺿﺎﯾﺖ ﮐﺎرﺑﺮ ﮐﺎﻫﺶ ﭘﯿﺪا ﻣ ﮐﻨﺪ: ﯾﺎ ﺑﺎﯾﺪ ﺗﻨﻬﺎ دادهﯽﯾﺎﻫ

ﮐﻪ ﻣﻄﻤﺌﻦ ﺑﻪ ﺧﻄﺮﻧﺎک ﺑﻮدن آﻧﻬﺎﺳﺖ ﺣﺬف ﮐﻨﺪ، ﮐﻪ در اﯾﻨﺼﻮرت دادهﻫﺎی ﻣﻨﻄﻘﺎ

ﺧﻄﺮﻧﺎک ﺑﺎﻗ ﻣ ﺪﻧﺎﻣ.

ﻣﺜﻼ در ﺣﺎل دوم ﯾ ﻧﻔﻮذﮔﺮ ﻣ ﺗﻮاﻧﺪ ﺑﺎ درج CSS ای، ﯾ ﺑﺮﭼﺴﺐ را ﺑﺮ روی

ﮐﻞ ﺻﻔﺤﻪ ﺑﻪ ﺻﻮرت ﺗﻤﺎم ﺻﻔﺤﻪ ﻗﺮار دﻫﺪ و ﺑﺮ روی ان ﻋﺒﺎرت «اﯾﻦ ﺳﺎﯾﺖ ﻫ

150

ﺷﺪه اﺳﺖ» ﺑﻨﻮﯾﺴﺪ. ﮐﺎرﺑﺮی ﮐﻪ اﯾﻦ ﺻﻔﺤﻪ را ﻣﺸﺎﻫﺪه ﮐﻨﺪ اﻣ ﺎن ﺗﺸﺨﯿﺺ ﻓﺮق آن

ﻪﺤ ﺻ ﺎﺑای ﮐﻪ ﻣﺤﺘﻮای ﮐﺎﻣﻞ آن ﺗﻮﺳﻂ ﻧﻔﻮذﮔﺮ ﻋﻮض ﺷﺪه ﺑﺎﺷﺪ، ﻧﺪارد.

ﻪﻧﺎﺨﺑﺎﺘﮐﻫﺎی ﺗﺼﻔﯿﻪ داده ﺑﺴﯿﺎر ﺣﺠﯿﻢ و ﮐﻨﺪ ﻫﺴﺘﻨﺪ. از اﯾﻦ دﺳﺘﻪ ﮐﺘﺎﺑﺨﺎﻧﻪﺎﻫ

ﻣ ﺗﻮان ﺑﻪ HTML Purifier و OWASP Antisammy اﺷﺎره ﻧﻤﻮد.

ﺑﻪ ﺧﺎﻃﺮ ﺟﻤﯿﻊ دﻻﯾﻞ ﻓﻮق، XSS ﻫﻨﻮز ﺣﻤﻠﻪای ﻣﻬﺎر ﻧﺸﺪه اﺳﺖ. اﮐﺜﺮ ﺳﺎﯾﺘﻬﺎی

ﻣﻬﻢ ﺳﺎﻟ ﭼﻨﺪﯾﻦ ﺑﺎر ﺑﺎ اﯾﻦ ﺣﻤﻠﻪ ﻫ ﻣ ﺷﻮﻧﺪ. در ﺣﺎل ﺣﺎﺿﺮ ﺗﻤﺮﮐﺰ ﺟﺎﻣﻌﻪ اﻣﻨﯿﺖ وب

ﺑﺮ روی اﻓﺰودن اﻣ ﺎﻧﺎت ﺑﻪ ﮐﺎوﺷ ﺮ وب ﺑﺮای ﺟﻠﻮﮔﯿﺮی از اﯾﻦ ﺣﻤﻠﻪﺖﺳﺎﻫ.

ﻫﻤﭽﻨﯿﻦ ﮐﻤﺘﺮ ﺳﯿﺴﺘﻤ ﭘﯿﺪا ﻣ ﺷﻮد ﮐﻪ ﺗﻤﺎﻣ ﺧﺮوﺟ ﻣﺸ ﻮک آن، ﻓﯿﻠﺘﺮ و

ﺗﺼﻔﯿﻪ ﺷﺪه ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ داده ﺷﻮد، و ﻫﯿﭻ راه زﯾﺮﺳﺎﺧﺘ ﺑﺮای ﺗﺸﺨﯿﺺ

ﺧﺮوﺟ ﻣﺸ ﻮک از ﺧﺮوﺟ ﻣﻄﻤﺌﻦ وﺟﻮد ﻧﺪارد.

۴٬٢٬۴ اﻧﻀﻤﺎم ﻓﺎﯾﻞ ﻣﺨﺮب

رﻓ اﯾﻦ ﺣﻤﻠﻪ ﺑﻪ ﻧﺴﺒﺖ ﺳﺎده اﺳﺖ، ﮐﺎﻓﯿﺴﺖ در دﺳﺘﻮراﺗ ﮐﻪ ﻓﺎﯾﻞ ﺑﻪ ﮐﺪ

ﺿﻤﯿﻤﻪ ﻣ ﮐﻨﻨﺪ، از ﻣﺘﻐﯿﺮﻫﺎ، ﺧﺼﻮﺻﺎ ﻣﺘﻐﯿﺮﻫﺎﯾﯽ ﮐﻪ ﮐﺎرﺑﺮ در آﻧﻬﺎ ﺗﺎﺛﯿﺮ داﺷﺘﻪ

اﺳﺖ، اﺳﺘﻔﺎده ﻧﺸﻮد.

در اﮐﺜﺮ ﻣﺤﯿﻂﻫﺎی ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴ ﺟﺪﯾﺪ، اﮔﺮ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ در اﯾﻦ دﺳﺘﻮرات از

ﻣﺘﻐﯿﺮ اﺳﺘﻔﺎده ﮐﻨﺪ، ﻣﺤﯿﻂ ﺑﻪ وی اﺧﻄﺎر اﻣﻨﯿﺘ ﻣ دﻫﺪ.

در ﺻﻮرﺗ ﮐﻪ ﻧﯿﺎز ﻣﺒﺮﻣ ﺑﻪ اﺳﺘﻔﺎده از ﻣﺘﻐﯿﺮ در اﯾﻦ دﺳﺘﻮر ﺑﺎﺷﺪ، ﺑﺮرﺳ

دﻗﯿﻖ ﻟﯿﺴﺖ ﺳﻔﯿﺪ اﻟﺰاﻣﯿﺴﺖ و ﻣﺸ ﻞ را رﻓ ﺧﻮاﻫﺪ ﮐﺮد.

151

۴٬٢٬۵ ارﺟﺎع ﻣﺴﺘﻘﯿﻢ ﻧﺎﻣﻄﻤﺌﻦ ﺑﻪ ﻣﺤﺘﻮا

رﻓ اﯾﻦ ﻣﺸ ﻞ ﺑﺎ اﺻﻼح ﻣﻌﻤﺎری ﺳﯿﺴﺘﻢ ﺻﻮرت ﻣ ﮔﯿﺮد. ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﺑﺎﯾﺪ از

ﺗﻨﺒﻠ دﺳﺖ ﺑﺮداﺷﺘﻪ، ﺑﺎ اﺳﺘﻔﺎده از زﯾﺮﺳﺎﺧﺖﻫﺎی درﺳﺖ ﻣﺤﺘﻮا را در اﺧﺘﯿﺎر ﮐﺎرﺑﺮ ﻗﺮار

دﻫﻨﺪ.

اﺳﺘﻔﺎده از Routing Tables و ﻫﻤﭽﻨﯿﻦ اﺟﺒﺎری ﮐﺮدن ﮐﻨﺘﺮل دﺳﺘﺮﺳ ، اﯾﻦ

ﻣﻌﻀﻞ را ﺗﺎ ﺣﺪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﮐﺎﻫﺶ ﻣ دﻫﺪ. در ﻧﻬﺎﯾﺖ ﺑﻬﺘﺮ اﺳﺖ ﺑﺮای ﮐﺸﻒ اﯾﻨﮕﻮﻧﻪ

ﻣﻌﻀﻼت ﯾ ﺳﺎﯾﺖ، ﭘﺲ از ﺗﮑﻤﯿﻞ آن ﻋﻤﻠﯿﺎت Penetration Testing (ﺗﺴﺖ ﻧﻔﻮذ) ﺑﺮ

روی ﺳﺎﯾﺖ ﺻﻮرت ﺑ ﯿﺮد.

۴٬٢٬۶ ﺟﻌﻞ درﺧﻮاﺳﺖ ﺑﯿﻦ ﺳﺎﯾﺘ

دو راﻫ ﺎر ﺑﺮای ﺟﻠﻮﮔﯿﺮی از CSRF وﺟﻮد دارد:

۴٬٢٬۶٬١ ﯾ ﻪﻔﻟ ﻣﺎﺘ

در اﯾﻦ روش، ﺳﺮور ﺑﺎﯾﺪ ﺑﺮای ﻫﺮ ﻓﺮﻣ ﮐﻪ اﯾﺠﺎد ﻣ ﮐﻨﺪ (ﯾﺎ ﻫﺮ ﻟﯿﻨﮑ ﮐﻪ

ﯾ درﺧﻮاﺳﺖ ﻋﻤﻠﯿﺎﺗ را ﻣﻨﺠﺮ ﻣ ﺷﻮد) ﯾ ﭘﺎراﻣﺘﺮ ﯾ ﺘﺎ (Token) ﺗﻌﺮﯾﻒ ﮐﺮده،

در ﺗﻨﻈﯿﻤﺎت ﮐﺎرﺑﺮ ﻧﮕﻬﺪارد.

ﻫﻨﮕﺎﻣ ﮐﻪ ﮐﺎرﺑﺮ وارد ﺻﻔﺤﻪ ﺷﻮد، ﻓﺮم را ﭘﺮ ﮐﻨﺪ و آﻧﺮا ارﺳﺎل ﮐﻨﺪ، Token

ﻣﺮﺑﻮﻃﻪ ﺑﻪ ﺻﻮرت ﯾ ﻓﯿﻠﺪ ﻧﺎﻣﺮﺋ ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر ﺑﻪ ﺳﺮور ارﺳﺎل ﻣ ﺷﻮد و ﺳﺮور

ﺑﺎ ﺑﺮرﺳ ﻣﻨﻄﺒﻖ ﺑﻮدن آن ﺑﺎ ﭘﺎراﻣﺘﺮ ﺗﻌﺮﯾﻒ ﺷﺪه در ﺳﺮور، ﻣﺘﻮﺟﻪ ﻣ ﺷﻮد ﮐﻪ ﮐﺎرﺑﺮ

ﺧﻮد ﻓﺮم را ﭘﺮ ﮐﺮده اﺳﺖ.

152

در ﺻﻮرﺗ ﮐﻪ ﻧﺮماﻓﺰار ﻣﺨﺮﺑﯽ درﺧﻮاﺳﺘ را ﺑﻪ ﻫﻤﺎن آدرس ارﺳﺎل ﮐﻨﺪ،

راﻫ ﺑﺮای داﻧﺴﺘﻦ Token اﯾﺠﺎد ﺷﺪه ﻧﺪارد، زﯾﺮا ﺻﻔﺤﻪ درﺧﻮاﺳﺖ را ﺑﺎز ﻧﮑﺮده و

ﺳﭙﺲ آﻧﺮا ارﺳﺎل ﮐﻨﺪ، ﺑﻠ ﻪ درﺧﻮاﺳﺖ را از ﺻﻔﺤﻪ دﯾ ﺮی ارﺳﺎل ﮐﺮدهاﺳﺖ.

اﯾﻦ ﻣﻮﻟﻔﻪﻫﺎ ﮐﻪ اﺻﻄﻼﺣﺎ CSRF Token ﯾﺎ Security Token ﻧﺎﻣﯿﺪه ﻣ -

ﺷﻮﻧﺪ، ﺑﺎﯾﺪ ﯾ ﺒﺎر ﻣﺼﺮف ﺑﺎﺷﻨﺪ. اﻓﺰودن اﯾﻦ ﻣﻮﻟﻔﻪ ﺑﻪ ﺻﻮرت ﺧﻮدﮐﺎر ﺑﻪ ﺗﻤﺎﻣ ﻓﺮم -

ﻫﺎ، ﺗﻮﺳﻂ اﻓﺰوﻧﻪﻫﺎی ﭘﺮدازش ﺧﺮوﺟ HTML ﺑﻪ ﺳﺎدﮔ ﻗﺎﺑﻞ اﻧﺠﺎم اﺳﺖ، ﺗﻨﻬﺎ

ﻻزم اﺳﺖ ﮐﻪ ﭼﻬﺎرﭼﻮب از ﭼﻨﯿﻦ اﻓﺰوﻧﻪﻫﺎی ﭘﺸﺘﯿﺒﺎﻧ ﮐﻨﺪ.

CAPTCHA ۴٬٢٬۶٬٢ ﺣﺘﻤﺎ ﺗﺎﮐﻨﻮن ﺑﺎرﻫﺎ در ﻓﺮمﻫﺎی اﯾﻨﺘﺮﻧﺘ ، ﺑﺎ ﺗﺼﻮﯾﺮی از ﺣﺮوف درﻫﻢ ﻣﻮاﺟﻪ

ﺷﺪهاﯾﺪ ﮐﻪ ﺑﺮﻧﺎﻣﻪ از ﺷﻤﺎ ﻣ ﺧﻮاﻫﺪ ﻋﺒﺎرت داﺧﻞ آﻧﺮا وارد ﻧﻤﺎﯾﯿﺪ. اﯾﻦ ﺗﺼﺎوﯾﺮ ﺑﺎ ﻧﺎم

ﻋﻠﻤ CAPTCHA ﺷﻨﺎﺧﺘﻪ ﻣ ﺷﻮﻧﺪ.

ﺷﻞ ٧٣ ﯾ ﻧﻤﻮﻧﻪ CAPTCHA

اﯾﻦ ﻧﺎم ﻣﺨﻔﻒ ﻋﺒﺎرت Computer Aided Program Telling

Computers & Humans Apart اﺳﺖ، ﺑﻪ ﻣﻌﻨ ﺑﺮﻧﺎﻣﻪ ﮐﺎﻣﭙﯿﻮﺗﺮی ﮐﻪ ﻣ ﺗﻮاﻧﺪ

ﻓﺮق ﺑﯿﻦ اﻧﺴﺎن و ﺳﯿﺴﺘﻢ را ﺗﺸﺨﯿﺺ دﻫﺪ. از آﻧﺠﺎﯾﯽ ﮐﻪ CAPTCHA ﺗﻮﺳﻂ

ﮐﺎﻣﭙﯿﻮﺗﺮ ﻗﺎﺑﻞ ﺧﻮاﻧﺪن و ﺗﺸﺨﯿﺺ ﻧﯿﺴﺖ، اﯾﻦ ﻓﯿﻠﺪﻫﺎ از ﺑﺎتﻫﺎ (روﺑﻮتﻫﺎی ﻧﺮم -

اﻓﺰاری) ﮐﻪ ﻗﺼﺪ ﺷﺒﯿﻪﺳﺎزی ﮐﺎرﺑﺮان را دارﻧﺪ، ﺟﻠﻮﮔﯿﺮی ﻣ ﻧﻤﺎﯾﻨﺪ.

153

ﻋﻼوه ﺑﺮ ﮐﺎرﺑﺮد ﻓﻮق، ﮐﭙﭽﺎ اﻣ ﺎن ﺟﻠﻮﮔﯿﺮی ﮐﺎﻣﻞ از CSRF را ﻓﺮاﻫﻢ ﻣ ﺪﻨﮐ

و ﺗﻮﺻﯿﻪ ﻣ ﺷﻮد در ﺳﯿﺴﺘﻢﻫﺎی ﺣﺴﺎس (ﻣﺎﻧﻨﺪ ﺳﯿﺴﺘﻢﻫﺎی ﺑﺎﻧﮑ ) از آن اﺳﺘﻔﺎده

ﺷﻮد. در ﺗﻤﺎﻣ ﺻﻔﺤﺎت ﭘﺮداﺧﺖ ﺑﺎﻧﮑ از اﯾﻦ ﺗﮑﻨﻮﻟﻮژی اﺳﺘﻔﺎده ﻣ ﺷﻮد.

۴٬٢٬٧ ﺿﻌﻒ اﺣﺮاز ﻫﻮﯾﺖ و ﻣﺪﯾﺮﯾﺖ ﻧﺸﺴﺖ

اﺣﺮاز ﻫﻮﯾﺖ ﻣﺒﺤﺚ ﭘﯿﭽﯿﺪه و ﻣﻔﺼﻠ اﺳﺖ ﮐﻪ ﺑﺴﯿﺎری از ﻣﺤﻘﻘﺎن ﺑﺮﺟﺴﺘﻪ

اﻣﻨﯿﺖ در دﻧﯿﺎ ﺑﺮ روی آن ﮐﺎر ﻣ ﮐﻨﻨﺪ. در ﺣﺎل ﺣﺎﺿﺮ ﺑﺮای رﻓ ﻣﺸ ﻼت ﻣﻮﺟﻮد در اﯾﻦ

زﻣﯿﻨﻪ، دو راﻫ ﺎر اﺳﺘﻔﺎده از OAuth (ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر واﺣﺪ و ﻣﺮﮐﺰی) و اﺳﺘﻔﺎده

از اﺣﺮاز ﻫﻮﯾﺖ ﭼﻨﺪ ﻣﻌﯿﺎره (رﻣﺰ ﻋﺒﻮر، ﺗﻮﮐﻦ، اﺛﺮ اﻧﮕﺸﺖ، اﺳ ﻦ ﻗﺮﻧﯿﻪ و ...) ﺗﻮﺻﯿﻪ ﻣ -

ﺪﻧﻮﺷ.

۴٬٢٬٧٬١ ﻣﺮا ﺑﻪ ﺧﺎﻃﺮ ﺑﺴﭙﺎر

وﯾﮋﮔ ﺧﺎﺻ ﮐﻪ در ﺻﻔﺤﻪ ورود ﺑﻪ اﮐﺜﺮ ﺳﯿﺴﺘﻢﻫﺎ وﺟﻮد دارد، Remember Me،

ﺑﺎﯾﺪ ﺑﺎ دﻗﺖ ﭘﯿﺎدهﺳﺎزی ﺷﻮد. روش ﺻﺤﯿﺢ ﭘﯿﺎدهﺳﺎزی آن، اﯾﺠﺎد ﯾ ﺗﻮﮐﻦ ﯾ ﺒﺎر

ﻣﺼﺮف و ﻗﺮار دادن آن در ﺳﺮور و ارﺗﺒﺎط آن ﺑﺎ ﮐﺎرﺑﺮ ﻣﺮﺑﻮﻃﻪ، و ﻗﺮار دادن آن در ﮐﻮﮐ

ﮐﺎرﺑﺮ ﻣﺮﺑﻮﻃﻪ اﺳﺖ. ﻗﺮار دادن ﻧﺎم ﮐﺎرﺑﺮی و رﻣﺰ ﻋﺒﻮر داﺧﻞ ﮐﻮﮐ اﺻﻼ ﻣﻄﻤﺌﻦ ﻧﯿﺴﺖ.

۴٬٢٬٧٬٢ ﺴﺸﻧ ﯿﻘﺗﺖ

ﯾ از راﻫ ﺎرﻫﺎی ﻣﻬﻢ ﺟﻠﻮﮔﯿﺮی از ﺳﺮﻗﺖ ﻧﺸﺴﺖ، اﺳﺘﻔﺎده از ﺗﻘﯿﺪ ﻧﺸﺴﺖ

اﺳﺖ. در اﯾﻦ روش، ﻣﻮﻟﻔﻪﻫﺎی راﯾﺎﻧﻪای ﮐﻪ ﮐﺎرﺑﺮ از روی آن در ﺣﺎل ﮐﺎر ﺑﺎ ﺳﯿﺴﺘﻢ

اﺳﺖ، ﺑﻪ ﻧﺸﺴﺖ او ﻗﯿﺪ ﻣ ﺷﻮﻧﺪ و اﮔﺮ ﮐﺎرﺑﺮی ﺑﺎ ﻣﻮﻟﻔﻪﻫﺎی دﯾ ﺮی ﺑﺎ ﻫﻤﺎن ﻧﺸﺴﺖ در

ﺳﯿﺴﺘﻢ ﻇﺎﻫﺮ ﺷﻮد، ﻫﺮ دو ﮐﺎرﺑﺮ درﺟﺎ از ﺳﯿﺴﺘﻢ ﺧﺎرج ﺷﺪه، ﻧﺸﺴﺖ ﺑﺎﻃﻞ ﻣ ﺷﻮد.

154

در ﺳﻄ از ﭘﯿﺎدهﺳﺎزی اﯾﻦ ﺗﮑﻨﻮﻟﻮژی وﺟﻮد دارد:

IP Binding ۴٬٢٬٧٬٢٬١ در اﯾﻦ روش، IP اﯾﻨﺘﺮﻧﺘ ﮐﺎرﺑﺮ ﺑﻪ ﻧﺸﺴﺖ او وﺻﻞ ﻣ ﺷﻮد. ﻧﻔﻮذﮔﺮی ﮐﻪ

از ﻗﺴﻤﺖ دﯾ ﺮی از اﯾﻨﺘﺮﻧﺖ ﻧﺸﺴﺖ ﮐﺎرﺑﺮ را دزدﯾﺪه ﺑﺎﺷﺪ، اﻣ ﺎن اﺗﺼﺎل ﺑﺎ آن

ﻧﺸﺴﺖ را ﻧﺨﻮاﻫﺪ داﺷﺖ.

ﻣﺸ ﻞ وﻗﺘ ﭘﯿﺶ ﻣ آﯾﺪ ﮐﻪ ﮐﺎرﺑﺮ و ﻧﻔﻮذﮔﺮ ﻫﺮدو ﭘﺸﺖ NAT و داﺧﻞ

ﯾ ﺷﺒ ﻪ ﺑﺎ IP واﺣﺪ ﺑﺎﺷﻨﺪ. در اﯾﻨﺠﺎ ﺳﻄ دوم راﻫ ﺸﺎ ﺧﻮاﻫﺪ ﺑﻮد.

۴٬٢٬٧٬٢٬٢ ﻪﻔﻟﻮﻣﻫﺎی ﮐﺎوﺷﺮ

ﻫﺮ ﮐﺎوﺷ ﺮی، ﯾ ﻋﺒﺎرت ﻃﻮﻻﻧ ﺗﺤﺖ ﺳﺮآﯾﻨﺪ User Agent ﺑﻪ ﺳﺮور

ارﺳﺎل ﻣ ﮐﻨﺪ. اﯾﻦ ﻋﺒﺎرت ﺣﺎوی ﻧﻮع ﮐﺎوﺷ ﺮ، ﻧﺴﺨﻪ آن و ﻧﺴﺨﻪ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ

ﻪﻃﻮﺑﺮﻣ ﻣ ﺪﺷﺎﺑ.

اﺗﺼﺎل اﯾﻦ ﻣﻮﻟﻔﻪﻫﺎ ﺑﻪ ﻧﺸﺴﺖ ﻧﯿﺰ اﻣﻨﯿﺖ را اﻓﺰاﯾﺶ ﻣ دﻫﺪ، وﻟ ﺑﻪ

ﻋﻨﻮان ﯾ راﻫ ﺎر ﻗﻄﻌ ﻋﻤﻠﯿﺎﺗ ﻧﯿﺴﺖ. ﺑﺴﯿﺎری از ﮐﺎرﺑﺮان ﺑﺮای ﺣﻔﻆ

ﻣﺤﺮﻣﺎﻧﮕ ﺧﻮد، اﯾﻦ ﺳﺮآﯾﻨﺪ را ﺣﺬف ﻣ ﮐﻨﻨﺪ. ﻫﻤﭽﻨﯿﻦ ﻧﻔﻮذﮔﺮ ﻣ ﺗﻮاﻧﺪ ﻧﺴﺒﺖ

ﺑﻪ ﺟﻌﻞ اﯾﻦ ﺳﺮآﯾﻨﺪ ﺑﻪ ﺳﺎدﮔ اﻗﺪام ﻧﻤﺎﯾﺪ.

۴٬٢٬٧٬٣ زﻣﺎن ﻧﺸﺴﺖ

ﭼﻬﺎرﭼﻮب ﺑﺎﯾﺪ زﻣﺎن ﺷﺮوع ﻧﺸﺴﺖ، ﺗﻌﺪاد درﺧﻮاﺳﺖﻫﺎی ﯾ ﻧﺸﺴﺖ و

زﻣﺎن آﺧﺮﯾﻦ درﺧﻮاﺳﺖ ﯾ ﻧﺸﺴﺖ را ﻧﮕﻬﺪاری ﻧﻤﺎﯾﺪ. در ﺻﻮرﺗ ﮐﻪ درﺧﻮاﺳﺖ

ﺟﺎری از آﺧﺮﯾﻦ درﺧﻮاﺳﺖ، ﺑﻪ ﻣﻘﺪار ﻣﻌﯿﻨ ﻓﺎﺻﻠﻪ زﻣﺎﻧ داﺷﺖ (٣٠ دﻗﯿﻘﻪ)

ﭼﻬﺎرﭼﻮب ﺑﺎﯾﺪ ﻧﺸﺴﺖ را ﺑﺎﻃﻞ ﮐﻨﺪ.

155

در ﺻﻮرﺗ ﮐﻪ زﻣﺎن ﺷﺮوع ﻧﺸﺴﺖ ﻧﺴﺒﺖ ﺑﻪ زﻣﺎن درﺧﻮاﺳﺖ ﺟﺎری، زﻣﺎن

ﻗﺎﺑﻞ ﺗﻮﺟﻬ ﻓﺎﺻﻠﻪ داﺷﺖ (ﯾ ﻫﻔﺘﻪ) ﺑﺎز ﻫﻢ ﻧﺸﺴﺖ ﺑﺎﯾﺪ ﺑﺎﻃﻞ ﺷﻮد.

ﻫﻤﭽﻨﯿﻦ در ﺻﻮرﺗ ﮐﻪ اﯾﻦ اﻃﻼﻋﺎت ﮔﺰارﺷ ﯿﺮی ﺷﻮﻧﺪ، ﻣﺪﯾﺮ ﺳﯿﺴﺘﻢ ﺑﺎ

ﺑﺮرﺳ آﻧﻬﺎ، ﯾﺎ ﺑﺎ اﺳﺘﻔﺎده از IDS ﻣ ﺗﻮاﻧﺪ ﺗﺸﺨﯿﺺ دﻫﺪ ﮐﻪ ﭼﻨﺪ ﮐﺎرﺑﺮ در ﺣﺎل

اﺳﺘﻔﺎده از اﯾﻦ ﻧﺸﺴﺖ ﻫﺴﺘﻨﺪ.

۴٬٢٬٨ ﺗﻨﻈﯿﻤﺎت ﻧﺎﺻﺤﯿﺢ و ﻣﺎﻄﺧ ﺖ ﺮﯾﺪ

ﺗﻨﻈﯿﻤﺎت ﻣﺤﺪود ﮐﻨﻨﺪه، ﮐﻪ ﻣﻌﻤﻮﻻ ﺑﻪ ﻋﻨﻮان ﺗﻨﻈﯿﻤﺎت اﻣﻦ ﻣﻌﺮﻓ ﻣ ﮔﺮدﻧﺪ، ﺑﻪ

ﻫﯿﭻ وﺟﻪ ﻣﻨﺎﺳﺐ ﻧﯿﺴﺘﻨﺪ. اﮐﺜﺮ ﻣﺪﯾﺮان، ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن و ﮐﺎرﺑﺮان ﯾ ﻧﺮماﻓﺰار، ﻫﻨﮕﺎﻣ

ﮐﻪ ﺑﺎ ﺗﻨﻈﯿﻤﺎت دﺳﺖ و ﭘﺎﮔﯿﺮ ﻣﻮاﺟﻪ ﻣ ﺷﻮﻧﺪ اﻗﺪام ﺑﻪ ﺣﺬف آﻧﻬﺎ ﻣ ﺪﻨﻨﮐ.

ﺗﻨﻈﯿﻤﺎت ﺻﺤﯿﺢ ﺑﺎﯾﺪ وﯾﮋﮔ ﻫﺎی ﻣﺘﻌﺪد را ﻓﻌﺎل ﮔﺬاﺷﺘﻪ، در ﺑﺪﻧﻪ ﻧﺮماﻓﺰار ﮐﺎرﮐﺮد

آﻧﻬﺎ را ﮐﻨﺘﺮل ﻧﻤﺎﯾﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺗﺎﺑﻊ ini_set در PHPﺑﺴﯿﺎر ﭘﺮﮐﺎرﺑﺮد و ﻣﻬﻢ، و

ﻫﻤﭽﻨﯿﻦ ﺧﻄﺮﻧﺎک ﻣ ﺑﺎﺷﺪ وﻟ ﺑﺮﻧﺎﻣﻪ ﻣ ﺗﻮاﻧﺪ ﺑﺎ ﮐﻨﺘﺮل ﮐﺎرﮐﺮد آن، ﺧﻄﺮ را از آن دور

ﺪﯾﺎﻤﻧ.

۴٬٢٬٨٬١ ﻣﺤﯿﻂ اﺟﺮاﯾﯽ

در ﻣﺪﯾﺮﯾﺖ ﺧﻄﺎ، ﻧﺮماﻓﺰار ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﺗﺸﺨﯿﺺ دﻫﺪ ﮐﻪ ﺑﺮ روی ﺳﺮور ﻣﺤﻠ (ﺳﺮور

ﻪﻣﺎﻧﺮﺑﻧﻮﯾﺴ ) در ﺣﺎل اﺟﺮاﺳﺖ ﯾﺎ ﺑﺮ روی ﺳﺮور ﻋﻤﻠﯿﺎﺗ . اﯾﻦ ﺗﺸﺨﯿﺺ ﺑﺎ ﻣﻌﺮﻓ ﭼﻨﺪ

ﭘﺎراﻣﺘﺮ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺳﺎدﮔ اﻧﺠﺎم ﻣ ﺷﻮد. در ﻣﺤﯿﻂ ﺗﻮﺳﻌﻪ، ﭼﻬﺎرﭼﻮب ﺑﺎﯾﺪ ﺗﻤﺎم

ﺧﻄﺎﻫﺎ را ﺑﺎ ﺟﺰﺋﯿﺎت ﺑﺮ روی ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ دﻫﺪ و ﺗﺮﺟﯿﺤﺎ از آﻧﻬﺎ ﮔﺰاﺷ ﯿﺮی ﺪﻨﮑﻧ،

وﮔﺮﻧﻪ ﺑﺎ ﺣﺠﻢ اﻧﺒﻮﻫ ﮔﺰارش ﺑﯽ ﻓﺎﯾﺪه روﺑﺮو ﻣ ﺷﻮد.

156

در ﻣﺤﯿﻂ ﻋﻤﻠﯿﺎﺗ ، ﭼﻬﺎرﭼﻮب ﺑﺎﯾﺪ از ﺧﻄﺎﻫﺎ ﮔﺰارﺷ ﯿﺮی ﮐﻨﺪ و ﺧﻄﺎﻫﺎی ﺣﺴﺎس را

از ﻃﺮﯾﻖ ﭘﯿﺎﻣ ﯾﺎ اﯾﻤﯿﻞ ﺑﻪ اﻃﻼع ﻣﺪﯾﺮ ﺳﯿﺴﺘﻢ ﺑﺮﺳﺎﻧﺪ، زﯾﺮا ﻣﺪﯾﺮ ﺳﯿﺴﺘﻢ داﺋﻤﺎ

ﮔﺰارﺷﻬﺎ را ﺑﺮرﺳ ﻧﻤ ﮐﻨﺪ و ﯾ ﺧﻄﺎی ﺣﺴﺎس ﻣ ﺗﻮاﻧﺪ ﺑﺎﻋﺚ از ﮐﺎر اﻓﺘﺎدن ﺳﯿﺴﺘﻢ

ﺑﺮای ﭼﻨﺪﯾﻦ ﺳﺎﻋﺖ ﺑﺸﻮد.

۴٬٢٬٨٬٢ دﺳﺘﺮﺳ اﺟﺮا

اﺳﺘﻔﺎده از واﺳﻂ اﺟﺮای ﻣﻨﺎﺳﺐ (CGI, FCGI, MOD) ﺑﺮای اﺟﺮای اﺳ ﺮﯾﭙﺖﺎﻫ

ﺑﺮ روی ﺳﺮور ﺑﺴﯿﺎر ﺣﯿﺎﺗ اﺳﺖ. ﺑﻪ ﺻﻮرت ﭘﯿﺸﻔﺮض PHP ﺗﺤﺖ ﮐﺎرﺑﺮ apache ﻪﮐ

ﻣﺮﺑﻮط ﺑﻪ ﺳﺮور وب اﺳﺖ اﺟﺮا ﻣ ﺷﻮد. ﺑﺎ اﯾﻦ ﺳﻄ دﺳﺘﺮﺳ ، اﻣ ﺎن ﺗﻐﯿﯿﺮ در ﻓﺎﯾﺎﻬﻠ

اﺻﻼ وﺟﻮد ﻧﺪارد و ﺗﻨﻬﺎ اﻣ ﺎن ﺧﻮاﻧﺪن آﻧﻬﺎ ﻓﺮاﻫﻢ اﺳﺖ.

در اﯾﻦ ﺗﻨﻈﯿﻢ، ﺑﺴﯿﺎری از ﻣﺪﯾﺮان ﻧﺴﺒﺖ ﺑﻪ آزاد ﮐﺮدن ﺑﺮﺧ ﭘﻮﺷﻪﻫﺎ و ﻓﺎﯾﻠﻬﺎ (دادن

دﺳﺘﺮﺳ ٧٧٧ ﺑﻪ آﻧﻬﺎ) اﻗﺪام ﻣ ﮐﻨﻨﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﺑﺘﻮاﻧﺪ ﺑﻪ درﺳﺘ ﮐﺎر ﮐﻨﺪ. ﭘﻮﺷﻪﻫﺎی آزاد

ﺗﻮﺳﻂ ﺗﻤﺎم ﮐﺎرﺑﺮان ﺳﺮور ﻗﺎﺑﻞ دﺳﺘﺮﺳ ﻫﺴﺘﻨﺪ و ﺑﻪ ﻣﺤﺾ اﯾﻨﮑﻪ ﻧﻔﻮذﮔﺮی، ﯾ از

ﺳﺎﯾﺘﻬﺎی ﻣﻮﺟﻮد ﺑﺮ روی ﺳﺮور را ﻫ ﮐﻨﺪ، ﺑﺎ ﺳﺎدﮔ ﺑﻪ ﺗﻤﺎم ﺳﺎﯾﺘﻬﺎﯾﯽ ﮐﻪ ﭘﻮﺷﻪﻫﺎی

آزاد دارﻧﺪ دﺳﺘﺮﺳ ﭘﯿﺪا ﻣ ﺪﻨﮐ.

راﻫ ﺎر درﺳﺖ، اﺳﺘﻔﺎده از اﺑﺰاری ﻣﺎﻧﻨﺪ suPHP اﺳﺖ ﮐﻪ اﺳ ﺮﯾﭙﺖﻫﺎ را، ﺗﺤﺖ ﻧﺎم

ﮐﺎرﺑﺮی ﺧﺎﺻ (ﮐﻪ ﺑﺮای ﻫﺮ ﺳﺎﯾﺖ ﻣﺘﻔﺎوت و ﻣﺘﻌﻠﻖ ﺑﻪ ﻫﻤﺎن اﺳﺖ) اﺟﺮا ﻣ ﮐﻨﺪ. اﯾﻦ

اﺳ ﺮﯾﭙﺖﻫﺎ اﻣ ﺎن دﺳﺘﮑﺎری ﻓﺎﯾﻠﻬﺎی ﺧﻮد را دارﻧﺪ و اﻣﻨﯿﺖ و ﮐﻨﺘﺮل آﻧﻬﺎ ﺑﺴﯿﺎر ﺳﺎدهﺮﺗ

اﺳﺖ.

157

۴٬٢٬٩ ﻔﺨﻣﮐﺎری

راه ﺣﻞ ﻣﺨﻔ ﮐﺎری، ﺗﻨﺒﻠ ﻧﮑﺮدن و داﻧﺴﺘﻦ اﯾﻦ ﻣﻬﻢ اﺳﺖ ﮐﻪ ﻣﺨﻔ ﮐﺎری از

ﻣﻬﻤﺘﺮﯾﻦ ﻋﻠﻞ ﻧﻔﻮذ ﺑﻪ ﺳﯿﺴﺘﻢﻫﺎﺳﺖ. ﺟﻠﻮﮔﯿﺮی از ﻣﺨﻔ ﮐﺎری، ﺗﻨﻬﺎ ﺑﺎ اﺗﮑﺎ ﺑﻪ ﻣ ﺎﻧﺰﯾﻢ-

ﻫﺎی ﺻﺤﯿﺢ AAA ﻣﯿﺴﺮ ﻣ ﺷﻮد و ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﺎن ﺑﺎﯾﺪ ﺗﺤﺖ ﻫﺮ ﺷﺮاﯾﻄ از ﻣﺨﻔ ﮐﺎری

ﺧﻮدداری ﻧﻤﺎﯾﻨﺪ.

۴٬٢٬١٠ رﻣﺰﻧﮕﺎری ﻧﺎﻣﻄﻤﺌﻦ

در رﻣﺰﻧﮕﺎری، ﻣﺮﺟ ﻣﻄﻤﺌﻨ ﮐﻪ اﺳﺘﺎﻧﺪاردﻫﺎی ﺑﯿﻦاﻟﻤﻠﻠ ﻣﻨﺎﺳﺐ را ﺗﻌﯿﯿﻦ ﻣ ﺪﻨﮐ

FIPS اﺳﺖ ﮐﻪ در واﻗ ﯾ ﺳﺎزﻣﺎن دوﻟﺘ آﻣﺮﯾ ﺎﯾﯽ اﺳﺖ. اﻟ ﻮرﯾﺘﻢﯾﺎﻫﻪ ﯽ -FIPS compliant ﻣﻌﺮﻓ ﻣ ﺷﻮﻧﺪ، از اﻣﻨﯿﺖ ﻗﺎﺑﻞ ﻗﺒﻮﻟ ﺑﺮﺧﻮردار ﻫﺴﺘﻨﺪ. در اداﻣﻪ ﺳﻌ

ﻣ ﺷﻮد ﻧﯿﺎزﻫﺎی اﺑﺘﺪاﯾﯽ رﻣﺰﻧﮕﺎری ﺑﺮرﺳ ﺷﻮد:

۴٬٢٬١٠٬١ رﻣﺰﻧﮕﺎری ارﺗﺒﺎﻃﺎت

ﺑﺮای ﻓﻌﺎل ﮐﺮدن HTTPS، وب ﺳﺮور ﻧﯿﺎز ﺑﻪ ﯾ ﮔﻮاﻫﯿﻨﺎﻣﻪ دﯾﺠﯿﺘﺎل (X.509)

و ﯾ ﮐﻠﯿﺪ ﺧﺼﻮﺻ ذﺧﯿﺮه ﺷﺪه ﺑﺮ روی ﺳﺮور دارد. ﮔﻮاﻫﯿﻨﺎﻣﻪ دﯾﺠﯿﺘﺎل ﺷﺎﻣﻞ

ﮐﻠﯿﺪ ﻋﻤﻮﻣ ، ﻣﺸﺨﺼﺎت ﺳﯿﺴﺘﻢ در ﻗﺎﻟﺐ ﯾ IP و ﯾ داﻣﻨﻪ، و اﻣﻀﺎی ﮔﻮاﻫﯿﻨﺎﻣﻪ

دﯾﺠﯿﺘﺎل اﺳﺖ.

ﺑﻪ دﻟﯿﻞ اﯾﻨﮑﻪ ﻫﺮ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﯾ IP و ﯾ داﻣﻨﻪ دارد، اﺳﺘﻔﺎده از ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺗﻨﻬﺎ

ﺑﺮ روی ﺳﺎﯾﺖﻪﮐ ﯽ ﺎﻫ IPاﺧﺘﺼﺎﺻ دارﻧﺪ ﻣﻤ ﻦ اﺳﺖ. ﻫﻤﭽﻨﯿﻦ ﻫﺮ ﮔﻮاﻫﯿﻨﺎﻣﻪ

ﺮﺑ ﺎ ﻨﺗ روی ﯾ داﻣﻨﻪ ﺧﺎص ﺗﻌﺮﯾﻒ ﻣ ﺷﻮد، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل اﮔﺮ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺑﺮای abiusx.com ﺻﺎدر ﺷﺪه ﺑﺎﺷﺪ، در ﺻﻮرﺗ ﮐﻪ ﺑﺮای mail.abiusx.com اﺳﺘﻔﺎده

ﺷﻮد ﻏﯿﺮ ﻣﻌﺘﺒﺮ ﺧﻮاﻫﺪ ﺑﻮد.

158

ﻫﺮ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﯾ اﻣﻀﺎ دارد، ﮐﻪ ﺻﺎدر ﮐﻨﻨﺪه آﻧﺮا ﻣﺸﺨﺺ ﻣ ﮐﻨﺪ. در ﺻﻮرﺗ ﮐﻪ

اﻣﻀﺎی ﺻﺎدر ﮐﻨﻨﺪه ﻣﻌﺘﺒﺮ ﺑﺎﺷﺪ (ﯾﻌﻨ از ﯾ از CA ﻫﺎی ﺷﻨﺎﺧﺘﻪ ﺷﺪه دﻧﯿﺎ ﺑﺎﺷﺪ

ﮐﻪ ﻫﻤﻪ ﺑﻪ آﻧﻬﺎ اﻋﺘﻤﺎد دارﻧﺪ)، ﮔﻮاﻫﯿﻨﺎﻣﻪ را ﯾ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﻣﻌﺘﺒﺮ ﻣ ﻧﺎﻣﯿﻢ. در ﻏﯿﺮ

اﯾﻨﺼﻮرت ﮔﻮاﻫﯿﻨﺎﻣﻪ ﻏﯿﺮ ﻣﻌﺘﺒﺮ اﺳﺖ.

ﻫﺮﮐﺴ ﻣ ﺗﻮاﻧﺪ ﯾ ﮔﻮاﻫﯿﻨﺎﻣﻪ را اﻣﻀﺎ ﮐﻨﺪ، ﺑﺮای اﻣﻀﺎ ﮐﺎﻓﯿﺴﺖ ﯾ ﺟﻔﺖ ﮐﻠﯿﺪ

(ﺧﺼﻮﺻ و ﻋﻤﻮﻣ ) داﺷﺘﻪ ﺑﺎﺷﺪ، اﻣﺎ اﻣﻀﺎی ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺗﻮﺳﻂ ﻣﺮاﺟ ﻣﻌﺘﺒﺮ، ﺑﺎ

درﯾﺎﻓﺖ ﻣﺒﻠ ﻗﺎﺑﻞ ﺗﻮﺟﻬ (ﺣﺪود ١٠٠ دﻻر در ﺳﺎل) اﻧﺠﺎم ﻣ ﺷﻮد.

ﻫﻤﭽﻨﯿﻦ ﻫﺮ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺗﺎرﯾﺦ اﻋﺘﺒﺎر ﻣﺸﺨﺼ دارد ﮐﻪ ﭘﺲ از آن دﯾ ﺮ ﻣﻌﺘﺒﺮ

ﻧﺨﻮاﻫﺪ ﺑﻮد و ﺑﺎﯾﺪ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺟﺪﯾﺪی ﺻﺎدر ﺷﻮد.

در ﺻﻮرﺗ ﮐﻪ در ﯾ ﺳﯿﺴﺘﻢ از ﮔﻮاﻫﯿﻨﺎﻣﻪ ﻏﯿﺮ ﻣﻌﺘﺒﺮ اﺳﺘﻔﺎده ﺷﻮد، ﺑﺎز ﻫﻢ

رﻣﺰﮔﺬاری دادهﻫﺎ در ﻗﺎﻟﺐ HTTPS ﺑﻪ درﺳﺘ اﻧﺠﺎم ﺧﻮاﻫﺪ ﺷﺪ، اﻣﺎ دﯾ ﺮ ﻣﺸﺨﺺ

ﻧﯿﺴﺖ ﮐﻪ آﯾﺎ ﮐﺎرﺑﺮ ﻣﺴﺘﻘﯿﻤﺎ ﺑﺎ ﺳﺮور ﻣﺮﺑﻮﻃﻪ در ﺣﺎل ارﺗﺒﺎط اﻣﻦ اﺳﺖ، ﯾﺎ ﻧﻔﻮذﮔﺮی

در ﻣﯿﺎن راه ﻗﺮار ﮔﺮﻓﺘﻪ، ﮔﻮاﻫﯿﻨﺎﻣﻪ ﻧﺎﻣﻌﺘﺒﺮ ﺧﻮد را ﺑﻪ ﮐﺎرﺑﺮ ﻋﺮﺿﻪ ﮐﺮده و ﮐﺎرﺑﺮ در

ﺣﺎل ارﺗﺒﺎط ﺑﺎ ﻧﻔﻮذﮔﺮ اﺳﺖ و اﺷﺘﺒﺎﻫﺎ ﻓﮑﺮ ﻣ ﮐﻨﺪ در ﺣﺎل ارﺗﺒﺎط ﺑﺎ ﺳﺮور اﺳﺖ.

ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ ﺗﻤﺎم ﮐﺎوﺷ ﺮﻫﺎی وب، ﻫﻨﮕﺎﻣ ﮐﻪ ﺑﻪ ﯾ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﻧﺎﻣﻌﺘﺒﺮ

ﺑﺮای ﺳﺎﯾﺖ HTTPS ﺑﺮﺧﻮرد ﻣ ﮐﻨﻨﺪ، ﭘﯿﺎم اﺧﻄﺎری را ﻣﺒﻨ ﺑﺮ اﯾﻨﮑﻪ ﻫﻮﯾﺖ ﻣﻘﺼﺪ

ﺗﺎﯾﯿﺪ ﺷﺪه ﻧﯿﺴﺖ اﻋﻼم ﻣ داﻧﺪ. ﺳﺎﯾﺘﻬﺎی ﻣﻌﺘﺒﺮ و ﺑﺰرگ ﻫﻤ ﻫﻮﯾﺖ ﺗﺎﯾﯿﺪ ﺷﺪه

دارﻧﺪ و اﮔﺮ ﮐﺎرﺑﺮی ﻫﻨﮕﺎم ﻣﺮور آﻧﻬﺎ اﯾﻦ اﺧﻄﺎر را ﻣﺸﺎﻫﺪه ﮐﺮد، ﻣ ﺗﻮاﻧﺪ ﻣﻄﻤﺌﻦ

ﺑﺎﺷﺪ ﮐﻪ ﻧﻔﻮذﮔﺮی در ﻣﯿﺎن راه ﻗﺮار ﮔﺮﻓﺘﻪ اﺳﺖ.

159

۴٬٢٬١٠٬١٬١ زﯾﺮﺳﺎﺧﺖ ﮐﻠﯿﺪ ﻋﻤﻮﻣ

زﯾﺮﺳﺎﺧﺖ ﮐﻠﯿﺪ ﻋﻤﻮﻣ (PKI)، زﯾﺮﺳﺎﺧﺘ اﺳﺖ ﮐﻪ در دﻧﯿﺎ ﻗﺮار ﮔﺮﻓﺘﻪ ﺗﺎ

ﺖﯾﻮﻫﻫﺎی ﻣﻌﺘﺒﺮ ﻗﺎﺑﻞ ﺗﺎﯾﯿﺪ ﺑﺎﺷﻨﺪ. ﺗﻌﺪادی ﻣﺮﺟ ﻣﻌﺘﺒﺮ ﺑﯿﻦاﻟﻤﻠﻠ

(Certificate Authorotiy) وﺟﻮد دارﻧﺪ ﮐﻪ ﮐﻠﯿﺪ ﻋﻤﻮﻣ آﻧﻬﺎ در ﻫﻤﻪ ﺳﯿﺴﺘﻢ -

ﻫﺎی ﻋﺎﻣﻞ و ﮐﺎوﺷ ﺮﻫﺎ درج ﺷﺪه اﺳﺖ. اﯾﻦ ﻣﺮاﺟ را ﺑﻪ ﻋﻨﻮا ن Root CA ﻣ -

ﺷﻨﺎﺳﻨﺪ و اﻋﺘﺒﺎر داﺋﻤ و ﺧﺪﺷﻪ ﻧﺎﭘﺬﯾﺮ دارﻧﺪ. اﯾﻦ ﻣﺮاﺟ دارای دﯾﺘﺎﺳﻨﺘﺮﻫﺎی

ﺑﺴﯿﺎر اﻣﻦ و ﺣﺴﺎس ﻫﺴﺘﻨﺪ و ﺑﯿﺸﺘﺮ از ﭘﺎﯾ ﺎه ﭘﻠﯿﺲ از آﻧﻬﺎ ﻣﺤﺎﻓﻈﺖ ﻣ ﺷﻮد،

زﯾﺮا در ﺻﻮرﺗ ﮐﻪ ﮐﻠﯿﺪ آﻧﻬﺎ ﻟﻮ ﺑﺮود، ﺗﻤﺎم ﻫﻮﯾﺖﻫﺎ ﻗﺎﺑﻞ ﺟﻌﻞ ﻣ ﺪﻧﻮﺷ.

ﺗﻤﺎم ﮔﻮاﻫﯿﻨﺎﻣﻪﻫﺎی ﻣﻌﺘﺒﺮ ﺻﺎدر ﺷﺪه، ﺑﺎ دو ﯾﺎ ﺳﻪ واﺳﻄﻪ، ﺑﻪ ﯾ از اﯾﻦ

ﻣﺮاﺟ ﺳﻄ اول ﻣﺮﺗﺒﻂ ﻫﺴﺘﻨﺪ. ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻫﻨﮕﺎﻣ ﮐﻪ ﺷﻤﺎ ﯾ ﮔﻮاﻫﯿﻨﺎﻣﻪ

ﻣﻌﺘﺒﺮ ﺑﺮای abiusx.com ﺳﻔﺎرش ﻣ دﻫﯿﺪ، ﺗﻮﺳﻂ CA X اﻣﻀﺎ ﻣ ﺷﻮد ﮐﻪ

ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺧﻮد او ﺗﻮﺳﻂ CA Y اﻣﻀﺎ ﺷﺪه و ﮔﻮاﻫﯿﻨﺎﻣﻪ او ﻧﯿﺰ ﺗﻮﺳﻂ ﯾ Root

CA اﻣﻀﺎ ﺷﺪه اﺳﺖ. ﮐﺎوﺷ ﺮ وب، ﻫﻨﮕﺎﻣ ﮐﻪ ﺑﻪ ﯾ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺟﺪﯾﺪ ﺑﺮﺧﻮرد

ﮐﺮد، ﮐﻞ اﯾﻦ ﻣﺴﯿﺮ را ﻃ ﮐﺮده، ﮔﻮاﻫﯿﻨﺎﻣﻪﻫﺎ را ﯾ ﯾ ﺑﺮرﺳ ﻣ ﻪﺑ ﺗ ﻨﮐ

ﻮﮔاﻫﯿﻨﺎﻣﻪ ﺳﻄ ﯾ ﺑﺮﺳﺪ.

زﯾﺮﺳﺎﺧﺖ ﮐﻠﯿﺪ ﻋﻤﻮﻣ ، ﺟﺪای از ﯾ ﺑﺤﺚ ﻓﻨﺎوری، از ﻧﻈﺮ ﺳﯿﺎﺳ ﻧﯿﺰ

اﻫﻤﯿﺖ ﺑﺴﺰاﯾﯽ دارد. ﺳﺎزﻣﺎنﻫﺎی ﻧﻈﺎﻣ و اﻗﺘﺼﺎدی اﺻﻠ ﻫﺮ ﮐﺸﻮری، ﺑﻪ

ﺳﺎدﮔ ﺑﻪ CA ﻫﺎﯾﯽ ﮐﻪ در ﮐﺸﻮرﻫﺎی دﯾ ﺮ واﻗ ﺷﺪهاﻧﺪ اﻋﺘﻤﺎد ﻧﻤ ﮐﻨﻨﺪ و ﺗﻨﻬﺎ

ﺎﺑ ﺪﻧﺮ ﺎﺣ CA ﮐﺸﻮر ﺧﻮدﺷﺎن ﻫﻤ ﺎری ﻧﻤﺎﯾﻨﺪ. ﺗﻤﺎم ﮐﺸﻮرﻫﺎی ﻣﻬﻢ ﺣﺪاﻗﻞ

ﯾ CA دارﻧﺪ، اﻣﺎ CA ﮐﺸﻮر اﯾﺮان ﮐﻪ در وزارت ﺑﺎزرﮔﺎﻧ ﻗﺮار ﮔﺮﻓﺘﻪ اﺳﺖ، ﺑﻪ

160

دﻟﯿﻞ ﺗﺤﺮﯾﻢﻫﺎی ﺑﯿﻦاﻟﻤﻠﻠ و ﻫﻤﭽﻨﯿﻦ اﺷﺘﺒﺎﻫ ﮐﻪ ﯾ ﺒﺎر ﻣﺮﺗﮑﺐ ﺷﺪه ﺑﻮد، در

ﺣﺎل ﺣﺎﺿﺮ از اﻋﺘﺒﺎر ﺑﯿﻦ اﻟﻤﻠﻠ ﺳﺎﻗﻂ اﺳﺖ.

۴٬٢٬١٠٬٢ رﻣﺰﻧﮕﺎری دادهﺎﻫ

در ﺣﺎل ﺣﺎﺿﺮ، رﻣﺰﻧﮕﺎری را ﻣ ﺗﻮان از ﻧﻈﺮ ﮐﺎرﺑﺮد ﺑﻪ ﭘﻨ دﺳﺘﻪ ﺗﻘﺴﯿﻢ ﮐﺮد:

· رﻣﺰﻧﮕﺎری ﻣﺘﻘﺎرن ﺑﻠﻮﮐ (اﻟ ﻮرﯾﺘﻢ اﺳﺘﺎﻧﺪارد AES)

· رﻣﺰﻧﮕﺎری ﻣﺘﻘﺎرن ﺟﺮﯾﺎﻧ (اﻟ ﻮرﯾﺘﻢﻫﺎی ﻣﺘﻌﺪد، RC4)

· رﻣﺰﻧﮕﺎری ﻧﺎﻣﺘﻘﺎرن (ﺳﻪ اﻟ ﻮرﯾﺘﻢ ﻣﺤﺒﻮب، RSA ﭘﺮﮐﺎرﺑﺮد)

· ﺗﻮاﺑﻊ ﭼ ﯿﺪهﺳﺎز (SHA-256 ﺎﯾ SHA-512)

· اﻣﻀﺎی دﯾﺠﯿﺘﺎل (DSS)

ﻫﺮﮐﺪام از ﮐﺎرﺑﺮدﻫﺎی ﻓﻮق ﺑﺮای ﻣﻨﻈﻮری ﻣﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ:

۴٬٢٬١٠٬٢٬١ رﻣﺰﻧﮕﺎری ﯾﻄﺮﻓﻪ (ﭼﯿﺪهﮔﯿﺮی)

اﻣﻀﺎی دﯾﺠﯿﺘﺎل، ﺑﺎ داﺷﺘﻦ ﯾ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﯾﺎ ﮐﻠﯿﺪ ﻋﻤﻮﻣ ﻣﻌﺘﺒﺮ، ﻣ -

ﺗﻮاﻧﺪ ﺑﻪ اﻣﻀﺎی ﻫﺮﮔﻮﻧﻪ ﻣﺤﺘﻮا ﺑﭙﺮدازد و ﺗﻀﻤﯿﻦ ﮐﻨﺪ ﮐﻪ ﻣﺤﺘﻮی ﻧﻪ دﺳﺘﮑﺎری

ﺷﺪه اﺳﺖ ﻧﻪ ﺗﻮﺳﻂ ﻓﺮد ﺛﺎﻟﺜ اﯾﺠﺎد ﺷﺪه اﺳﺖ. اﻣﻀﺎی دﯾﺠﯿﺘﺎل ﭘﯿﭽﯿﺪﮔ ﻫﺎی

ﻗﺎﺑﻞ ﺗﻮﺟﻬ دارد و ﺳﻨﺪ ﺟﺪاﮔﺎﻧﻪای ﻣ ﺪﺒﻠﻃ.

ﺗﻮاﺑﻊ ﭼ ﯿﺪهﺳﺎز، ﻋﻤﻮﻣﺎ ﺑﺮای ﻧﮕﻬﺪاری رﻣﺰ ﻋﺒﻮر اﺳﺘﻔﺎده ﻣ ﺷﻮﻧﺪ. در

ﺳﺎﻟﻬﺎی ﺟﺪﯾﺪ ﺑﺮ اﺳﺎس ﺗﺌﻮری زﻣﺎن-ﺣﺎﻓﻈﻪ ﻣﺮﮐﻞ، ﺟﺪاوﻟ ﺗﺤﺖ ﻋﻨﻮان

Rainbow Table اﯾﺠﺎد ﺷﺪه اﻧﺪ ﮐﻪ ﺑﺴﯿﺎری از ﺗﻮاﺑﻊ ﭼ ﯿﺪهﺳﺎز را ﺧﻨﺜ ﻣ -

ﮐﻨﻨﺪ، ﻟﺬا ﻧﯿﺎز ﻣﺒﺮﻣ ﺑﺮ اﺳﺘﻔﺎده ﺻﺤﯿﺢ از اﯾﻦ ﺗﻮاﺑﻊ در ﻧﺮماﻓﺰار وﺟﻮد دارد.

161

روش درﺳﺖ اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﭼ ﯿﺪهﺳﺎز، اﺑﺘﺪا آﻧﺴﺖ ﮐﻪ از ﺗﻮاﺑﻊ ﺟﺪﯾﺪ و

ﻗﺪرﺗﻤﻨﺪ اﺳﺘﻔﺎده ﺷﻮد. ﺑﻨﺎ ﺑﺮ ﻗﻀﯿﻪ Birthday Theorem ﻓﻀﺎی ﺗﺎﺑﻊ ﭼ ﯿﺪهﺳﺎز

ﻫﺮ ﻣﻘﺪاری ﮐﻪ ﺑﺎﺷﺪ، ﻣﺠﺬور آن ﻣﻔﯿﺪ اﺳﺖ، ﻟﺬا اﻟ ﻮرﯾﺘﻢ MD5 ﮐﻪ ﻓﻀﺎی ١۶٠

ﺑﯿﺖ داﺷﺖ، در واﻗ اﻣﻨﯿﺖ ٨٠ ﺑﯿﺘ اراﺋﻪ ﻣ داد ﮐﻪ اﻣﺮوزه ﺑﺎ اﺳﺘﻔﺎده از ﯾ

ﺳﻮﭘﺮﮐﺎﻣﭙﯿﻮﺗﺮ در ﯾ دﻗﯿﻘﻪ ﻗﺎﺑﻞ ﺷ ﺴﺖ اﺳﺖ. ﺗﻮاﺑﻊ SHA-256 و SHA-512

در ﺣﺎل ﺣﺎﺿﺮ اﻣﻦ ﺗﻠﻘ ﻣ ﺷﻮﻧﺪ.

ﻧﮑﺘﻪ دوم اﺳﺘﻔﺎده ازﻧﻤ اﺳﺖ. ﻧﻤ ﯾ اﺻﻄﻼح رﻣﺰﻧﮕﺎری اﺳﺖ، ﮐﻪ

ﺑﻪ داده ﺗﺼﺎدﻓ و ﻏﯿﺮﺣﺴﺎﺳ ﮔﻔﺘﻪ ﻣ ﺷﻮد ﮐﻪ ﺑﻪ رﻣﺰ اﻓﺰوده ﻣ ﺷﻮد. ﺑﺎ اﺳﺘﻔﺎده

از ﻧﻤ ، ﺑﺮای ﻫﺮ رﻣﺰ ﻋﺒﻮر ﻫﺮ ﮐﺎرﺑﺮ، ﯾ ﻧﻤ (ﯾ رﺷﺘﻪ ﺗﺼﺎدﻓ ) اﯾﺠﺎد ﻣ -

ﺷﻮد، و ﺑﻪ رﻣﺰ ﻋﺒﻮر ﻣﺘ ﺼ ﻞ ﻣ ﺷﻮد، ﺳﭙﺲ در ﭘﺎﯾ ﺎه داده ذﺧﯿﺮه ﻣ ﮔﺮدد. ﯾ

ﻧﻤ ﺛﺎﺑﺖ ﺳﯿﺴﺘﻤ ﻧﯿﺰ ﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ. ﺗﺮﮐﯿﺐ اﯾﻦ دو ﻧﻤ و رﻣﺰ ﻋﺒﻮر،

ﯾ ﺠﺎ ﭼ ﯿﺪهﮔﯿﺮی ﻣ ﺷﻮد. ﺑﺎ اﯾﻦ روش، دﯾ ﺮ Rainbow Tableﻫﺎی ﻣﻮﺟﻮد

ﭘﺎﺳﺨ ﻮ ﻧﺨﻮاﻫﻨﺪ ﺑﻮد و ﺑﺮای ﻫﺮ ﺳﯿﺴﺘﻤ ﺑﺎﯾﺪ ﯾ Rainbow Table ﻣﺠﺰا ﺗﻬﯿﻪ

ﺷﻮد. ﺗﻬﯿﻪ ﮐﺮدن ﯾ از اﯾﻦ ﺟﺪاول، ﺣﺪود ﯾ ﺴﺎل زﻣﺎن ﻧﯿﺎز ﺧﻮاﻫﺪ داﺷﺖ.

ﺷﻞ ٧٤ ﺟﺮﯾﺎن داده در ﭼﯿﺪهﺳﺎزی ﺻﺤﯿﺢ از رﻣﺰ ﻋﺒﻮر و ﺑﺮرﺳ ﺻﺤﺖ رﻣﺰ

162

۴٬٢٬١٠٬٢٬٢ رﻣﺰﻧﮕﺎری دوﻃﺮﻓﻪ

رﻣﺰﻧﮕﺎری ﻣﺘﻘﺎرن ﺑﻠﻮﮐ ، ﺑﺮای رﻣﺰﮐﺮدن دادهﻫﺎی ﺛﺎﺑﺖ ﺑﻪ ﮐﺎر ﻣ آﯾﺪ.

اﻟ ﻮرﯾﺘﻢ AES اﺳﺘﺎﻧﺪارد اﯾﻦ ﺳﻄ اﺳﺖ و از ﺳﺎل ٢٠٠٠ ﺗﺎﮐﻨﻮن اﺳﺘﺎﻧﺪارد ﺑﺎﻗ

ﻣﺎﻧﺪه و ﺑﻪ ﻧﻈﺮ ﻧﻤ رﺳﺪ در ﺳﺎﻟﻬﺎی آﺗ ﻧﯿﺰ دﭼﺎر ﺧﺪﺷﻪ ﺷﻮد. اﯾﻦ اﻟ ﻮرﯾﺘﻢ در ﺳﻪ

ﺳﻄ ﮐﻠﯿﺪ ١٢٨ ﺑﯿﺘ ، ١٩۶ ﺑﯿﺘ و ٢۵۶ ﺑﯿﺘ ﮐﺎر ﻣ ﮐﻨﺪ ﮐﻪ آﺧﺮی اﺳﺘﺎﻧﺪارد اﺳﻨﺎد

ﻣﺤﺮﻣﺎﻧﻪ دوﻟﺖ آﻣﺮﯾ ﺎﺳﺖ.

ﺷﻞ ٧٥ ﻧﻤﺎی ﮐﺎرﮐﺮد اﻟ ﻮرﯾﺘﻢ A5/1 ﮐﻪ ﺑﺮای رﻣﺰﮐﺮدن ﺻﺪا در ﻣﻮﺑﺎﯾﻞ اﺳﺘﻔﺎده ﻣ ¬ﺷﻮد

رﻣﺰﻧﮕﺎری ﻣﺘﻘﺎرن ﺟﺮﯾﺎﻧ ، ﺑﺮای رﻣﺰﮐﺮدن ﺻﻮت و ﺗﺼﻮﯾﺮ ﻫﻤﺰﻣﺎن ﺑﺎ ﺗﻮﻟﯿﺪ

آن ﮐﺎرﺑﺮد دارد. ﻣﺜﻼ وﯾﺪﺋﻮ ﮐﻨﻔﺮاﻧﺲﻫﺎی رﻣﺰﺷﺪه ﺑﺎ اﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﻣﻬﯿﺎ ﻣ ﺷﻮﻧﺪ.

رﻣﺰﻧﮕﺎری ﻧﺎﻣﺘﻘﺎرن ﮐﺎرﺑﺮدﻫﺎی ﭘﯿﺸﺮﻓﺘﻪ دارد، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل HTTPS و اﻣﻀﺎی

دﯾﺠﯿﺘﺎل ﺧﻮد از اﯾﻦ زﯾﺮﺳﺎﺧﺖ اﺳﺘﻔﺎده ﻣ ﮐﻨﻨﺪ. ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﻣﻌﻤﻮﻻ ﻧﯿﺎزی ﺑﻪ

اﺳﺘﻔﺎده ﻣﺴﺘﻘﯿﻢ از اﯾﻦ ﻓﻨﺎوری ﻧﺪارد، وﻟ ﻻزم اﺳﺖ ﺑﺪاﻧﺪ ﮐﻪ در ﺣﺎل ﺣﺎﺿﺮ

ﮐﻠﯿﺪﻫﺎی ﮐﻮﭼ ﺘﺮ از ٢٠۴٨ ﺑﯿﺖ ﺑﺮای RSA اﻣﻦ ﺗﻠﻘ ﻧﻤ ﺷﻮﻧﺪ.

163

ﺷﻞ ٧٦ ﻧﻤﺎﯾﻪ ﺷﺮﮐﺖ RSA ، ﺑﻨﯿﺎﻧﮕﺬار رﻣﺰﻧﮕﺎری ﻧﺎﻣﺘﻘﺎرن

ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﮐﻠﯿﺪ اﯾﻨﮕﻮﻧﻪ رﻣﺰﻧﮕﺎریﻫﺎ ﻧﺒﺎﯾﺪ در ﺑﺮﻧﺎﻣﻪ ﻗﺮار ﺑ ﯿﺮد

وﮔﺮﻧﻪ ﻧﻔﻮذﮔﺮ ﭘﺲ از ﻧﻔﻮذ ﺑﻪ ﺳﯿﺴﺘﻢ ﺑﻪ ﮐﻠﯿﺪ ﻧﯿﺰ دﺳﺘﺮﺳ ﺧﻮاﻫﺪ داﺷﺖ.

۴٬٢٬١١ اﻣﻨﯿﺖ ﻃﺮف ﻣﺸﺘﺮی

در ﺗﻤﺎم ﺳﻨﺎرﯾﻮﻫﺎﯾﯽ ﮐﻪ ﻧﯿﺎزی ﺑﻪ واﮔﺬار ﮐﺮدن اﻣﻨﯿﺖ ﺑﻪ ﻣﺸﺘﺮی و ﮐﺎوﺷ ﺮ ﻧﯿﺴﺖ،

ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﺑﺎﯾﺪ اﯾﻨﮑﺎر را در ﺳﻤﺖ ﺳﺮور اﻧﺠﺎم دﻫﺪ.

در ﺻﻮرﺗ ﮐﻪ ﻗﺴﻤﺘ از اﻣﻨﯿﺖ ﺑﺎﯾﺪ در ﮐﺎوﺷ ﺮ ﺑﺮرﺳ ﺷﻮد، دادهﻫﺎی ﺣﺴﺎس ﺳﺮور ﺑﻪ

ﻫﯿﭻ وﺟﻪ ﻧﺒﺎﯾﺪ ﺑﻪ ﻣﺸﺘﺮی ارﺳﺎل ﺷﻮﻧﺪ، ﺑﻠ ﻪ ﺑﺎﯾﺪ ﯾ ﺗﻮﮐﻦ ﯾ ﺒﺎر ﻣﺼﺮف ﺣﺎﺻﻞ از

ﭼ ﯿﺪهﮔﯿﺮی از داده ﻣﺮﺑﻮﻃﻪ اﯾﺠﺎد ﺷﺪه ذﺧﯿﺮه ﺷﻮد و ﺑﻪ ﻣﺸﺘﺮی ارﺳﺎل ﺷﻮد، ﻣﺎﻧﻨﺪ

ﺳﻨﺎرﯾﻮﯾﯽ ﮐﻪ در «ﻣﺮا ﺑﻪ ﯾﺎد داﺷﺘﻪ ﺑﺎش» ﺻﻮرت ﻣ ﮔﺮﻓﺖ.

۴٬٢٬١٢ ﻏﯿﺮه

آﮔﺎﻫ از راه دﻓﺎع در ﺑﺮاﺑﺮ ﺣﻤﻼت ﻣﺨﺘﻠﻒ و ﻧﻮﯾﻦ، ﻧﯿﺎزﻣﻨﺪ اﺳﺘﺨﺪام ﯾﺎ ﻫﻤ ﺎری ﺑﺎ

ﯾ ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ اﻃﻼﻋﺎت اﺳﺖ. اﯾﻦ ﻣﺘﺨﺼﺼﯿﻦ ﺑﺮای ﺣﻔﻆ اﻣﺘﯿﺎز ﺧﻮد ﺑﺎﯾﺪ داﺋﻤﺎ

164

در ﺳﻤﯿﻨﺎرﻫﺎ و ﻟﯿﺴﺖﻫﺎی ﻣﻬﻢ ﻣﺨﺎﻃﺮات اﻣﻨﯿﺘ ﺷﺮﮐﺖ ﻧﻤﺎﯾﻨﺪ و داﺋﻤﺎ اﻃﻼﻋﺎت ﺧﻮد

را ﺑﺮوز ﻧﻤﺎﯾﻨﺪ.

ﻣﺘﺎﺳﻔﺎﻧﻪ ﺑﺴﯿﺎری از ﺳﺎزﻣﺎنﻫﺎی اﯾﺮاﻧ ﺗﻨﻬﺎ ﭘﺲ از اﯾﻨﮑﻪ ﺑﻪ آﻧﻬﺎ ﻧﻔﻮذ ﻣ ﺷﻮد اﻗﺪام

ﺑﻪ اﺳﺘﺨﺪام ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ ﻣ ﮐﻨﻨﺪ، اﯾﻨﮑﺎر ﻫﺰﯾﻨﻪ اﺻﻼح ﺳﯿﺴﺘﻢﻫﺎ را ﺗﺎ ٨٠%

اﻓﺰاﯾﺶ ﻣ دﻫﺪ. ﺳﺎﻻﻧﻪ ﻣﺒﻠ ﻗﺎﺑﻞ ﺗﻮﺟﻬ از ﺑﻮدﺟﻪ ﺷﺮﮐﺖﻫﺎی ﺑﯿﻦاﻟﻤﻠﻠ ﺻﺮف اﻣﻨﯿﺖ

اﻃﻼﻋﺎت و ﻣﻘﺎﺑﻠﻪ ﺑﺎ ﻣﺨﺎﻃﺮات آن ﻣ ﺷﻮد.

165

۵ ﻧﺘﯿﺠﻪ ﮔﯿﺮی:

در اﯾﻦ ﻧﻮﺷﺘﻪ، وب ﺑﻪ ﻋﻨﻮان ﯾ ﺑﺴﺘﺮ اراﺋﻪ اﻃﻼﻋﺎت ﻣﻌﺮﻓ ﺷﺪ. ﺳﭙﺲ ﻧﯿﺎز ﺑﻪ

ﭼﻬﺎرﭼﻮبﻫﺎی ﺑﺮﻧﺎﻣﻪﺳﺎزی ﺑﺮای ﺗﻮﻟﯿﺪ ﻧﺮماﻓﺰارﻫﺎی ﭘﯿﺸﺮﻓﺘﻪ وب ﻣﻄﺮح ﺷﺪ و وﯾﮋﮔ ﻫﺎی اﯾﻦ

ﭼﻬﺎرﭼﻮبﻫﺎ ﻣﻮرد ﺑﺮرﺳ ﻗﺮار ﮔﺮﻓﺖ.

اﮐﺜﺮ ﭼﻬﺎرﭼﻮبﻫﺎی ﻣﻮﺟﻮد در ﺳﯿﺴﺘﻢﻫﺎی اﻣﺮوزی، ﺑﺎ ﻧﻘﻄﻪ ﻧﻈﺮ ﮐﺎراﯾﯽ و ﺑﺪون دﻗﺖ ﺑﻪ

ﺟﻨﺒﻪ اﻣﻨﯿﺖ ﺗﻮﻟﯿﺪ ﺷﺪهاﻧﺪ و ﻣﺸ ﻼت ﺑﺴﯿﺎری را ﺑﺮای ﺳﺎزﻣﺎنﻫﺎ ﺑﻪ وﺟﻮد آوردهاﻧﺪ. ﭼﻬﺎرﭼﻮب -

ﻫﺎی اﻣﻨﯿﺘ ﻣﺤﺾ ﻣﺎﻧﻨﺪ OWASP ESAPI ﻧﯿﺰ ﺑﻪ دﻟﯿﻞ ﮔﺴﺘﺮدﮔ و ﭘﯿﭽﯿﺪﮔ زﯾﺎد، ﻫﻤﭽﻨﯿﻦ

ﻧﺪاﺷﺘﻦ ﭘﯿﺎدهﺳﺎزی ﮐﺎﻣﻞ، ﻣﻮرد اﺳﺘﻘﺒﺎل ﺧﻮﺑﯽ ﻗﺮار ﻧﮕﺮﻓﺘﻪاﻧﺪ.

وب روز ﺑﻪ روز ﺑﺎ ﻣﺨﺎﻃﺮات ﺑﯿﺸﺘﺮی ﻣﻮاﺟﻪ ﻣ ﺷﻮد و ﮐﻢ ﮐﻢ ﺑﻪ ﻣﯿﺪان ﺟﻨﮓ ﮐﺸﻮرﻫﺎ،

ﺖﻠﻣﻫﺎ و ﺳﺎزﻣﺎنﻫﺎ ﺗﺒﺪﯾﻞ ﻣ ﺷﻮد. در اﯾﻦ ﻓﻀﺎ، اﺳﺘﺤ ﺎم ﻣﺼﺎﻟ اﺳﺘﻔﺎده ﺷﺪه ﺑﺮای ﺳﺎﺧﺘﻦ

ﻪﻌﻠﻗﻫﺎ اﻫﻤﯿﺖ ﺑﺴﺰاﯾﯽ دارد و در ﺻﻮرﺗ ﮐﻪ اﺻﻼﺣﺎت ﺟﺪی در اﯾﻦ زﻣﯿﻨﻪ ﺻﻮرت ﻧﮕﯿﺮد، در

آﯾﻨﺪه ﻧﺰدﯾ ﺑﻪ ﻣﻌﻀﻞ ﺑﺴﯿﺎر ﺑﺰرﮔ ﺗﺒﺪﯾﻞ ﺧﻮاﻫﺪ ﺷﺪ.

ﻣﻮارد اﻣﻨﯿﺘ و راﻫ ﺎرﻫﺎی ﻣﻄﺮح ﺷﺪه در اﯾﻦ ﺳﻨﺪ، ﺑﯿﺶ از ٩٠% ﻪﻠﻤﺣﻫﺎی ﻧﻔﻮذﮔﺮان

و ﺗﻤﺎم ﺣﻤﻠﻪﻫﺎی ﻧﻔﻮذﮔﺮان ﻣﺒﺘﺪی را ﭘﻮﺷﺶ ﻣ دﻫﻨﺪ و رﻋﺎﯾﺖ ﺻﺤﯿﺢ آﻧﻬﺎ، ﺳﯿﺴﺘﻢﻫﺎی ﻣﺒﺘﻨ

ﺑﺮ وب را ﺗﺎ ﺣﺪ ﻗﺎﺑﻞ ﻗﺒﻮﻟ ﻣﺴﺘﺤ ﻢ ﻣ ﺳﺎزد. ﺑﺮای ﺟﻠﻮﮔﯿﺮی از ﻣﺎﺑﻘ ﻣﺨﺎﻃﺮات، ﺳﺎزﻣﺎن ﺑﺎﯾﺪ

ﻧﺴﺒﺖ ﺑﻪ اﺳﺘﺨﺪام ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ اﻃﻼﻋﺎت و ﻫﻤﭽﻨﯿﻦ ﺑﻬﺮهﮔﯿﺮی از ﺳﺎزﻣﺎنﻫﺎی آزادی ﻣﺎﻧﻨﺪ

OWASP روی ﺑﯿﺎورد.

166

۶ واژهﻪﻣﺎﻧ

ﻣﺨﻔﻒ ﻋﺒﺎرت AAA Authentication, Authorization, Accounting

ﻣﺨﻔﻒ ﻋﺒﺎرت ACID Atomicity, Consistency, Isolation, Durability

ﺗﮑﻨﻮﻟﻮژی اﻧﺘﺰاﻋ ﺳﺎزی دﺳﺘﺮﺳ ﺑﻪ ﭘﺎﯾ ﺎه ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ADO.NET

اﺳﺘﺎﻧﺪارد رﻣﺰﻧﮕﺎری ﻣﺘﻘﺎرن ﺑﻠﻮﮐ AES

ﻒﻔﺨﻣ AJAX Asynchronous Javascript And XML

ﻪﻠﻤﺣﻫﺎی ﺳﺎﯾﺒﺮی ﺳﺎزﻣﺎن ﻪﺘﻓﺎﯾ APT Advanced Persistent Threat

ﭼﯿﺪﻣﺎن ﺗﺼﺎدﻓ ﺣﺎﻓﻈﻪ ASLR Address Space Layout Randomization

ﺗﮑﻨﻮﻟﻮژی ﺳﺮور ﻣﺎﯾ ﺮوﺳﺎﻓﺖ ASP Active Server Pages

ﻻﯾﻪ اﻧﺘﺰاﻋ ﺳﺎزی Abstraction Layer

ﮐﻨﺘﺮل دﺳﺘﺮﺳ Access Control

روشﻫﺎی ﻣﻬﻨﺪﺳ ﻧﺮماﻓﺰار ﭼﺎﺑ Agile

رﻓﺘﺎر ﻣﻄﻠﻮب ﭘﺎﯾ ﺎﻫ ﮐﻪ ﺗﻀﻤﯿﻦ ﻣ ﮐﻨﺪ ﺗﺮاﮐﻨﺶ ﻋﻤﻠﯿﺎت اﺗﻤ ﺑﺎﺷﺪ Atomicity

در دﺳﺘﺮس ﺑﻮدن ﯾ ﺳﯿﺴﺘﻢ و ﺧﺎرج ﻧﺸﺪن آن از ﻣﺪار Availability

ﯿﺳﺴﺘﻤ ﮐﻪ ﭘﺸﺘﯿﺒﺎﻧ از ﻧﺴ ﻗﺪﯾﻤ ﺧﻮد را اﻧﺠﺎم ﻣ دﻫﺪ Backward Compatible

ﺗﺴﺖ ﮐﺎراﯾﯽ ﺑﻪ ﺗﻌﺪاد ﺑﺎﻻ Benchmark

ﻗﻀﯿﻪ روز ﺗﻮﻟﺪ Birthday Theorem

ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ ﮐﻮر Blind SQL Injection

اﻓﺰودن وﯾﮋﮔ ﻫﺎی زﯾﺎدی و زاﺋﺪ ﺑﻪ ﻧﺮماﻓﺰار Bloat

اﻧﻔﺠﺎری Bursty

ﺳﯿﺴﺘﻢ ﺗﺸﺨﯿﺺ اﻧﺴﺎن از ﻣﺎﺷﻦﯿ CAPTCHA

ﻒﻔﺨﻣ CIA Confidentiality, Integrity, Availability

ﺟﻌﻞ درﺧﻮاﺳﺖ ﺑﯿﻦ ﺳﺎﯾﺘ CSRF Cross Site Request Forgery

167

زﺑﺎن ﻗﺎﻟﺐ ﺑﻨﺪی ﺻﻔﺤﺎت وب CSS

ﻣﺮﺟ ﺗﺎﯾﯿﺪ و اﻋﻄﺎی ﮔﻮاﻫﯿﻨﺎﻣﻪ دﯾﺠﯿﺘﺎل Certificate Authorotiy

ﻪﻔﻟﻮﻣ Component

ﭼﺴﺒﺎﻧﺪن، اﻓﺰودن Concat

ﻣﺤﺮﻣﺎﻧﮕ ، ﻋﺪم اﻣ ﺎن ﺧﻮاﻧﺪن اﻃﻼﻋﺎت ﺗﻮﺳﻂ اﻓﺮاد ﻏﯿﺮ Confidentiality

اﻧﺒﺎره اﺗﺼﺎل Connection Pool

ﯾ ﭙﺎرﭼ ، ﻋﺪم ﻧﺎﻫﻤﺎﻫﻨﮕ ﺑﯿﻦ دادهﻫﺎی ﭘﺎﯾ ﺎهداده Consistency

ﻣﺤﺘﻮی Content

ﺷﯿﺮﯾﻨ ، ﮐﻠﻮﭼﻪ، از ﻗﺎﺑﻠﯿﺖﻫﺎی ﮐﺎوﺷ ﺮﻫﺎی وب Cookie

CppCMS

دﺳﺘﻮرات دﺳﺘﮑﺎری داده DML Data Manipulation Language

ﺟﻠﻮﮔﯿﺮی از ﺳﺮوﯾﺲ DOS Denial of Service

ﻏﻮل، ﻧﺮماﻓﺰاری ﮐﻪ در ﻗﺎﻟﺐ ﺳﺮوﯾﺲ ﺑﺮ روی ﺳﯿﺴﺘﻢ اﺟﺮا ﻣ ﺷﻮد Daemon

راهاﻧﺪازی، ﻧﺼﺐ Deployment

ﻣﺎﻧﺎﯾﯽ، دادهﻫﺎی ﭘﺎﯾ ﺎهداده ﻣﺪﺗﻬﺎی زﯾﺎدی ﺳﺎﻟﻢ ﻣ ﺪﻧﺎﻣ Durability

ﻧﺎم اﺻﻠ ﺟﺎواﺳ ﺮﯾﭙﺖ و زﺑﺎنﺎﻫی ﻣﺸﺎﺑﻪ ECMAScript

رﻣﺰﮔﺬاری Encryption

رﻫﺎﯾﯽ، ﻋﻤﻠﯿﺎت ﻧﺸﺎﻧﻪﮔﺬاری ﮐﺎراﮐﺘﺮﻫﺎی ﺧﺎص در ﯾ ﻣﺘﻦ Escaping

رﺧﺪاد Event

ﺳﻮء اﺳﺘﻔﺎده، اﺑﺰار ﯾﺎ ﮐﺪی ﮐﻪ ﻣﻌﻀﻞ اﻣﻨﯿﺘ را اﺳﺘﻔﺎده ﻣ ﺪﻨﮐ Exploit

ﻣﻮﺳﺴﻪ اﺳﺘﺎﻧﺪارد ﻣﻠ آﻣﺮﯾ ﺎ FIPS

ﮐﻨﺘﺮﻟ ﺮ ﻣﺤﻮری در ﺳﺎﺧﺘﺎر Front Controller MVC

زﺑﺎن اراﺋﻪ ﻣﺤﺘﻮای وب HTML

ﭘﺮوﺗﮑﻞ اﻧﺘﻘﺎل ﻣﺤﺘﻮای وب HTTP

168

ﻗﺴﻤﺘ از ﭘﺮوﺗﮑﻞ ﮐﻪ ﻣﺨﺼﻮص اداﻣﻪ داﻧﻠﻮد اﺳﺖ HTTP Range

ﭘﺮوﺗﮑﻞ اﻧﺘﻘﺎل اﻣﻦ ﻣﺤﺘﻮای وب HTTPS

ﻗﺮاردادن داده ﻣﺘﻐﯿﺮ در ﻣﺘﻦ ﺑﺮﻧﺎﻣﻪ Hardcode

ﮐﻨﺘﺮل دﺳﺘﺮﺳ ﻧﻘﺶ ﻣﺤﻮر ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺒﯽ Hierarchical RBAC

ﻢﺘﺴﯿﺳﻫﺎﯾﯽ ﮐﻪ ﻫﻤﯿﺸﻪ در دﺳﺘﺮس ﻫﺴﺘﻨﺪ High Availability

ﻣﯿﺰﺑﺎن، ﺳﺮور Host

ﻪﻠﻤﺣ ﯿﺨﺸﺗ ﺘﺴﯿﺳ IDS Intrusion Detection System

ﺪﯿﻘﺗ IP Binding IP

ﺗﻀﻤﯿﻦ اﻃﻼﻋﺎت Information Assurance

Integrity

ﭼﻨﺪزﺑﺎﻧ ، ﺟﻬﺎﻧ ﺳﺎزی Internationalization

اﻧﺰوا، ﺗﺠﺰﯾﻪ، ﻓﺮاﯾﻨﺪ ﺟﻠﻮﮔﯿﺮی از ﺗﺎﺛﯿﺮﮔﺬاری ﯾ درﺧﻮاﺳﺖ در دﯾ ﺮی Isolation

ﻗﺎﻟﺐ اراﺋﻪ ﻣﺤﺘﻮی ﺟﺎواﺳ ﺮﯾﭙﺖ JSON Javascript Object Notation

JSON ﺑﻪ ﻫﻤﺮاه JSONP Padding

ﺻﻔﺤﺎت ﺳﺮور ﺟﺎوا JSP Java Server Pages

ﺟﺎوا Java

ﺟﺎواﺳ ﺮﯾﭙﺖ Javascript

ﻞﻣﺎﻋ ﻢﺘﺴﯿﺳ ﻪﺘﺴﻫ Kernel

ﻒﻔﺨﻣ LFI Local File Inclusion

ﻟﯿﺴﺎﻧﺲ آزاد ﻣﺤﺼﻮﻻت ﻣﺘﻦ ﺑﺎز LGPL Lesser General Public License

ﮐﺎوﺷ ﺮ ﺗﺤﺖ ﮐﻨﺴﻮل Lynx

ﻒﻔﺨﻣ MVC Model View Controller

ﻒﻔﺨﻣ NAT Network Address Translation

ﻣﺤﻠ ، ﺑﻮﻣ Native

169

اﺣﺮاز ﻫﻮﯾﺖ ﺑﺎز و ﻣﺤﻮری ﻣﻌﻤﻮﻻ ﺑﺎ OAuth OpenID

ﻒﻔﺨﻣ ORM Object Relational Mapping

ﻣﻌﺘﺒﺮﺗﺮﯾﻦ ﻣﻮﺳﺴﻪ ﺑﯿﻦ اﻟﻤﻠﻠ اﻣﻨﯿﺖ وب OWASP

ﻣﺠﻮز Permission

ﺎﻧﺎﻣ Persistant

درﺧﻮاﺳﺖ Query

ﺳﯿﺴﺘﻢ ﻣﺪﯾﺮﯾﺖ ﭘﺎﯾ ﺎه داده راﺑﻄﻪای RDBMS

ﻒﻔﺨﻣ Remote Procedure Call، ﻓﺮاﺧﻮاﻧ ﺗﺎﺑﻊ از دور RPC

ﺟﺪاول رﻧﮕﯿﻦ ﮐﻤﺎﻧ Rainbow Table

XSS ﻣﻨﻌﮑﺲ ﺷﺪه Reflected XSS

ﺑﺮوز ﮐﺮدن Refresh

ﻣﺮا ﺑﻪ ﺧﺎﻃﺮ داﺷﺘﻪ ﺑﺎش Remember Me

ﺑﺪﻧﻪ ﭘﺎﺳ درﺧﻮاﺳﺖ Response Body

Search Engine Optimization، ﺑﻬﯿﻨﻪ ﺳﺎزی ﺑﺮای ﻣﻮﺗﻮر ﺟﺴﺘﺠﻮ SEO

ﭘﺮوﺗﮑﻞ اﺳﺘﺎﻧﺪارد وب ﺳﺮوﯾﺲ SOAP

Same Origin Policy، ﻗﺎﻧﻮن دﺳﺘﺮﺳ ﺑﻪ ﻋﻨﺼﺮ اﯾﺠﺎد ﮐﻨﻨﺪه SOP

SQL Structured Query Language

ﺗﺰرﯾﻖ درﺧﻮاﺳﺖ SQL Injection

Software as a Service، ﯾ از ﻣﻔﺎﻫﯿﻢ راﯾﺎﻧﺶ اﺑﺮی SaaS

ﺟﻌﺒﻪ ﺷﻦ، ﻣﺤﯿﻂ ﺗﺴﺖ رﻓﺘﺎر ﯾ ﺳﯿﺴﺘﻢ Sandbox

ﮔﺴﺘﺮش ﭘﺬﯾﺮی Scalability

ﺖﺴﺸﻧ ﺖﻗﺮﺳ Session Hijacking

ﺖﺴﺸﻧ ﺳﺎﻨﺷ Session ID

ﺑﺪون وﺿﻌﯿﺖ، ﺳﯿﺴﺘﻤ ﮐﻪ درﺧﻮاﺳﺖ ﻗﺒﻠ را ﺑﻪ ﯾﺎد ﻧﺪارد Stateless

170

اﯾﺴﺘﺎ Static

ﺗﻮﺳﻌﻪ ﻣﺒﺘﻨ ﺑﺮ ﺗﺴﺖ TDD Test Driven Development

ﻣﺸﺘﺮی ﺳﺒ ، ﺳﯿﺴﺘﻢﻫﺎﯾﯽ ﮐﻪ ﺗﻨﻬﺎ ﮐﺎوﺷ ﺮ وب دارﻧﺪ Thin Client

ﺚﻟﺎ ﺺﺨﺷ Third Party

ﻪﺳﺎﻨﺷ ،ﻪﻧﺎﺸﻧ ،ﺖﻣﻼﻋ Token

ﮔﺬر اﺟﺘﻤﺎﻋ Union Bypassing

ﻧﺎم و ﻣﺸﺨﺼﺎت ﮐﺎوﺷ ﺮ وب User Agent

ﺑﺮدار، راﻫ ﺎرﻫﺎی ﻋﺒﻮر از ﻟﯿﺴﺖ ﺳﯿﺎه Vector

ﺗﻮر ﮔﺴﺘﺮده ﺟﻬﺎﻧ ، وب World Wide Web

Extensible Markup Language زﺑﺎن ﺑﺮﭼﺴﺒﯽ ﮔﺴﺘﺮشﺮﯾﺬﭘ XML

XMLHTTPRequest

اﺳ ﺮﯾﭙﺖ ﻧﻮﯾﺴ ﺑﯿﻦ ﺳﺎﯾﺘ XSS Cross Site Scripting

ﮐﺎﻣﭙﺎﯾﻠﺮ اﺳﺘﺎﻧﺪارد ﺳ gcc

ﺗﮑﻨﻮﻟﻮژی ﻗﺮار دادن ﯾ ﺻﻔﺤﻪ وب داﺧﻞ ﯾ ﺻﻔﺤﻪ دﯾ ﺮ iFrame

ﻧﺎم ﻣﺨﻔﻔ ﺑﺮای دﺳﺘﺮﺳ ﺑﻪ ﺳﯿﺴﺘﻢ ﺧﻮد در ﺷﺒ ﻪ localhost

ﻣﺘﺎداده، داده در ﺑﺎرهی داده metadata

171

٧ ﻓﻬﺮﺳﺖ ﻣﻨﺎﺑﻊ(ﻓﺎرﺳﯽ)

١ - اﻣﻨﯿﺖ دادهﻫﺎ، اﺣﺴﺎن ﻣﻠ ﯿﺎن، ﻋﻠ ذاﮐﺮاﻟﺤﺴﯿﻨ ، اﻧﺘﺸﺎرات ﺺﻧ

٢ - رﻣﺰﻧﮕﺎری ﺑﺎ ﮐﻠﯿﺪ ﻋﻤﻮﻣ ، ﻣﺤﻤﺪ ﺑﺎﻗﺮی، اﻧﺘﺸﺎرات داﻧﺸ ﺎه اﻣﺎم ﺣﺴﯿﻦ

٣ - ﮐﺘﺎب ﺳﺎل اﻓﺘﺎ (١٣٩٠)، وزارت ارﺗﺒﺎﻃﺎت و ﻓﻨﺎوری اﻃﻼﻋﺎت

۴ - ﻣﺠﻤﻮﻋﻪ ﻣﻘﺎﻻت ﭘﻨﺠﻤﯿﻦ ﮐﻨﻔﺮاﻧﺲ رﻣﺰ اﯾﺮان، ﺗﻬﺮا ن ١٣٨٩

OWASP Top 10 2010 - ۵ ﻓﺎرﺳ ، ﻋﺒﺎس ﻧﺎدری، ٢٠١١

۶ - اﺳﺘﺎﻧﺪارد ﺑﺮرﺳ اﻣﻨﯿﺖ ﻧﺮماﻓﺰار، ﻋﺒﺎس ﻧﺎدری، ٢٠١١

٧ - اﻣﻨﯿﺖ ﺗﺨﺼﺼ در وب، ﻋﺒﺎس ﻧﺎدری ، ﻣ ﻘ ﺎ ﻻت رﺳﺎﻧﻪﻫﺎی دﯾﺠﯿﺘﺎل، ١٣٩٠

172

٨ ﻓﻬﺮﺳﺖ ﻣﻨﺎﺑﻊ (اﻧﮕﻠﯿﺴﯽ)

1. Hacking Exposed (5th Edition), McGraw Hill 2. Information Security, Principles and Practice (Mark Stamp), Wiley 3. Modern Cryptography, Theory & Practice (Pearson) 4. http://ir.php.net/manual/en/function.mysql-fetch-assoc.php 5. http://wezfurlong.org/blog/2004/may/first-steps-with-pdo/ 6. https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project 7. https://www.owasp.org/index.php/Top_10_2007 8. https://www.owasp.org/index.php/Top_10_2010-Main 9. https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet 10. https://www.owasp.org/index.php/Category:OWASP_Application_Securit y_Verificat ion_St andard_Pr oj ect 11. https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project 12. http://cryptodox.com

173

٩ ﻢﯾﺎﻤﺿ

٩٬١ درﺑﺎره ﻧﮕﺎرﻧﺪه

ﻋﺒﺎس ﻧﺎدری اﻓﻮﺷﺘﻪ، ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ اﻃﻼﻋﺎت و ﻧﻤﺎﯾﻨﺪه اﯾﺮان در اواﺳﭗ اﺳﺖ. وی

ﺑﯿﺶ از ١٠ ﺳﺎل ﺳﺎﺑﻘﻪ ﮐﺎر ﺗﺨﺼﺼ ﺗﻮﺳﻌﻪ ﻧﺮماﻓﺰار و ﺑﯿﺶ از ۵ ﺳﺎل ﺳﺎﺑﻘﻪ ﮐﺎر ﺗﺨﺼﺼ اﻣﻨﯿﺖ

اﻃﻼﻋﺎت دارد.

ﻫﻤﭽﻨﯿﻦ او ﺑﺮای ﻣﻘﻄ دﮐﺘﺮا از ﭼﻨﺪﯾﻦ داﻧﺸ ﺎه آﻣﺮﯾ ﺎ و اﻧﮕﻠﺴﺘﺎن دﻋﻮﺗﻨﺎﻣﻪ داﺷﺘﻪ

اﺳﺖ. ﻋﺒﺎس در ﺳﻪ دوره ﻣﺴﺎﺑﻘﺎت ﻧﻔﻮذﮔﺮی اﯾﺮان دارای رﺗﺒﻪﻫﺎی دوم، ﭘﻨﺠﻢ، ﺳﻮم و اول

اﻓﺘﺨﺎری ﺷﺪه اﺳﺖ. وی ﻫﻤﭽﻨﯿﻦ در ﺳﻄ ﺑﯿﻦاﻟﻤﻠﻠ ﺑﻪ ﻋﻨﻮان ﻣﺘﺨﺼﺺ اﻣﻨﯿﺖ اﻃﻼﻋﺎت و

ﻧﻔﻮذﮔﺮ ﺑﺮﺟﺴﺘﻪ ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ.

ﻋﺒﺎس در ﺑﯿﺶ از ١٠ ﭘﺮوژه ﺑﯿﻦاﻟﻤﻠﻠ ﻣﺘﻦﺑﺎز ﺑﺰرگ ﻫﻤ ﺎری دارد. زﯾﺮﺳﺎﺧﺖ

OpenStack، ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ اوﺑﻮﻧﺘﻮ، ﻓﺎﺲﮐﺎﻓﺮﯾ، SQLCipher و PyQt از اﯾﻦ دﺳﺘﻪ ﻫﺴﺘﻨﺪ.

او ﺑﯿﺶ از ٣٠ ﺳﯿﻤﻨﺎر و ﮐﺎرﮔﺎه ﻋﻤﻮﻣ ﻣﺨﺘﻠﻒ ﺑﺰﮔﺰار ﻧﻤﻮده اﺳﺖ. وی ﭼﻨﺪﯾﻦ درس

آﻣﻮزﺷ و ﭘﮋوﻫﺸ را در داﻧﺸ ﺎهﻫﺎی ﻣﺨﺘﻠﻒ اراﺋﻪ داده، راﻫﻨﻤﺎی ﺑﯿﺶ از ٢٠ درس ﺑﻮده اﺳﺖ.

ﺗﺪوﯾﻦ ﺳﻮاﻻت آزﻣﻮن ﺗﺨﺼﺼ ﻣﻬﻨﺪﺳ اﻣﻦ ﻧﺮماﻓﺰار و ﻋﻀﻮﯾﺖ در اﻧﺠﻤﻦ ﺑﯿﻦاﻟﻤﻠﻠ

ﻣﻬﻨﺪﺳ ﻧﺮماﻓﺰار اﻣﻦ، از دﯾ ﺮ ﻓﻌﺎﻟﯿﺖﻫﺎی اوﺳﺖ.

ﻋﺒﺎس ﺗﻮﺳﻌﻪدﻫﻨﺪه اﺻﻠ jFramework ﺑﻮده و ﺑﻪ ﻓﻠﺴﻔﻪ ﻧﯿﺰ ﻋﻼﻗﻪ ﻗﺎﺑﻞ ﺗﻮﺟﻬ دارد.

او ﺑﯿﺶ از ٢٠ ﻣﻘﺎﻟﻪ آزاد ﻣﻨﺘﺸﺮ ﮐﺮده ﮐﻪ ﻫﺮﮐﺪام ﻫﺰاران ﺑﺎر داﻧﻠﻮد و ﻣﻄﺎﻟﻌﻪ ﺷﺪهاﻧﺪ.

اﯾﻦ ﻣﺴﺘﻨﺪ ﭘﺲ از ﮐﺴﺐ ﺗﺠﺮﺑﻪ در ﭼﻨﺪﯾﻦ ﺳﺎزﻣﺎن ﺗﺠﺎری و ﻣﻮﺳﺴﻪ ﺑﯿﻦاﻟﻤﻠﻠ ﺗﻮﺳﻂ او

ﻧﮕﺎرش ﺷﺪه اﺳﺖ. ﺳﺎﯾﺖ رﺳﻤ وی www.abiusx.com ﻣ ﺪﺷﺎﺑ.

174