Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Arthnon

Stran: 1 2 [3] 4
31
Dobrý den,
chtěl bych se ujistit, zda chápu správně tuto anotaci @Transactional.
Pokud umístím tuto anotaci nad třídu, tak to znamená, že všechny metody uvnitř této třídy poběží jako transakce?

Čili pokud mám metodu, která provádí nějakou činnost v závislosti na stavu dokumentu v databázi a přijde zavolání nějaké metody několikrát za sebou, tak ta volání se budou volat po jednom, než ta první (nebo ta více ve předu) transakce ukončí svojí činnost? Chápu to tak správně?

Díky

32
Vývoj / Re:Problém s certifikáty
« kdy: 01. 09. 2019, 17:02:08 »
Raději používejte doménová jména než IP adresy. Doménové jméno musí být v certifikátu v atributu SAN (Subject Alternative Name) – jména ze Subject (část CN, Common Name) už prohlížeče při porovnávání certifikátu s doménovým názvem neberou v úvahu.

super, tohle mi moc pomohlo, děkuji. Podařilo se mi tu chybu přejít částečně.
Změnil jsem hosts file a dal tam
192.168.0.103  www.test.com

Udělal jsem certifikát a do SAN dal www.test.com, a přidal ten certifikát do trusted root autorit a web server je v pohodě, ale problém je ted na straně springu, protože když do ajaxu dám:
https://www.test.com:8443/oauth/token, tak se to přeloží na IP adresu https://192.168.0.162 a zase to vyhodí tu stejnou chybu s common_name...
Možná by pomohlo tam přidat ip adresu springu ještě do toho SAN (jestli tam jde teda dát více věcí)?

33
Vývoj / Re:Problém s certifikáty
« kdy: 01. 09. 2019, 15:45:47 »
Podařilo se mi s tím trošku hnout. Problém byl, že na web-serveru byl jiný, než na serveru.
Nicméně pořád tady mám další problém.

1.) Jak mám nastavit common_name pro lokální sít? Řekněme, že webový server běží na ip: https://192.168.0.162:443 a spring ta samá IP akorát port 8443.
Ptám se proto, že mi ted vyhazuje prohlížeč tuto chybu
Failed to load resource: net::ERR_CERT_COMMON_NAME_INVALID

Zkoušel jsem: https://192.168.0.162 a 192.168.0.162 - nic z toho nepomohlo a pořád to vyhazuje tu chybu...
Jaké mám tedy zvolit common name, aby to nevyhazovalo tuto chybu na lokální síti?

Díky

34
Vývoj / Re:Problém s certifikáty
« kdy: 30. 08. 2019, 19:57:07 »
No, mě to přes http jde i když to tam mám rovnou nandaný takhle přímo:
http://adresa:8080/oauth/token
Jakmile tam dám zpátky ten self-generated certifikát, tak už to nejde.
Všiml jsem si, že při použití toho https vůbec nedojde žádná žádost na server, takže nemůže ani vrátit žádné hlavičky...

35
Vývoj / Re:Problém s certifikáty
« kdy: 30. 08. 2019, 18:27:01 »
Na 443 mi běží totiž ten webový server (https)...
Čili když napišu do ajaxu: oauth/token - tak to vytvoří https://IP_web_serveru:443/oauth/token
Jenže já nemůžu nastavit spring, aby běžel také na portu 443. A opačně to samé...

36
Vývoj / Re:Problém s certifikáty
« kdy: 30. 08. 2019, 18:08:07 »
Když jsem zkusil dát pouze /oauth/token, tak to běží na portu 443 ta request a spring běží na 8443, takže to nedojde na ten server...
A spring nejde nastavit na 443, protože na tom portu již běží něco...

37
Vývoj / Re:Problém s certifikáty
« kdy: 30. 08. 2019, 17:54:02 »
Jak to myslíte, na tvrdo danou adresu s protokolem http?

Čili pokud mám zadáno jakožto url v ajaxu:

https://190.160.0.113:8443/oauth/token

tak je to špatně?

Jak jinak by to mělo být napsáno, když spring má tuhle IP adresu a port?

