Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Web servisi Android

[es] :: Java :: Web servisi Android

[ Pregleda: 3665 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Web servisi Android06.05.2015. u 13:16 - pre 108 meseci
Postovani potreban mi je savet oko zastite sto se tice rada sa web servisima.

U pozadini je Php, a kao klijent koristim android aplikaciju . Koristim Rest web servis (json format i http komunikaciju).

Nacin na koji sam radio se nalazi na sledecem linku:

https://www.youtube.com/watch?v=38HDyEUEpCw&index=1&list=PL9JseSRCtp1U7fHC97qTslodUoER_pGLa

Veoma mi je bitna zastita. Da li je pametno celu putanju url navesti ili deo na kome mi se nalazi serverska apliakcija na odredjenoj ip adresi tu adresu sakriti u

neki xml ili txt file, pa povlaciti tu ip adresu prilikom kreiranja apliakcije (+ link od php koji ce stajati definisan u httpclientu).

Ako imate jos saveta puno bi mi znacilo.

 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Web servisi Android06.05.2015. u 13:38 - pre 108 meseci
Šta tačno pokušavaš da zaštitiš?
Da niko ne može da pročita/sazna URL tvog REST Api-a?
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: Web servisi Android06.05.2015. u 13:56 - pre 108 meseci
Pa npr. da neko ne pristupi mom url i da uradi insert i da mi popuni bazu nekim podacima, skrivanje urla, a i nacin na koji je najbolje odraditi zastitu

za web servis.
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Web servisi Android06.05.2015. u 17:37 - pre 108 meseci
Mogu ti dati neke smernice, pošto je tema široka i postoje razni mehanizmi.

1. Sakrivanje URL-a i tehničkih detalja je sigurnost ravna nuli, nema smisla da to radiš (http://users.softlab.ntua.gr/~taver/security/secur3.html)

2. Apsolutno moraš imati neki tip authentikacije na serveru (a verovatno i neki sistem autorizacije).
Najlakši pristup je da koristiš Basic (http://en.wikipedia.org/wiki/Basic_access_authentication), preporučljivo u kombinaciji sa SSL-om.

3. Ako se korisnik android aplikacije loguje svojim name/password-om, njih koristi dalje kao authentikaciju REST api serveru.

4. Ako se korisnik android aplikacije ne loguje, onda je priča komplikovanija i zahteva još razrade.
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: Web servisi Android10.05.2015. u 21:34 - pre 108 meseci

Iznecu svoju ideju oko zastite, a vi mi recite jel ok :)..

Definisem odredjeni String unapred (npr. dejantfca1234)posaljem ga php-u, php napravi neki slucajni broj ili string zabelezi ga u bazi i vrati mi tu vrednost..

Ja cu raditi sa tom sesijom sve dok nekazem odjava ili ako korsnik se ne odjavi posle par sati ta sesija istice..

Prilikom pozivanja da android uradi bilo sta on prvo mora prooveriti da li se taj slucajni broj poklapa sa brojom koji je u bazi, ako jeste

on mi ispisuje nesto na ekran.. Napravicu i brojac, ako posle 3 puta se ne poklapaju vrednosti zabranicu pristup narednih 1h..

Ima ce i prijava korisnika..

Aktiviranje aplikacije napocetku ce biti sa unapred definisanim vrednostima. Ako korisnik unese unapred definisane vrednosti ispravno,

Ja saljem string, vraca mi se neka vrednost (ja pocinjem da radim sa tom sesijom) i u lokalnu bazu upisujem sve vrednosti iz udaljene baze u mom slucaju

(firebird)..Drugo i svako naredno logovanje ce biti iz lokalne baze..

Lokalna baza i prijava korisnika iz lokala ce biti zato sto ce se kreirati par tabela gde ce korisnik moci da radi i ako nema interneta, a kada dodje internet

konekcija, poslacu te podatke u firebird bazu.




 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Web servisi Android10.05.2015. u 22:28 - pre 108 meseci
Neke detalje sam uspeo da shvatim ali mehanizam u celini nisam uspeo, tako da ne mogu da ti kažem mišljenje.
Probaj da napišeš samo onaj deo koji se tiče client-server komunikacije bez suvišnog
uplitanja samih podataka i sihronizacije online/offline baze.

Dakle, ja sam razumeo ovo, a ti probaj da pojasniš dalje:
Imaš određeni poznati string "dejantfca1234" (za koji nije rečeno da li javni/tajni i kome je poznat)
i šalješ ga PHP-u (serveru), server pravi i vraća klijentu neki random broj (SessionID).
Taj SessionID ima neko vreme isteka, i čuva se u bazi na serveru radi autentikacije kasnijih poziva.
Kakva je uloga onog "dejantfca1234" stringa koji si poslao serveru, šta sa njim?
I kako dalje ide...
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: Web servisi Android11.05.2015. u 08:40 - pre 108 meseci

Ovako string="dejantf1234" je definisan u androidu on se salje php serveru, u php serveru postavim uslov ako je taj string (dejantf1234) stigao, radim

random broj i vracam klijentu. Hvala na odgovoru.
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: Web servisi Android11.05.2015. u 08:44 - pre 108 meseci
U slucaju da nije stigao dejantf1234 necu raditi random, necu nista vratiti klijentu, ako 3 puta stigne zahtev, a ako u tom zahtevu nema odredjenog stringa

koji je unapred definisan blokiracu tog korisnika.
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Web servisi Android11.05.2015. u 10:54 - pre 108 meseci
Ako taj token "dejantf1234" čuvaš u nekom fajlu ili kompajlirano
u android app-u onda ga neko kad-tad može pronaći - ovo je moja pretpostavka,
ne znam da li ti je to namera ali pišem u skladu sa tim.
Ako već imaš user name i password korisnika, taj dodatni token ti u principu i ne treba.
Razmotri scenario - Ako neko ukrade token i počne da brlja preko web servisa,
kako ćeš da ga proglasiš nevažećim i da pošalješ novi android app-ovima?
Dakle, token samo pravi problem a nije preterano siguran.
Password, sa druge strane je mnogo fleksibilniji - ako ga neko "ukrade",
jednostavno se promeni na serveru a korisniku se pošalje drugim kanalima (npr. mejlom)

Vidiš, ako bi koristio Basic http auhentikaciju preko SSL-a, ništa više od toga ti i ne treba.
Tu kombinaciju koristi zilion sistema i postoji zilion primera za PHP i Android.
Basic ti nudi prosto i standardno tehničko rešenje za slanje credentials-a.
SSL ti nudi zaštitu transporta podataka, tako da niko ne može da pročita
ili da menja komunikaciju između klijenta i servera.

Što se tiče SessionID-a, gledaj da to izbegneš ako pozivi web servisu ne zavise od sesije.

http://mark-kirby.co.uk/2013/h...pis-http-basic-vs-http-digest/

[Ovu poruku je menjao dusans dana 11.05.2015. u 12:22 GMT+1]
 
Odgovor na temu

Dejan tf
student, Fakultet tehnickih nauka Cacak

Član broj: 307010
Poruke: 97
*.dynamic.sbb.rs.



+2 Profil

icon Re: Web servisi Android21.05.2015. u 14:31 - pre 107 meseci
Dusane hvala puno na odgovorima i savetima, ispod sam napisao postupak kako moram da uradim :)..

Prilikom prvog logovanja npr. sa sifrom 212, 212 saljem zahtev php-u, php proverava da li su ti podaci ako jesu php me vraca pin (od 8 cifara), ja taj pin, korisnicko ime i password stavljam u shared preferences, zatim iz shared preferencesa upisujem u listu . Prosledjujem parametre, php preko http proverava da li su dobri sada pin, username i pass. Tu mi javlja gresku..Kada idem na logaout brise se pin, pri sledecem logovanju dobijam novi pin..

Mislim da je problem u prvom delu kada se ulogujem i kada dobijem natrag pin,

ja ga dobijam kao json object ja ga konvertujem u string, ako moze mala pomoc. Ovde nzm. gde gresim. Kada citam podatke iz shared preferences i saljem php-u, php nevidi dobre parametre odnosno pin je problem.
Naprimer:

Podaci username i password mi se upisu u shared preferences i kada fiksiram vrednost pina sve normalno radi npr stavim (String pin="202").

Code:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="username">202</string>
    <string name="password">202</string>
    <string name="json">{&quot;pin&quot;:[{&quot;pin&quot;:&quot;14029204&quot;}],&quot;success&quot;:1}</string>
</map>



Ovo imam u shared preferences file.

Code:

                     String pin="202";// ako unapred definisem pin 202 sve mi radi
            String username=edtKorisnicko.getText().toString();//kupim podateke sa forme upisujem u string
                 String password=edtKorisnicko.getText().toString();
            
            
            
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();//imam listu u koju dodajem username i password
            params.add(new BasicNameValuePair("username", username));
            params.add(new BasicNameValuePair("password", password));
            
            
             

            JSONObject json = jsonParser.makeHttpRequest(url_vrati_pin ,"GET", params);
// u drugoj klasi sam Napravio klasu JSONParser i njenoj metodi prosledjujem username i password preko http saljem zahtev php-u, php mi vraca random broj od 8 cifara
            
            
            
            
               
            
            try {
                
                
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    
                    
                    SharedPreferences sp = PreferenceManager
                            .getDefaultSharedPreferences(Logovanje.this);//u shared preferences upisujem username, password i vrednost pina koju sam dobio JSONObjectu, json object konvertujem u string upisu mi se podaci u shared prefernces file iznad deo koda 
                    Editor edit = sp.edit();
                    edit.putString("username", username);
                    edit.putString("password", password);
                    edit.putString("json",json.toString());
                    edit.commit();
                    
                    
                    List<NameValuePair> params1 = new ArrayList<NameValuePair>();// zatim u novu listu upisujem sve podatke iz shared prefernces, php prima zahtev, i treba npr. da mi vrati sve artikle, ako su svi parametri koji je primio ok.
                    params1.add(new BasicNameValuePair("username", sp.getString("username", username)));
                    params1.add(new BasicNameValuePair("password", sp.getString("password", password)));
                    //params1.add(new BasicNameValuePair("pin",pin));
                    params1.add(new BasicNameValuePair("json12", sp.getString("json12", json.toString())));
                    
                    //String sp1=sp.toString();
                    JSONObject json1 = jsonParser1.makeHttpRequest(url_prijem_artikli ,"GET", params1);
                    Log.d("Slanje podataka", sp.toString());
                    
                Intent i = new Intent(Logovanje.this, PrikazPodataka1.class);//prelazak u novu formu ispis artikala ako je sve ok
                

                 startActivity(i);
                    
                    
                    
                    finish();
                    
                }





Medjutim ovo ne funkcionise ako koristim pin koji
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Web servisi Android27.05.2015. u 11:08 - pre 107 meseci
Ako dobro tumačim, ti nazad šalješ serveru ceo JSON koji si dobio od njega, nije ni čudo što ne radi.
Zar ne bi trebalo, da kada dobiješ JSON od servera isti isparsiraš i to sačuvaš u SP (pin ili koji podaci ti dalje već trebaju...)?
I posle da kada zoveš server ponovo koristiš vrednosti iz SP (umesto da čuvaš ceo JSON u SP i da dalje petljaš/komplikuješ svaki put sa njim).
JSON je super za transport podataka a za ostalo postoje mnogo lakši/bolji/prirodniji mehanizmi.
Što manje JSON-a (izuzimajući client-server transport/komunikaciju) to bolje po tebe.
 
Odgovor na temu

[es] :: Java :: Web servisi Android

[ Pregleda: 3665 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.