planet

Libera il tuo Samsung Galaxy W

max-b - Mar, 21/05/2013 - 15:22

Sulla rete sono pubblicate numerose guide che spiegano come installare CyanogenMod9 sul telefono Samsung Galaxy W (GT-I8150). La maggior parte di queste danno per scontato un certo grado di competenza nell’hacking del proprio telefono, quasi mai si soffermano per dare spiegazioni su ciò che si sta facendo e spesso richiedono l’uso di un sistema operativo proprietario.

Questa guida descrive la procedura d’installazione di CyanogenMod9 sul Samsung Galaxy W utilizzando GNU/Linux integrata, nei limiti delle mie conoscenze, da note esplicative sul significato dei diversi passaggi che dovrai compiere. Se stai cercando una guida rapida, questo articolo non fa per te, ma se vuoi capire quello che stai facendo forse puoi trovare quello che cerchi in questo articolo.

Perché installare CyanogenMod9

Android è un sistema operativo per lo più libero sviluppato principalmente da Google. Sfortunatamente, i driver per molti dispositivi e la maggior parte delle applicazioni del “market” non sono liberi. Talvolta agiscono contro gli interessi degli utenti e non è nemmeno possibile rimuoverle.

Inoltre il sistema operativo installato sul tuo telefono al momento dell’acquisto è legato al produttore che decide quali politiche di aggiornamento del software adottare sul tuo telefono. Nello specifico del telefono in oggetto gli aggiornamenti rilasciati da Samsung si fermano alla versione 2.3.6 e al momento non è possibile andare oltre.

Se vuoi riprendere il controllo del tuo dispositivo Android e dei tuoi dati un buon modo per farlo è installare CyanogenMod9.

Al momento in cui scrivo questo testo CyanogenMod9 è giunto alla versione RC9 rilasciata l’11/05/2013 da arco68 che pubblica il codice della rom su GitHub e i file d’installazione sul forum di XDA. Esiste anche la versione 10, ma si tratta di una beta ancora instabile e con problemi riconosciuti.

Se vuoi avere ulteriori informazioni sugli aspetti legati alla libertà del tuo telefono Android ti consiglio la pagina del sito della Free Software Foundation Europe dedicata alla campagna Libera il tuo Android.

Da sapere prima di iniziare

Ci sono alcune cose che è importante sapere prima di mettere mano sul proprio telefono.

  1. Acquisire i diritti di root sul proprio telefono invalida la garanzia hardware del telefono. Lo so, è una cosa assurda che limita la libertà degli utenti di poter fare ciò che vogliono del telefono che hanno acquistato.

  2. La procedura non è esente da rischi che potrebbero compromettere l’uso del telefono.

  3. Così come lo sviluppatore della rom non si assume alcuna responsabilità e non fornisce alcuna garanzia su quanto sta pubblicando, faccio lo stesso con questa guida, ma posso dirti che sto scrivendo quello che ho testato con successo sul mio Galaxy W.

  4. Fai un backup.

  5. Prenditi il tempo necessario per capire leggendo altri articoli e guide.

Pronti per partire

Se sei pronto per partire, ecco in sintesi i diversi passaggi della procedura.

La prima cosa da fare è installare le applicazioni necessarie che ti serviranno per fare il backup dei dati. Poi dovrai fare il backup delle cose che ti interessano e successivamente guadagnare i privilegi di root, vale a dire dell’utente con i massimi privilegi di intervento sul sistema.

Una volta che avrai ottenuto i privilegi di root, dovrai installare ClockworkMod6. Si tratta di un sistema minimale che potrà essere avviato alternativamente al sistema che usi normalmente che ti servirà per fare un backup completo del sistema, per formattare la memoria e per installare CyanogenMod9.

L’ultimo passo sarà installare CyanogenMod9 e le Gapps, ovvero le applicazioni Google lanciate all’avvio. Al riavvio avrai installato CyanogenMod9, ma ti converrà ricalibrare la batteria.

Installa le applicazioni necessarie

Se sei interessato a conservare una copia degli SMS, dei log delle chiamate oltre alla lista delle applicazioni installate, puoi utilizzare le seguenti applicazioni disponibili sul Play Store di Google: AppBak per salvare la lista delle applicazioni, SMS Backup and Restore per salvare gli SMS e Call logs backup and restore per salvare i log delle chiamate.

Personalmente ero interessato a salvare solo gli SMS e non mi sono preoccupato del resto. Un’altra applicazione necessaria è l’Android Terminal Emulator: un terminale GNU/Linux utilizzabile su Android.

Backup dei tuoi dati

