Un utente visita un sito Web e digita le informazioni in input
fields
<input class="form-control" type="text" id="age" name="age" value="<?php echo htmlspecialchars($_POST['age']); ?>">
e carica anche file
<input id="misc_files" type="file" class="file" multiple data-show-upload="false" data-show-caption="true" name="misc_files[]">
che viene quindi passato a uno script action.php
che salva questi dati in un file delimitato da tabulazioni (file salvati separatamente) chiamato file.txt
. Il file contiene informazioni private. Ora, nello stesso script action.php
, uno script Ruby viene chiamato tramite la funzione di sistema di PHP:
system('ruby /lib/program.rb');
program.rb
contiene variabili utente / passaggio utilizzate in una gemma Ruby chiamata watir-webdriver
. Vedi qui se non ti è familiare. In pratica consente a Ruby di aprire un browser e manipolare il browser a livello di programmazione. In ogni caso, program.rb
contiene una password che consente a watir-webdriver
di accedere a un altro account del sito per inviare questi dati a livello di codice. program.rb
è su un server remoto a cui si accede tramite uno script PHP chiamato da chiunque su Internet. Come dovrei strutturare i permessi, ecc. Affinché questo sia sicuro. Non posso permettermi di avere program.rb
per esporre la combinazione utente / passata del mio cliente da un hacking intelligente non previsto che in definitiva consente a un utente malintenzionato di scaricare program.rb
e visualizzare la combinazione utente / passaggio.
Esempio di script Ruby:
require 'watir-webdriver'
b = Watir::Browser.new :chrome
b.goto 'https://www.thesite.com/login'
b.text_field(:id => 'session_email').set 'username'
b.text_field(:id => 'session_password').set 'password'
b.form(index:0).submit
sleep 1
#(code to submit input/file data)