Разработка безопасных проектов с использованием Bitrix Framework.

Slides:



Advertisements
Similar presentations
The Important Thing About By. The Important Thing About ******** The important thing about ***** is *****. It is true s/he can *****, *****, and *****.
Advertisements

Protecting the code of Web Applications
PHP Hypertext Preprocessor Information Systems 337 Prof. Harry Plantinga.
True/False. False True Subject May Go Here True / False ? Type correct answer here. Type incorrect answer here.
Уязвимость сайтов и обеспечение их безопасности. Цели атак на сайты Получение секретной информации (пароли и т.п.) Получение конфиденциальной информации.
Презентація за розділом “Гумористичні твори”
Центр атестації педагогічних працівників 2014
Галактики і квазари.
Характеристика ІНДІЇ.
Процюк Н.В. вчитель початкових класів Боярської ЗОШ І – ІІІ ст №4
Selection Sort
Универсальная интеграция технологии построения отчетов в семейство.NET приложений Презентация дипломной работы Порсева Анатолия, 542 гр. Санкт-Петербург.
Server & Client  Client: Your computer  Server: Powerful & Expensive computer. Requires network access.
Brady Gaster Microsoft Corporation. Here’s some data!
SJSU CS157B Dr. Lee1  2004 Jenny Mitchell Two Useful Tools You Can’t Live Without by Jenny Mitchell SJSU CS157B Section PHP and MySQL.
Lecture 3 – Data Storage with XML+AJAX and MySQL+socket.io
By Jon Marozick.  JavaScript toolkit  Aims to change the way developers think  jQuery philosophy  Find some HTML  Do something to it.
Throwing and Catching Exceptions Tran Anh Tuan Edit from Telerik Software Academy
Internet and Web Application Development Revision.
Chapter 7 PHP Interacts with Ms. Access (Open DataBase Connectivity (ODBC))
12 апреля « День Космонавтики».
1 Учебный курс Введение в JavaScript и CGI Лекция 4 Работа с графикой, гипертекстовые переходы и синтаксис языка кандидат технических наук Павел Брониславович.
Server & Client  Client: Your computer  Server: Powerful & Expensive computer. Requires network access.
Web Scripting [PHP] CIS166AE Wednesdays 6:00pm – 9:50pm Rob Loy.
NMD202 Web Scripting Week3. What we will cover today Includes Exercises PHP Forms Exercises Server side validation Exercises.
Chapter 6: Authentications. Training Course, CS, NCTU 2 Overview  Getting Username and Password  Verifying Username and Password  Keeping The Verification.
PERSONAL BI PowerPivot for Excel TEAM BI PowerPivot for Sharepoint CORPORATE BI Analysis Services.
Phonegap Bridge – File System CIS 136 Building Mobile Apps 1.
Духовні символи Голосіївського району
Selection Sort
CS50 Week 9 Sam Green ’
CHAPTER 7 Introduction to PHP5 Part II อ. ยืนยง กันทะเนตร คณะเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยพะเยา 1.
Chris (I’m not a ghost) Woods. What went right (with Mongo) Application design Application development and system migration Application debugging MongoDB.
Programming Paradigms By Tyler Smith. Event Driven Event driven paradigm means that the program executes code in reaction to events. The limitation of.
Class06 Conditional Statements MIS 3501, Fall 2015 Brad Greenwood, PhD MBA Department of MIS Fox School of Business Temple University 9/10/2015 © 2014,
Radio Buttons. Input/Form/Radio Group Use the dialog to enter label and values for the radio buttons.
NHibernate что, где, когда Артур Дробинский ЗетаСофт Томск, 2012.
Database to HTML and Back again A programmers tale.
به نام خدا SQL QUIZ جوانمرد Website: ejavanmard.blogfa.com.
Radoslav Georgiev Telerik Corporation
PHP and SQL Server: Connection IST 210: Organization of Data IST2101.
Phonegap Bridge – Storage CIS 136 Building Mobile Apps 1.
Click Here for Athletic Cut Shirts
Website: Contact No: ID:
Дизайн корпоративных сайтов SharePoint 2010
And the text with form..
البرمجة بلغة الفيجول بيسك ستوديو
Проф. д-р Васил Цанов, Институт за икономически изследвания при БАН
ЗУТ ПРОЕКТ на Закон за изменение и допълнение на ЗУТ
О Б Щ И Н А С И Л И С Т Р А П р о е к т Б ю д ж е т г.
Електронни услуги на НАП
Боряна Георгиева – директор на
РАЙОНЕН СЪД - БУРГАС РАБОТНА СРЕЩА СЪС СЪДЕБНИТЕ ЗАСЕДАТЕЛИ ПРИ РАЙОНЕН СЪД – БУРГАС 21 ОКТОМВРИ 2016 г.
Сътрудничество между полицията и другите специалисти в България
Съобщение Ръководството на НУ “Христо Ботев“ – гр. Елин Пелин
НАЦИОНАЛНА АГЕНЦИЯ ЗА ПРИХОДИТЕ
ДОБРОВОЛЕН РЕЗЕРВ НА ВЪОРЪЖЕНИТЕ СИЛИ НА РЕПУБЛИКА БЪЛГАРИЯ
Съвременни софтуерни решения
ПО ПЧЕЛАРСТВО ЗА ТРИГОДИШНИЯ
от проучване на общественото мнение,
Васил Големански Ноември, 2006
Програма за развитие на селските райони
ОПЕРАТИВНА ПРОГРАМА “АДМИНИСТРАТИВЕН КАПАЦИТЕТ”
БАЛИСТИКА НА ТЯЛО ПРИ СВОБОДНО ПАДАНЕ В ЗЕМНАТА АТМОСФЕРА
МЕДИЦИНСКИ УНИВЕРСИТЕТ – ПЛЕВЕН
Стратегия за развитие на клъстера 2015
Моето наследствено призвание
Правна кантора “Джингов, Гугински, Кючуков & Величков”
Безопасност на движението
Presentation transcript:

Разработка безопасных проектов с использованием Bitrix Framework. Смирнов Максим Ведущий программист «1С-Битрикс»

Безопасность Безопасность среды Безопасность платформы Внешний аудит безопасности Виртуальная машина и веб-окружение OTP Монитор безопасности Безопасный API 2005 2006 2007 2008 2009 2010 2011 2012 Аудит безопасности сайтов Создание внутреннего отдела безопасности Проактивный фильтр WAF Проактивная защита Безопасность платформы Безопасность партнерских разработок

Безопасность Проактивная защита Платформа Разработки партнера Хостинг и администрирование Проактивная защита

Потоки данных

Проактивный фильтр

$DB->ForSql $DB->ForSqlLike intval SQL 1 <?php 2 class CMyService 3 { 4 function deleteById($ID) 5 { 6 global $DB; 7 return $DB->Query('DELETE from b_my_service 8 WHERE ID = \''.$DB->ForSql($ID).'\''); 9 } 10 function deleteByName($NAME) 11 { 12 global $DB; 13 return $DB->Query('DELETE from b_my_service 14 WHERE NAME like ''.$DB->ForSqlLike($NAME).'\''); 15 } 16 } SQL $DB->ForSql $DB->ForSqlLike intval

$DB->PrepareUpdate SQL - рекомендуем $DB->Add $DB->PrepareUpdate 1 <?php 2 class CMyService 3 { 4 function add($arFields) 5 { 6 global $DB; 7 return $DB->Add("b_my_service", $arFields); 8 } 9 10 function update($ID, $arFields) 11 { 12 global $DB; 13 $ID = intval($ID); 14 $strUpdate = $DB->PrepareUpdate("b_my_service", $arFields); 15 if ($strUpdate != "") 16 { 17 if (!$DB->Query("UPDATE b_my_service SET ".$strUpdate." WHERE ID=".$ID)) 18 return false; 19 } 20 return true; 21 } 22 }