38
Vývoj / Problém s certifikáty
« kdy: 30. 08. 2019, 14:52:49 »
Zdravím,
snažím se nastavit aplikaci, která bude běhat pouze po lokální síti (v rámci wifi). Aplikace mi běžela v pohodě na localhostu.
Vytvořil jsem si web server na pc (windows) pomocí IIS, nastavil jsem mu ip adresu 192.168.0.113
Můj back-end běží ve springu a na stejném pc jako web server, čili má IP: 192.168.0.113:8443
Mohu se v tuto chvíli načíst loginovou stránku té aplikace na všech zařízeních na té lokální síti...
Nicméně se nemohu přihlásit.
Na back-endu jsem si vytvořil self-signed certificat pomocí keytool (.jks), který používám pro https.
Při použití https mi to vyhazuje tuto chybu:
Mozilla:
CORS error - CORS request did not succeed.
Chrome: OPTIONS https://url.../oauth/token net::ERR_CONNECTION_REFUSED

Když vypnu https na back-endu a používám jenom http, tak se mohu v pohodě normálně přihlásit, ale při použití https ne.
Takže musí být něco špatně s tím certifikátem... dělám to poprvé, takže v tom celkem plavu...
1.) Nějaký způsob jak to vyřešit?
2.) Je zde nějaká možnost, kde si nechat vygenerovat nějaký certifikát zadarmo, aby šel nastavit i jen pro lokální sít? Případně kde?
3.) Můžu nějak rozchodit to, aby mi šlo https i přes self-signed generovaný certifikáty? Webový server běží zatím taky jenom na http, tam já potřebuji taky dostat taky certifikát...

Případně nějaké další rady, jak to vyřešit s těmi certifikáty? Co bych měl udělat? Kde bych měl vzít ten certifikát a jak ho použít pro back-end, webový server?

Děkuji za pomoc

39
Studium a uplatnění / Re:Učebnice programovania
« kdy: 29. 08. 2019, 14:15:17 »
Upřímně Vám doporučuji vykašlat se na knížky a pořídit si nějaké online kurzy. Osobně jsem se ke knížce nedokopal, ale online kurzy jsou výborné.
https://www.udemy.com/java-the-complete-java-developer-course/
Při slevách za 300,-Kč, 80h contentu, cvičení, forum, kde opravdu poradí. Nemohu nic jen doporučit. A neustále tam přidává nový content z nových verzí javy, takže to máte vlastně na delší dobu. :-)

40
Zdravím,
poradil byste mi, prosím, jakým způsobem hodit tu aplikaci na net?

S tím, že mám Spring boot server s REST a frot end mám v jQuery. Potřebuji nějaký způsob, aby to bylo možné distrubovat tak, aby to na univerzitě mohli reálně vyzkoušet.
A asi by bylo třeba, aby spring běžel na nějakém PC, protože ta aplikace částečně zpravuje dokumenty (ukládá atd), takže bych potřeboval, aby tohle bylo splněno.

Poté potřebuji udat přesnou adresu na front-end do emailu.

1.) Jak byste mi doporučil takovouhle aplikaci distribuovat? Je to jako Bc pro univerzitu, takže potřebuji, aby k tomu měli přístup ve škole. 

2.) Já bych spíše asi potřeboval, aby mi to všechno běželo v rámci Wi-Fi. Napadlo by Vás, jak to vyřešit?

3.) Pokud by to všechno mělo běžet na localhostu (taky je to varianta, vzhledem k tomu, že je to k bc). Je zde způsob, jak nějak předělat tu cestu C:/file/cesta k index.html na nějaké url? Jako https://localhost:cesta?


Mockrát Vám děkuji

41

je nějaký doporučený způsob, jak se vypořádat s XSS na straně springu?
XSS byste měl řešit na straně view. Pokud uživatel na server odešle např. znak <, chce, aby se ten znak zobrazil – vy byste ho tedy měl normálně uložit do databáze. Při renderování obsahu ve view pak musíte zajistit, aby se speciální znaky escapovaly – např. < se musí vyrenderovat jako &lt; do zdrojového kódu HTML, protože ten znak má jinak v HTML speciální význam. Ale kdybyste chtěl ten samý text vyrenderovat třeba do PDF, nebudete řešit znak <, protože v PDF žádný speciální význam nemá.

Řešit to na straně vstupu je špatně, protože tím měníte data, která poslal uživatel – zobrazíte pak něco jiného, než poslal. Navíc pak očekáváte, že v databázi už máte všechna data vyčištěná a zobrazujete je bez escapování, což je dost „odvážné“. Navíc escapuje se podle použitého výstupního formátu, tj. jinak se escapuje pro HTML, jinak pro PDF, jinak pro čistý text – a třeba se jinak budou escapovat budoucí verze HTML. V databázi byste tedy měl mít uložen původní vstup od uživatele, protože nikdy nevíte, jak ho budete potřebovat escapovat v budoucnosti.
[/quote]