Per prima cosa fai il backup dei tuoi dati utilizzando le applicazioni citate sopra. I backup dovrebbero essere salvati sulla memoria esterna e, per ulteriore sicurezza, potresti salvarle sul tuo PC con GNU/Linux collegando il telefono con il cavo USB.

Ottieni i privilegi di root

Ottenere i privilegi di root significa avere la possibilità di utilizzare l’utente root, che in ambiente GNU/Linux è di solito l’utente con i massimi privilegi possibili.

  1. Scarica dal link seguente il file update.zip e salvalo sulla memoria interna del telefono.

  2. Spegni il telefono

  3. Accendi il telefono tenendo premuti i tasti “Volume su” e “Home”. Quando compare la scritta “Samsung” rilascia il tasto power ma continua a tenere premuti gli altri 2. Quando compare l’icona di Android, rilascia il tasto volume e home e premi il tasto menu in basso a sinistra.

Dopo pochi secondi ti comparirà il menu di recovery nel quale puoi muoverti usando i due tasti del volume. Vai su “sdcard:update.zip” e selezionalo premendo il tasto “Home”. Scegliil file update.zip che hai appena caricato e conferma con il tasto home. Attendi che il processo sia completato poi torna sul menu di recovery e scegli reboot per riavviare il telefono.

Al riavvio avrai la possibilità di gestire completamente il tuo telefono, ma come ti ho già detto, per Samsung la garanzia sarà da ora in poi invalidata.

Installa ClockWorkMod6

Il ClockworkMod6 è un piccolo sistema di recovery che dovrà rimpiazzare quello che hai usato al punto precedete per ottenere l’accesso all’utente root. A differenza del recovery originale ClockworkMod6 permette di svolgere molte più operazioni, fra queste: il backup del sistema originale e l’installazione di CyanogenMod9.

Su diversi siti troverai vari tutorial per installare ClockworkMod6 collegando il telefono ad un PC con Microsoft Windows. Se vuoi evitare questo passaggio con software proprietario ecco come fare.

Collega il telefono a tuo sistema GNU/Linux e carica sulla SD card il file d’installazione di ClockworkMod6 che puoi scaricare da qui.

A questo punto viene la parte più complicata della procedura, poiché devi utilizzare con l’emulatore di terminale di Android il comando dd. Questo comando permette di estrarre un file immagine all’interno di un percorso sovrascrivendo tutto quello che trova. Puoi intuire quindi che se esegui dd in modo improprio potresti danneggiare in modo irreversibile il sistema installato sul telefono. Fai attenzione.

Apri l’Android Terminal Emulator che hai installato precedentemente. Nel terminale scrivi

su

e premi invio. Conferma l’avviso che ti viene proposto. Da questo momento stai usando il terminale come root.

Esegui ora il comando dd. La parte relativa all’input file (IF) potrebbe essere diversa a seconda di dove hai copiato ClockworkMod6. Puoi navigare nel filesystem per cercare la posizione corretta utilizzando i comandi cd, ls e pwd. Se non sai come fare ti consiglio questa guida.

dd if=/sdcard/external_sd/recovery.img of=/dev/block/mmcblk0p13

Premi invio e attendi il completamento dell’operazione. Riavvia il telefono e controlla che ClockworkMod6 sia installato correttamente. Come nel punto precedente devi avviare il telefono premendo i tasti “Volume su” e “Home”. Rilascia il tasto “power” quando vedi la scritta “Samsung” e rilascia gli altri tasti quando compare il logo di ClockworkMod6. Se il programma si avvia puoi riavviare il telefono e proseguire con l’ultimo step.

Installa CyanogenMod9

Scarica il file di installazione dell’ultima release di CyanogenMod9 dal forum di XDA e salva il file .zip sulla memoria esterna del telefono.

Avvia il telefono utilizzando la recovery ClockworkMod6 e per prima cosa scegli “Wipe data”, successivamente “Wipe cache”. Queste operazioni serviranno per preparare la memoria del telefono ad accogliere CyanogenMod9. A questo punto scegli “Install zip from sdcard” e successivamente seleziona il file zip contenete la CyanogenMod9. Al riavvio successivo verrà completata l’installazione.

Ricalibra la batteria

Un articolo pubblicato su questo blog sostiene che la ricalibrazione della batteria è un’operazione inutile. Appena installato CyanogenMod9 il telefono mi rimaneva acceso mezza giornata scarsa ora, dopo la ricalibrazione, la carica mi dura circa 36 ore. Per ricalibrarlo ho scaricato completamente il telefono fino allo spegnimento, poi l’ho ricaricato a telefono spento e successivamente, quando la carica era al 100% ho ricalibrato la batteria con Battery Calibrate.

