SlideShare a Scribd company logo
1 of 49
PHP security audits
Assess your code for security<script>alert(‘XSS’..
Agenda


How to run an audit
Scouting the PHP code
Organizing for security
Speaker


 Damien Seguy
 Raise elePHPants
 damien.seguy@alterway.fr
Yes,
we take
questions
PHP code audits

Interview with the developpers : 1 day
Black Box testing              : 1 day
Open Code audit               : 2 days
Report and review              : 1 day
The application
  http://www.cligraphcrm.com/
Interviewing developpers


 Review what the application does
 Explain the code organization
 Explain the security features
Review the application


 Best : have a non-programmer explain the application
 Then have the programmer explain again
   The differences are interesting
Killer question
 What is the most important asset to secure on the site?
   «everything» is not an answer
 data destruction
 data exportation
 client separation
 company image
How was the app secured?


Where are the security functions?
How are they applied?
How do you check how they are applied ?
I like to hear...

 Out of web folder
 Automated deployement
 Automated tests AND manuals tests
 Security as a layer (functions and application)
Black Box testing
 Test from the outside
 Search the engines
 Session usurpation
 Disclosed files
 Displayed errors
 Tools : Rats, nikto, Wapiti
Open Code audits

What to search for?
What are the entry points?
How can they be exploited
  Or protected ?
What to search for?

  Injections
    PHP
    SQL
    HTML
    system
    HTTP
Keep focused


               Easy to loose focus
               Tempting to audit
               everything
PHP injections

PHP injections
  include, require and *_once
  back ticks ` `
  eval(‘’)
Using variables
Looking for eval
 Easy to look for
 grep
   Fast, available, convenient
   853 occurences
 Tokenizer
   Semantic, accurate
   37 occurrences
Tokenizer
<?php print ("hello $world! "); ?>
  [1] => Array
      (                   [6] => Array
          [0] => 266          (
          [1] => print            [0] => 309
          [2] => 1                [1] => $world
      )                           [2] => 1
                              )
  [2] => Array
      (                   [7] => Array
          [0] => 370          (
          [1] =>                  [0] => 314
          [2] => 1                [1] => !
      )                           [2] => 1
                              )
  [3] => (
  [4] => "                [8] => "
  [5] => Array            [9] => )
      (                   [10] => ;
           [0] => 314              [1] => Array
           [1] => hello                (
           [2] => 1                         [0] => PHP token
      )                                     [1] => PHP code
                                            [2] => Script line
                                       )
                                   [2] => "
Evals

◦ eval('$retour=$GLOBALS["'.$matches[1].'"];')
  ◦ Variable variables.
◦ eval($contenu_thjipk);
◦ eval($contents_essai);
  ◦ Content is read into variable, then executed : an include?
◦ eval('$hexdtime = "'.$hexdtime.'";')
  ◦ Long way to cast a string into a string
◦ eval('$retour2.= '.var_dump($recept->erreur).';')
  ◦ This doesn’t even make sense...
Assessing the code

One liners
  One line of code is sufficiently to be bad
Even though
  you must follow the code
  In reverse
Inclusion
◦ require("../params_frm.php")
◦ require(fct_lien_page_custom(TYPE_DOMAINE."/".TYPE_DOC.
  "_custom.php","abs"))
◦ require(fct_lien_page_custom("params_footer.php","abs"))
  ◦ Pretty secure inclusions

◦ But 96 variables used in includes
◦ include(fct_lien_page_custom("action/facture_".
  $format.".php","abs"))
  ◦ $format, anyone?
◦ require_once("etat_simple_".$choix_page."_trt.php")
  ◦ $choix_page, anyone ?
$format ?
<?php require("../params_trt.php");

$format=htmlentities($_REQUEST['exp_formdoc']);
if(empty($_REQUEST['exp_affiche'])) $affichage=0; 
  else $affichage=$_REQUEST['exp_affiche'];
if(empty($_REQUEST['exp_stockdoc'])) $stockage=0; 
  else $stockage=$_REQUEST['exp_stockdoc'];
$cde_id=$_REQUEST['exp_id'];
$type_doc=$_REQUEST['exp_typedoc'];

require(fct_lien_page_custom("fonctions/fonction_img.php","abs"));

include(fct_lien_page_custom("action/facture_".
$format.".php","abs"));
?>
$choix_format ?
  switch($choix) {
    case 0 : $choix_page="tabl";
    break;
    case 1 : $choix_page="histo1"; 
           if ($gfx_sens_graph=="1") $gfx_margegauche_dft="90";
    break;
    case 2 : $choix_page="histo2"; 
           if ($gfx_sens_graph=="1") $gfx_margegauche_dft="90";
    break;
    case 3 : $choix_page="histo3"; 
           if ($gfx_sens_graph=="1") $gfx_margegauche_dft="90";
    break;
    case 4 : $choix_page="histo4"; 
           if ($gfx_sens_graph=="1") $gfx_margegauche_dft="90";
    break;
    } ###...Way below

    require_once("etat_simple_".$choix_page."_trt.php");
Statistical audit


 Extract one type of information
 Review it out of context
 Use this as a starting point for more questions
Comments
//echo "<div><a class="texte1" style=...
#echo "<pre>";
  Left overs : what were they for?
#print_r($_REQUEST);
  No organization for bugs?
// hack for mozilla sunbird's extra = signs
Look for swearing, TODO, hack
Variables
 6883 different variables names
 All one possible one letter variable
 32 chars : $cache_maxsize_UTF8StringToArray
 Most used : $i (2586 times)
 $_1904, $samedi, $dummy, $sss, 19 $unknowns
 711 variables used only once in the code
Other interesting ideas
 name of functions
 name of classes
 name of constants
 literal
    strings, numbers
 Condition (if, while)
register_globals strikes back
register_globals strikes back


 Don’t use register globals!!
register_globals strikes back


 Don’t use register globals!!
 How can you emulate this behavior?
register_globals strikes back
register_globals strikes back

 foreach and $$
register_globals strikes back

 foreach and $$
 extract
register_globals strikes back

 foreach and $$
 extract
 import_request_var
register_globals strikes back

 foreach and $$
 extract
 import_request_var
 $GLOBALS
register_globals strikes back

 foreach and $$
 extract
 import_request_var
 $GLOBALS
 parse_str
Found!

◦ ./install/identification.php
◦ extract($_POST)  : 1
  ◦ Injection by $_POST


◦ ./fonctions/fonctions_gen.php
◦ $GLOBALS[$k] = $chaine[$k]
◦ $GLOBALS[$this->mode] [$k] = $chaine[$k]

  ◦ In the fct_urldecode, the values are stripslashed, and
     then injected in the $GLOBALS, resulting in variable creation
SQL injections	

 Point of entry
   mysql_query
   mysqli_real_escape_string
   SQL query :
     string with SELECT, UPDATE, ...
Found!
◦ 'UPDATE param_suivi SET      param_suivi_nom="'.str_replace($tr
  ansf_sp,$transf_fr,$_POST["suivi_nom"])  : 1
  ◦ Direct injection via POST

◦ WHERE campagne_nom LIKE '%".addslashes($_REQUEST['rech_nom']) 
  ◦ Injection from $_REQUEST

◦ "UPDATE even_spl SET even_spl_fait='".
  $even_fait."',even_spl_modification='".$date_du_jour."'    
  WHERE even_spl_id='".$even_id."' AND even_spl_affaire_id='".
  $even_aff_id."'";  : 1

◦ "INSERT INTO ".$type_doc."_suivi    (".
  $type_doc."_suivi_param_suivi_id, ".$type_doc."_suivi_".
  $type_doc."_id, ".$type_doc."_suivi_canal_id,    ".
  $type_doc."_suivi_action, ".$type_doc."_suivi_commentaire, ".
  $type_doc."_suivi_creation)    VALUES ('".$id_suivi."', '".
  $id_doc."', '".$id_canal."', '".
  $suivi_date."', '".addslashes($suivi_commentaire)
And also
Header injection
  Look for header()
XSS
  look for echo, print
  look for strings with tags
Etc...
Report
Executive summary
  3 paragraphs, simple to read
Problems summary
  Table, with problems, criticality and load
Details
Extras
Report
 Vulnerability     Critical    Load

register_globals    High       High

   Injections       High      Medium

 SQL injection     Medium      High

   headers          Low        Low
Details
 Title
 In code example and explanation
 Protection suggestions
   Limitations
 List of all occurrences
   Or way to find them
Team Work
Security is recommanded at conception time
Audit is an after-thought tool
  Once
  When necessary
  Regularly
  Continuously
PHP Mantra


List your mantra
The five most important rules you agree upon
Have them printed and visible to everyone
Cross audit

Group developers by two
  Have each one review the code of the other
  Based on the mantra
Light weight process
Doesn’t have to be in the same project
PHP audit tools

Groogle (http://groogle.sourceforge.net)
Review Board (http://www.review-board.org/)
Rietveld http://codereview.appspot.com/
SmartBear (http://www.smartbear.com/)
Community step up

Mantra, cross audits
  go beyond services and departements
Open this outside ?
  External review?
New way of coding ?
Questions?
damien.seguy@alterw
ay.fr

More Related Content

What's hot

Creating "Secure" PHP Applications, Part 1, Explicit Code & QA
Creating "Secure" PHP Applications, Part 1, Explicit Code & QACreating "Secure" PHP Applications, Part 1, Explicit Code & QA
Creating "Secure" PHP Applications, Part 1, Explicit Code & QA
archwisp
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
Fabien Potencier
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 

What's hot (18)

Creating "Secure" PHP Applications, Part 1, Explicit Code & QA
Creating "Secure" PHP Applications, Part 1, Explicit Code & QACreating "Secure" PHP Applications, Part 1, Explicit Code & QA
Creating "Secure" PHP Applications, Part 1, Explicit Code & QA
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I think
 
Dependency Injection with PHP 5.3
Dependency Injection with PHP 5.3Dependency Injection with PHP 5.3
Dependency Injection with PHP 5.3
 
Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010
 
PhpBB meets Symfony2
PhpBB meets Symfony2PhpBB meets Symfony2
PhpBB meets Symfony2
 
New in php 7
New in php 7New in php 7
New in php 7
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
 
What's new with PHP7
What's new with PHP7What's new with PHP7
What's new with PHP7
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I think
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Review unknown code with static analysis Zend con 2017
Review unknown code with static analysis  Zend con 2017Review unknown code with static analysis  Zend con 2017
Review unknown code with static analysis Zend con 2017
 
Data Validation models
Data Validation modelsData Validation models
Data Validation models
 
Ant
Ant Ant
Ant
 
Frontin like-a-backer
Frontin like-a-backerFrontin like-a-backer
Frontin like-a-backer
 
Building a Pyramid: Symfony Testing Strategies
Building a Pyramid: Symfony Testing StrategiesBuilding a Pyramid: Symfony Testing Strategies
Building a Pyramid: Symfony Testing Strategies
 
QA for PHP projects
QA for PHP projectsQA for PHP projects
QA for PHP projects
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I think
 

Similar to PHP security audits

Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)
Damien Seguy
 
Meet Magento Belarus debug Pavel Novitsky (eng)
Meet Magento Belarus debug Pavel Novitsky (eng)Meet Magento Belarus debug Pavel Novitsky (eng)
Meet Magento Belarus debug Pavel Novitsky (eng)
Pavel Novitsky
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012
Michelangelo van Dam
 

Similar to PHP security audits (20)

Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)
 
PHP Static Code Review
PHP Static Code ReviewPHP Static Code Review
PHP Static Code Review
 
Internationalizing CakePHP Applications
Internationalizing CakePHP ApplicationsInternationalizing CakePHP Applications
Internationalizing CakePHP Applications
 
PHP tips and tricks
PHP tips and tricks PHP tips and tricks
PHP tips and tricks
 
Meet Magento Belarus debug Pavel Novitsky (eng)
Meet Magento Belarus debug Pavel Novitsky (eng)Meet Magento Belarus debug Pavel Novitsky (eng)
Meet Magento Belarus debug Pavel Novitsky (eng)
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012
 
Magento code audit
Magento code auditMagento code audit
Magento code audit
 
前端MVC之BackboneJS
前端MVC之BackboneJS前端MVC之BackboneJS
前端MVC之BackboneJS
 
Workshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfastWorkshop quality assurance for php projects - phpbelfast
Workshop quality assurance for php projects - phpbelfast
 
Python fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuanPython fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuan
 
FizzBuzzではじめるテスト
FizzBuzzではじめるテストFizzBuzzではじめるテスト
FizzBuzzではじめるテスト
 
Automated code audits
Automated code auditsAutomated code audits
Automated code audits
 
Scaling php applications with redis
Scaling php applications with redisScaling php applications with redis
Scaling php applications with redis
 
Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013
 
Windows Server 2008 (PowerShell Scripting Uygulamaları)
Windows Server 2008 (PowerShell Scripting Uygulamaları)Windows Server 2008 (PowerShell Scripting Uygulamaları)
Windows Server 2008 (PowerShell Scripting Uygulamaları)
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11Unit testing with zend framework tek11
Unit testing with zend framework tek11
 
Presentation
PresentationPresentation
Presentation
 
Substitution Cipher
Substitution CipherSubstitution Cipher
Substitution Cipher
 
Becoming a better WordPress Developer
Becoming a better WordPress DeveloperBecoming a better WordPress Developer
Becoming a better WordPress Developer
 

More from Damien Seguy

More from Damien Seguy (20)

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leeds
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisation
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limoges
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbia
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic traps
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Code review workshop
Code review workshopCode review workshop
Code review workshop
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy people
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

PHP security audits