$DB->PrepareUpdate 1 <?php 2 if( 3 $_SERVER["REQUEST_METHOD"] == "POST" 4 && check_bitrix_sessid() //CSRF protection 5 ) 6 { 7 /* WRONG */ 8 //$DB->Add("b_my_service", $_POST); 9 /* RIGHT */ 10 $DB->Add("b_my_service", array( 11 "NAME" => $_POST["NAME"], 12 "SORT" => $_POST["SORT"], 13 )); 14 LocalRedirect($APPLICATION->GetCurPageParam()); 15 } Внимание! «~»! $DB->Add $DB->PrepareUpdate

CUtil::PhpToJSObject GetMessageJS htmlspecialcharsEx CUtil::JSEscape CUtil::PhpToJSObject GetMessageJS htmlspecialcharsEx htmlspecialcharsbx urlencode CHTTP::urnEncode 1 <!--JavaScript escape demo--> 2 <script> 3 var mess = '<?echo GetMessageJS("MESSAGE_ID")?>'; 4 var str = '<?echo CUtil::JSEscape($str)?>'; 5 var arResult = <?echo CUtil::PhpToJSObject($arResult)?>; 6 </script> 7 <!--HTML attributes values--> 8 <label for="<?echo htmlspecialcharsbx($id)?>" 9 onclick="<?echo htmlspecialcharsbx("alert(\"".CUtil::JSEscape($message)."\")");?>"> 10 <!--HTML between tags--> 11 <?echo htmlspecialcharsEx($preview);?> 12 </label> 13 <!--HTML inside textarea demo--> 14 <textarea id="<?echo htmlspecialcharsbx($id)?>"><?echo htmlspecialcharsbx($text);?></textarea> 15 <!--HTML "a" tag, href attribute--> 16 <a href="<?echo 17 htmlspecialcharsbx( 18 CHTTP::urnEncode($page)."?".urlencode($parameter)."=".urlencode($value) 19 ); 20 ?>"></a>

$io->ValidatePathString Файлы - CBXVirtualIo $io->CombinePath $io->ValidatePathString 1 <?php 2 $io = CBXVirtualIo::GetInstance(); 3 if( 4 $_SERVER["REQUEST_METHOD"] == "POST" 5 && check_bitrix_sessid() //CSRF protection 6 && $_REQUEST["action"] === "import" 7 ) 8 { 9 $pathWithinRoot = $_SERVER["DOCUMENT_ROOT"].$io->CombinePath("/", $_POST["path"]); 10 if ($io->ValidatePathString($pathWithinRoot) && $io->FileExists($pathWithinRoot)) 11 { 12 $h = $io->OpenFile($pathWithinRoot, "rb"); 13 if (is_resource($h)) 14 { 15 //TODO: import here 16 } 17 } 18 LocalRedirect($APPLICATION->GetCurPageParam()); 19 }

CTempFile::GetFileName автоматическое удаление CTempFile::GetDirectoryName можно задать время хранения 1 <?php 2 $io = CBXVirtualIo::GetInstance(); 3 if( 4 $_SERVER["REQUEST_METHOD"] == "POST" 5 && check_bitrix_sessid() //CSRF protection 6 && $_REQUEST["action"] === "export" 7 ) 8 { 9 $tempFilePath = CTempFile::GetFileName("export.csv"); 10 CheckDirPath($tempFilePath); 11 $h = $io->OpenFile($tempFilePath, "w"); 12 if (is_resource($h)) 13 { 14 //TODO: export here 15 CFile::ViewByUser(CFile::MakeFileArray($tempFilePath)); 16 } 17 LocalRedirect($APPLICATION->GetCurPageParam()); 18 }

Вопросы? Спасибо за внимание! Twitter: @qMBQx8GH Skype: mv.smirnov E-mail: max@bitrix.ru