Link utili

Le guide alle quali mi sono riferito sono le seguenti


Categorie: planet

Lxc Debian Wheezy LAMP Template

pmate - Mar, 21/05/2013 - 11:42

Una delle cose di cui ho sempre sentito la mancanza, a proposito di macchine virtuali, è il non poter utilizzare dei "meta-template", ovvero il non poter automatizzare la configurazione di un environment di base un pò più complesso di quello minimale di default.
Spesso, ad esempio, mi capita di dover approntare delle vm dotate di sistema LAMP che poi "terzi" finiranno di configurare secondo necessità.
Con LXC, che uso ormai da tempo, l'installazione del "sistema base" è davvero rapida visto che basta solo impartire un comando passandogli come parametro il template desiderato.
Il problema è che poi bisogna compiere tutta una serie di operazioni "a manina" che, ripetute per n container da preparare, diventano pratica non solo oltremodo noiosa, ma che finisce inevitabilmente per sottrarre tempo prezioso al mio hobby preferito: girarmi i pollici.

continua a leggere

Categorie: planet

Intervallo

pmate - Dom, 19/05/2013 - 00:50

Chi l'ha detto che quella del sistemista è una vita noiosa, senza diversivi?
A differenza di quello che si può comunemente pensare, non è vissuta per intero dentro una sala server, lì dove l'aria condizionata prima o poi finirà per bruciare le pareti nasali, lì dove il rumore delle ventole prima o poi finirà per sgretolare i timpani, lì dove prima o poi si finirà ibernati ma con dipinta in faccia un'espressione felicemente rincoglionita.
No signori, la vita di un sistemista è varia, è bella, è divertente, non è solo cavi ethernet e pinze a crimpare.
Capita persino di viaggiare (altro che lavoro sedentario), di incontrare persone nuove, di immergersi in realtà tutte da scoprire.
La fatica che si fa è sempre ampiamente ricompensata da un arricchimento interiore senza pari...

continua a leggere

Categorie: planet

Debian Project News - 13 Maggio 2013

Blog - Mar, 14/05/2013 - 14:38

Benvenuti nel decimo numero di quest'anno della DPN, la newsletter della comunità Debian.
In questa edizione troviamo:
  1. Rilasciata Debian 7.0 Wheezy
  2. Cosa c'è di nuovo in Debian Wheezy?
  3. DebConf 11 and 12 videos
  4. Debian oltre le nuvole
  5. Debian in Google Compute Engine
  6. Pillole dal DPL

leggi tutto

Categorie: Blog, planet

Rilasciata Debian 7.0, Wheezy diventa stabile

Blog - Dom, 05/05/2013 - 22:30

Come precedentemente annunciato il team Debian ha rilasciato oggi (domenica 5 maggio 2013) la nuova versione stabile, Wheezy.

Alcuni link più o meno utili:
 annuncio ufficiale;
 note di rilascio;
 come ottenere Debian;

leggi tutto

Categorie: Blog, planet

Debian Project News - 29 Aprile 2013

Blog - Mar, 30/04/2013 - 12:17

Benvenuti nel nono numero di quest'anno della DPN, la newsletter della comunità Debian.
In questa edizione troviamo:
  1. Annunciata la data del rilascio per Wheezy
  2. Primi pacchetti di Qt 5 nella experimental
  3. Rilascio alpha per Debian Edu Wheezy
  4. Altre notizie
  5. Prossimi eventi
  6. Nuovi contributori Debian

leggi tutto

Categorie: Blog, planet

Debian Project News - 15 Aprile 2013

Blog - Mar, 16/04/2013 - 12:05

Benvenuti nell'ottavo numero di quest'anno della DPN, la newsletter della comunità Debian.
In questa edizione troviamo:

  1. Eletto il nuovo DPL
  2. Debian accettata a Google Summer of Code
  3. Debian partecipa all'Outreach Program for Women
  4. Altre notizie
  5. Statistiche sui bug critici per il rilascio nella prossima versione di Debian
  6. Bollettini di sicurezza importanti

leggi tutto

Categorie: Blog, planet

Debian Project Leader 2013

Blog - Lun, 15/04/2013 - 14:03

Domenica 14 aprile del corrente anno è stato eletto il nuovo Debian Project Leader, dopo Stefano Zacchiroli ... Lucas Nussbaum.

Maggiori info sull'elezione sono reperibili presso Debian Project Leader Elections 2013.

leggi tutto

Categorie: Blog, planet

Debian Project News - 1 Aprile 2013

Blog - Sab, 13/04/2013 - 16:35