Čili data, která přijdou na server bych neměl na vstupu nijak kontrolovat/odescapovávat a normálně je rovnou uložit do databáze? Čili na serveru nemusím dělat žádnou kontrolu vůči XSS útokům? Nebo to mám zkontrolovat (udělat escapování) těsně před tím, než pošlu data na view? Nebo poslat ta data přímo z DBa udělat escapování a kontrolu těch dat až na view při renderování dat?

42
Zdravím,

je nějaký doporučený způsob, jak se vypořádat s XSS na straně springu? To znamená provéct XSSstrip všech requestů? Jak pro GET tak POST? Podařilo se mi udělat pouze pro GET, ale já bych potřeboval, aby to šlo pro všechno... jak pro GET, POST, PUT...

Děkuji :)

43
Kód: [Vybrat]
@PutMapping(value = "", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    @Secured({("ROLE_USER"),("ROLE_SUPERIOR"), ("ROLE_ADMIN")})
    public void updateApproval(OAuth2Authentication auth, @RequestParam MultiValueMap<String, String> body){
        String email = auth.getName();
        long userId = userService.getUserByEmail(email).get().getId();

        String approvalString  = body.getFirst("approval");
        int approval = Integer.parseInt(approvalString);

        String doc_ids = body.getFirst("doc_id");
        long doc_id = Long.parseLong(doc_ids);
        documentService.updateSharing(userId, doc_id, approval);
    }

takhle jsem vyřešil ten problém, aby mi to bralo tenhle content-type a v AJAXu jsem neposlal JSON data... každopádně má otázka trvá... a zda je tento kod, co sem ted dávám v pořádku řešení.

Děkuji

44
Ještě Vás poprosím další věc ohledně toho oauthu.

Dočetl jsem se, že se má uvádět:
Content-Type": "application/x-www-form-urlencoded
Je nutné tento content-type mít vždy tento, nebo jen při autentizaci/refresh_token atd?

Mám problém s tím, že mi nejdou posílat requesty na server, když ta data jsou v body. Spring mi to nebere:
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
Za předpokladu, že použiji:
application/json
Tak je vše v pohodě...

45
Zdravím,
dneska jsem se dostal do úzkých s many-to-many mapováním s "extra column". Podařilo se mi to namapovat tak, aby se mi vytrvořily tabulky v databázi OK. Nicméně problém mám s tím ,že nevím, jakým způsobem uložit ten objekt do databáze...

Document
Kód: [Vybrat]
@JsonIgnore
    @OneToMany(mappedBy = "document")
    private List<UsersDocuments> documentsForUsers;

User
Kód: [Vybrat]
@OneToMany(mappedBy = "user", orphanRemoval = true, cascade= CascadeType.ALL)
private List<UsersDocuments> usersDocuments;

PK
Kód: [Vybrat]
@Embeddable
public class UserDocumentsId implements Serializable {

    @Column(name="user_id")
    private long user;

    @Column(name="document_id")
    private long document;

Kód: [Vybrat]
@Entity
@Table(name="users_documents")
public class UsersDocuments {

    @EmbeddedId
    private UserDocumentsId id;

    @ManyToOne(fetch = FetchType.LAZY)
    @MapsId("user")
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne(fetch = FetchType.LAZY)
    @MapsId("document")
    @JoinColumn(name = "document_id")
    private Document document;

    @Column(name="approval")
    private boolean approval;

Ukládání - nefunkční.
document.getDocumentsForUsers().add(userDocuments); hází NULL exception.
Kód: [Vybrat]
Optional<User> user = userService.getUserByEmail(createdBy);
        Document document = new Document(title, desc);
        document.setUploadDatetime(new Date());
        document.setUser(user.get());

        List<User> users = userService.getUsersByRoles(roles);


        for(User userx : users){
            UsersDocuments userDocuments = new UsersDocuments();
            UserDocumentsId id = new UserDocumentsId();

            // Construct the Id with user and document
            id.setUser(userx.getId());
            id.setDocument(document.getId());

            userDocuments.setId(id);
            userDocuments.setApproval(true);

            document.getDocumentsForUsers().add(userDocuments);
        }

        documentService.saveDocument(document);

Mockrát děkuji

Stran: 1 2 [3] 4