Benvenuti nel settimo numero di quest'anno della DPN, la newsletter della comunità Debian.
In questa edizione troviamo:

  1. Pillole dal team di rilascio
  2. Pillole dal team DSA
  3. Matching fund per DebConf13
  4. Processo New Maintainer
  5. Modifiche editoriali alla costituzione
  6. Interviste
  7. Altre notizie
  8. Nuovi contributori Debian

leggi tutto

Categorie: Blog, planet

ActiveRecord: random

maxer - Gio, 11/04/2013 - 11:19

ActiveRecord non mette a disposizione uno strumento semplice per estrarre un insieme random di elementi. Normalmente si aggiunge alla query, nella clausola ‘order’ o RAND() o RANDOM() in base al database utilizzato. Questa soluzione non è molto pulita, quindi è preferibile utilizzare una gemma come randumb, che si occupa di inserire automaticamente la giusta funzione.

Una volta inserita nel file Gemfile e eseguita l’installazione con un

bundle install

sarà sufficiente appendere .random(x) alla nostra query, come da esempio:

Artist.random # un artista a caso Artist.random(3) # un array di artisti casuali Artist.random(1) # un array contenente solo un artista casuale
Categorie: planet

ebay-bug: per ebay esiste solo Windows

max-b - Lun, 08/04/2013 - 15:53

Oggi ho messo in vendita alcuni oggetti su ebay e mi sono accorto di un bug presente nella pagina dedicata alla messa in vendita di oggetti. Il bug è il seguente: i programmatori di ebay sono convinti che esiste solo Microsoft Windows.

Una differenza importante fra GNU/Linux e Microsoft Windows consiste nel fatto che il primo, a differenza del secondo, utilizza filesystem case sensitive. Significa che per GNU/Linux due file con lo stesso nome, se scritti con un differente uso di caratteri maiuscoli e minuscoli, sono file diversi, mentre per Windows sono lo stesso file. Su GNU/Linux  documento.txt è diverso da Documento.txt o da dOcUmEnTo.txt, mentre per Windows sono tutti e tre lo stesso files. Da questo deriva il bug seguente.

Il modulo di upload delle immagini di eBay permette di caricare file *.jpg, *.jpeg, *.gif, *.png, *.bmp, *.tif, *.tiff tuttavia, come si vede dalla foto, su GNU/Linux non riconosce immagini *.JPG, *.JPEG, *.PNG ecc. Naturalmente in attesa che ebay risolva il suo bug basta rinominare i file.


Categorie: planet

Rails: caricare i parametri da un file di configurazione yml

maxer - Gio, 04/04/2013 - 08:52

Per l’interfacciamento con un gateway di pagamento con carta di credito mi sono trovato a dover gestire credenziali diverse per l’ambiente di staging e di produzione. Se il primo approccio, più semplice e immediato, è quello di inserire i dati nel codice, all’interno di un if che controlla in che ambiente strano, conviene fare le cose fatte bene e spostare i parametri in un file esterno, che verrà caricato all’avvio dell’applicazione.

Supponiamo di avere un file chiamato bank.yml posizionato all’interno della directory config/, con il seguente contenuto:

development: username: 478881 password: c8e79387bb3e signature: 2178614 staging: username: 4788c81 password: c8e7c9387bb3e signature: 217c8614 test: username: 478b881 password: c8eb79387bb3e signature: 21b78614 production: username: 47a8881 password: 8ea79387bb3e signature: 21a78614

come possiamo vedere, per ogni ambiente abbiamo una tripletta diversa, che verrà usata per gestire l’integrazione con la banca.

Ora creiamo un file, bank.rb, in config/initializers/ con il seguente contenuto:

module Bank CONFIG = YAML.load_file(Rails.root.join("config/bank.yml"))[Rails.env] USERNAME = CONFIG['username'] PASSWORD = CONFIG['password'] SIGNATURE = CONFIG['signature'] end

Riavviando la nostra applicazione avremo a disposizione le seguenti costanti: Bank::USERNAME, Bank::PASSWORD, Bank::SIGNATURE che conterranno i dati presenti nel nostro file di configurazione, filtrati per l’ambiente corrente.

La scelta di utilizzare un modulo per la gestione di questi parametri ci permette di evitare conflitti con altri elementi della nostra applicazione.

 

Categorie: planet

Monitorare da quale script php vengono inviate le e-mail

maxer - Mer, 03/04/2013 - 12:27

Quando un sito viene bucato e viene utilizzato per inviare tonnellate di email di spam, la prima cosa che si deve affrontare, oltre alla pulizia della coda di postfix, è l’individuazione del responsabile.

Le cose diventano difficili quando su un server sono presenti decine e decine di siti, in quanto il file colpevole dell’invio di spam non è facilmente identificabile.

Con questa piccola modifica si potrà avere un log più dettagliato delle e-mail provenienti dai vari siti, permettendoci di identificare il colpevole.

Per prima cosa creiamo due file col seguente contenuto

/usr/local/bin/sendmail-php #!/bin/sh logger -p mail.info sendmail-php: site=${HTTP_HOST}, client=${REMOTE_ADDR}, script=${SCRIPT_NAME}, filename=${SCRIPT_FILENAME}, docroot=${DOCUMENT_ROOT}, pwd=${PWD}, uid=${UID}, user=$(whoami) /usr/sbin/sendmail -t -i $* /var/www/tpl.php <?php putenv("PATH_INFO=". $_SERVER["PATH_INFO"]); putenv("SCRIPT_NAME=". $_SERVER["SCRIPT_NAME"]); putenv("SCRIPT_FILENAME=". $_SERVER["SCRIPT_FILENAME"]); putenv("REMOTE_ADDR=". $_SERVER["REMOTE_ADDR"]); putenv("HTTP_HOST=". $_SERVER["HTTP_HOST"]); ?>

Impostiamo i permessi:

chmod +x /usr/local/bin/phpsendmail chmod +rx /var/www/tpl.php

Ora non ci resta che modificare il file php.ini (in Debian si trova in /etc/php5/apache2/php.ini ) modificando/aggiungendo le seguenti righe:

sendmail_path = /usr/local/bin/sendmail-php -t -i auto_prepend_file = /var/www/tpl.php

Dopo aver riavviato apache, nel file mail.log, troveremo righe di questo tipo:

Mar 30 09:30:25 web1 logger: sendmail-php: site=www.xxxx.it, client=31.184.244.18, script=/includes/.cfwqkt.php, filename=/var/customers/webs/xxx/www/includes/.cfwqkt.php, docroot=/var/customers/webs/xxx/www/, pwd=/var/customers/webs/xxx/www/includes, uid=33, user=www-data

Che ci permetterà di individuare istantaneamente il colpevole

 

Fonti:

http://serverfault.com/questions/130069/find-the-php-script-thats-sending-mails

http://forum.directadmin.com/showthread.php?t=36311

Categorie: planet

Brakeman: Security Vulnerability per Ruby on Rails

maxer - Mar, 02/04/2013 - 11:47

Oggi parliamo di sicurezza: parliamo di Brakeman!

Brakeman è un Security Vulnerability Scanner per Ruby on Rails.

Dopo averlo installato con un

gem install brakeman

ed eventualmente aver fatto un rehash

rbenv rehash

disporremo del comando brakeman.

Eseguendolo all’interno della directory del proprio progetto in Rails ci verrà fornito l’output di una analisi di sicurezza e vulnerabilità della nostra applicazione.

Un esempio di output è il seguente:

$ brakeman Loading scanner... [Notice] Detected Rails 3 application Processing application in /Users/claudio/Progetti/xxxxx Processing configuration... [Notice] Escaping HTML by default Processing gems... Processing initializers... Processing libs... Processing routes... Processing templates... Processing data flow in templates... Processing models... Processing controllers... Processing data flow in controllers... Indexing call sites... Running checks in parallel... - CheckBasicAuth - CheckCrossSiteScripting - CheckContentTag - CheckDefaultRoutes - CheckDigestDoS - CheckEscapeFunction - CheckEvaluation - CheckExecute - CheckFileAccess - CheckFilterSkipping - CheckForgerySetting - CheckJRubyXML - CheckJSONParsing - CheckLinkTo - CheckLinkToHref - CheckMailTo - CheckMassAssignment - CheckModelAttributes - CheckModelSerialize - CheckNestedAttributes - CheckQuoteTableName - CheckRedirect - CheckRender - CheckResponseSplitting - CheckSafeBufferManipulation - CheckSanitizeMethods - CheckSelectTag - CheckSelectVulnerability - CheckSend - CheckSendFile - CheckSessionSettings - CheckSingleQuotes - CheckSkipBeforeFilter - CheckSQL - CheckStripTags - CheckSymbolDoS - CheckTranslateBug - CheckUnsafeReflection - CheckValidationRegex - CheckWithoutProtection - CheckYAMLLoad - CheckYAMLParsing Checks finished, collecting results... Generating report... +BRAKEMAN REPORT+ Application path: /Users/claudio/Progetti/xxxxxx Rails version: 3.2.8 Brakeman version: 1.9.4 Started at 2013-03-27 21:58:02 +0100 Duration: 4.805979 seconds Checks run: BasicAuth, ContentTag, CrossSiteScripting, DefaultRoutes, DigestDoS, EscapeFunction, Evaluation, Execute, FileAccess, FilterSkipping, ForgerySetting, JRubyXML, JSONParsing, LinkTo, LinkToHref, MailTo, MassAssignment, ModelAttributes, ModelSerialize, NestedAttributes, QuoteTableName, Redirect, Render, ResponseSplitting, SQL, SafeBufferManipulation, SanitizeMethods, SelectTag, SelectVulnerability, Send, SendFile, SessionSettings, SingleQuotes, SkipBeforeFilter, StripTags, SymbolDoS, TranslateBug, UnsafeReflection, ValidationRegex, WithoutProtection, YAMLLoad, YAMLParsing +SUMMARY+ +-------------------+---------+ | Scanned/Reported | Total | +-------------------+---------+ | Controllers | 19 | | Models | 22 | | Templates | 106 | | Errors | 0 | | Security Warnings | 22 (12) | +-------------------+---------+ +-----------------------+-------+ | Warning Type | Total | +-----------------------+-------+ | Attribute Restriction | 1 | | Default Routes | 1 | | Denial of Service | 1 | | Mass Assignment | 10 | | Redirect | 2 | | Remote Code Execution | 2 | | SQL Injection | 4 | | Session Setting | 1 | +-----------------------+-------+ +SECURITY WARNINGS+ +------------+---------------------------+---------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->> | Confidence | Class | Method | Warning Type | Message >> +------------+---------------------------+---------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->> | High | | | Default Routes | All public methods in controllers are available as actions in routes.rb near line 163 >> | High | ContactController | submit | Mass Assignment | Unprotected mass assignment near line 7: ContactRequest.new(+params[:contact_request]+) >> | High | CartController | add | Redirect | Possible unprotected redirect near line 24: redirect_to(+params[:last_url]+) >> | High | Mobile::ProductController | xxxxxxxxxxxx | Redirect | Possible unprotected redirect near line 28: redirect_to(+params[:back_url]+) >> | High | | | Remote Code Execution | json gem version 1.7.5 has a remote code vulnerablity: upgrade to 1.7.7 >> | High | | | Remote Code Execution | Rails 3.2.8 has a remote code execution vulnerability: upgrade to 3.2.11 or disable XML parsing >> | High | | | SQL Injection | All versions of Rails before 3.0.18, 3.1.9, and 3.2.10 contain a SQL Injection Vulnerability: CVE-2012-5664; Upgrade to 3.2.10, 3.1.9, 3.0.18 >> | High | | | SQL Injection | All versions of Rails before 3.0.19, 3.1.10, and 3.2.11 contain a SQL Injection Vulnerability: CVE-2013-0155; Upgrade to 3.2.11, 3.1.10, 3.0.19 >> | High | CartController | remove | SQL Injection | Possible SQL injection near line 36: CartLine.where(+params[:line_id]+) >> | High | Mobile::xxxxxxxxxxxx | index | SQL Injection | Possible SQL injection near line 10: Product.where("name LIKE '%#{+params[:name]+}%' AND published = ? ", true) >> | High | | | Session Setting | Session secret should not be included in version control near line 7 >> | Medium | | | Denial of Service | Rails 3.2.8 has a denial of service vulnerability in ActiveRecord: upgrade to 3.2.13 or patch >> | Weak | Article | xxxxxxxxxxxxxxxxxxxxxxxxxx | Mass Assignment | Unprotected mass assignment near line 39: Article.new(:code => ((local row)[0]), :title => ((local row)[1]), :sku => ((local row)[2]), :size => ((local row)[3]), :published =>> | Weak | CartController | add | Mass Assignment | Unprotected mass assignment near line 18: CartLine.create(:cart_id => ((Cart.find_by_customer_id(current_customer.id) or Cart.create(:customer_id => (current_customer.id), :d>> | Weak | CartController | checkout | Mass Assignment | Unprotected mass assignment near line 49: Order.create(:date => (DateTime.now), :customer_id => (current_customer.id), :total_items => 0, :total_price => 0, :note => (+params>> | Weak | CartController | checkout | Mass Assignment | Unprotected mass assignment near line 57: OrderLine.create(:order => (+Order.create(:date => (DateTime.now), :customer_id => (current_customer.id), :total_items => 0, :total_>> | Weak | Customer | Customer.xxxxxxxxxxxxxxxxxx | Mass Assignment | Unprotected mass assignment near line 27: Customer.create(:name => ((local row)[1]), :code => ((local row)[0]), :email => (("" or ((local row)[0] + "@maw.it"))), :agent => (+>> | Weak | xxxxxxxxxxxxxxxxxxxxxxxx | xxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxx | Mass Assignment | Unprotected mass assignment near line 20: CustomerDiscountCategory.create(:customer => (Customer.find_by_code((local row)[0])), :discount_category => ((DiscountCategory.find_>> | Weak | Mobile::CartController | add | Mass Assignment | Unprotected mass assignment near line 30: CartLine.create(:cart_id => ((Cart.find_by_customer_id(session[:customer_id]) or Cart.create(:customer_id => (session[:customer_id])>> | Weak | Mobile::CartController | checkout | Mass Assignment | Unprotected mass assignment near line 65: OrderLine.create(:order => (+Order.create(:date => (DateTime.now), :customer_id => (session[:customer_id]), :total_items => 0, :tota>> | Weak | xxxxxxxxxxxx | SpecialPrice.xxxxxxxxxxxxxxxxxx | Mass Assignment | Unprotected mass assignment near line 20: SpecialPrice.create(:customer => (Customer.find_by_code((local row)[0])), :product => (+Article.find_by_sku((local row)[1]).product+>> +------------+---------------------------+---------------------------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->> Model Warnings: +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------->> | Confidence | Model | Warning >> +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------->> | High | Agent, Article, Browsable, Cart, CartLine, Category, Ckeditor::Asset, Ckeditor::AttachmentFile, Ckeditor::Picture, ContactRequest, Customer, CustomerDiscountCategory, DiscountCategory, News, Order, OrderLine, Page, Product, ProductAttachment, SpecialPrice, Word | Attribut>> +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------->>

Dopo una analisi dell’output capiamo cosa effettuare per migliorare la sicurezza del nostro applicativo.

E’ possibile anche generare report in vari formati, come in html o json:

brakeman -o output.html brakeman -o output.json

Per maggiori informazioni e opzioni consultate la pagina del progetto Brakeman

Categorie: planet

Rails + Kaminari + Jquery + Infinite Ajax Pagination

maxer - Sab, 30/03/2013 - 10:49

Jquery Infinite Ajax Scroll è un plugin per jQuery che permette di implementare l’infinite scroll.

Tramite una semplice configurazione è possibile integrarlo in modo semplice con Kaminari (la gemma più usata per la paginazione).

Assegnamo al div contenente i nostri elementi l’id ‘item-list’ e agli elementi la classe ‘item’, come da esempio:

<div id="item-list"> <div class="item"><!-- contenuto --></div> <div class="item"><!-- contenuto --></div> <div class="item"><!-- contenuto --></div> </div>

Dopo la chiusura del div con id ‘item-list’ posizioniamo il codice per il pager:

<%= paginate @items %>

Il codice per far funzionare “out-of-the-box” l’infinite scroll è:

<script type="text/javascript"> jQuery.ias({ container: '#item-list', item: '.box', pagination: '.pagination', next: '.next a', loader: '<img src="/img/loader.gif"/>', history: false, triggerPageThreshold: 100 }); </script>

Ricordiamoci, ovviamente, di includere il plugin nell’header

 

Categorie: planet

Ckeditor e Capistrano: preservare i file caricati

maxer - Ven, 29/03/2013 - 09:24

La gemma ckeditor permette di aggiungere in modo semplice il comodo editor wysiwyg ai propri form. Questa integrazione, inoltre, permette all’utente di usare paperclip per caricare i file da inserire direttamente nell’editor.

Tutto funziona bene fino a quando non ci si appoggia a capistrano per gestire le fasi di deploy. Ckeditor, infatti, configura paperclip per salvare i file in una directory all’infuori di public/system, directory che capistrano non preserva durante le operazioni di deploy.

Per ovviare a questo problema è necessario apportare delle modifiche alla configurazione creata durante l’installazione di ckeditor, e in particolare ai file:

app/models/ckeditor/attachment_file.rb
app/models/ckeditor/picture.rb

Modificandoli in:

app/models/ckeditor/attachment_file.rb

class Ckeditor::AttachmentFile < Ckeditor::Asset has_attached_file :data, :url => "/system/ckeditor_assets/attachments/:id/:filename", :path => ":rails_root/public/system/ckeditor_assets/attachments/:id/:filename" validates_attachment_size :data, :less_than => 100.megabytes validates_attachment_presence :data def url_thumb @url_thumb ||= Ckeditor::Utils.filethumb(filename) end end

app/models/ckeditor/picture.rb

class Ckeditor::Picture < Ckeditor::Asset has_attached_file :data, :url => "/system/ckeditor_assets/pictures/:id/:style_:basename.:extension", :path => ":rails_root/public/system/ckeditor_assets/pictures/:id/:style_:basename.:extension", :styles => { :content => '800>', :thumb => '118x100#' } validates_attachment_size :data, :less_than => 2.megabytes validates_attachment_presence :data def url_content url(:content) end end

con questa modifica i file verranno caricati all’interno della directory public/system, che verrà preservata da capistrano, evitando di farci perdere immaigni e file ad ogni cap deploy

Categorie: planet

Installare Ruby on Rails su Mac OS X Mountain Lion

maxer - Gio, 28/03/2013 - 10:30

L’installazione di tutto quello che serve per lo sviluppo in Ruby on Rails passo passo, visto che ogni volta devo andare a pescare documenti a destra e a manca

Step1: Installare XCode

Per prima cosa è necessario installare XCode. Una volta installato, bisogna installare i “Command Line Tools” aprendo XCode, andando in XCode -> Preferences -> Downloads e premendo il tasto “Install” a fianco di “Command Line Tools”.

Una volta scaricati possiamo andare avanti.

Step2: Installare Homebrew

Homebrew è un tool fantastico: permette di installare software utilissimo, soprattutto per chi sviluppa, con un comodo comando.

L’installazione avviene inserendo il seguente comando in un terminale:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

Una volta terminata l’installazione possiamo controllare che tutto sia andato per il meglio e aggiornare l’elenco dei pacchetti disponibili:

brew doctor

brew update

Ora possiamo passare allo step3.

Step3: Installazione di Ruby

Homebrew ci permette, come dicevo, di installare in modo semplice rbenv e ruby-build:

brew install rbenv ruby-build

Terminata l’installazione, andiamo ad aggiungere le nuove variabili di ambiente tramite il seguente comando:

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile source ~/.bash_profile

Una volta terminato il processo possiamo installare la versione di ruby che vogliamo, nel mio caso la  ”1.9.3-p392″:

rbenv install  1.9.3-p392

In alternativa è possibile ottenere l’elenco di tutte le versioni di ruby disponibili tramite il comando

rbenv install --list

Al termine dell’installazione è necessario aggiornare le hash e indicare al sistema quale versione utilizzare come predefinita:

rbenv rehash rbenv global 1.9.3-p392 Step4: Installare le gemme fondamentali

Per avere un sistemam funzionante procediamo all’installazione di:

gem install rails bundle rake

Ora siamo pronti a lavorare

 

Categorie: planet

JCKEditor su Joomla 1.5 problemi controllo corpo dell’articolo

toshidex - Gio, 28/03/2013 - 00:10
Purtroppo ci sono ancora siti che utilizzano Joomla 1.5.x e come ben sapete ormai questa versione non ha più il supporto. L’altro giorno dovendo sostituire l’editor dal JCE al JCKEditor mi sono imbattuto in uno strano errore. In pratica Joomla quando crea un nuovo articolo, controlla se il titolo, categoria e corpo dell’articolo sono stati inserti. … Continue Reading Articoli Correlati:
  1. EeeBox B202 problemi con lm-sensors
  2. Al passaggio di Current problemi con X
Categorie: planet

lol_dba: trovare gli indici mancanti

maxer - Mer, 27/03/2013 - 09:15

Inizia una piccola serie di articoli dedicati al tuning delle applicazioni scritte in Ruby on Raisl.

In questo post parlo di lol_dba, una gemma che ha una funzione semplice quanto comoda: analizzare il codice, controllando i modelli e indicandoci gli indici mancanti. L’output che ci restituisce può essere il codice di una migrazione o una query sql per aggiungere gli indici al database.

Il funzionamento è semplice: dopo averla installata tramite il classico

gem install lol_dba

avremo a disposizione due comandi: lol_dba db:find_indexeslol_dba db:migrate_sql .

Entrambi hanno lo stesso fine, ma varia l’output prodotto: nel primo caso verrà prodotto il contenuto da mettere dentro una migrazione che andremo a generare, come consigliato dall’output del programma, tramite:

rails g migration AddMissingIndexes

nel primo caso verrà prodotta una query sql da eseguire sul database server.

 

Categorie: planet

Rubygem: evitare l’installazione della documentazione

maxer - Mar, 26/03/2013 - 18:38

Spesso l’installazione della documentazione delle varie gemme installate, oltre ad essere superflua occupa inutilmente spazio: la documentazione viene consultata via internet e quella presente sul sistema è ignorata. Per evitare la perdita di tempo dell’installazione/compilazione della documentazione è possibile disabilitarne l’installazione tramite il seguente comando:

echo 'gem: --no-rdoc --no-ri' >> ~/.gemrc
Categorie: planet
Condividi contenuti