Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DOSTĘP DO PRZYCHODÓW BEZ UPRAWNIEN ADMINISTRATORA, PROBLEM Z ATTR_EMULATE_PREPARES, NIEPRAWIDŁOWE INTERPETACJE ZNAKOW. #274

Closed
1shotkill opened this issue Feb 2, 2021 · 4 comments
Labels
bug Something isn't working

Comments

@1shotkill
Copy link

Chciałbym zgłosić problemy zwiazane z sklep-sms.

Bug nr 1.

Mianowicie chodzi o to że dowolony uzytkownik z sieci moze wejsc
pod ten adress [/api/income?pid=income&year=2021&month=01] i zobaczyc
jaki byl dochod w danym miesiącu.

Rozwiazanie Bugu nr1.

Nalezi wprowadzic zmiane w pliku includes/Routing/RoutesManager.php
na linii 262.

`$r->get("/api/income", ["uses" => IncomeController::class . "@get",]);`

należy zmienic na

`$r->get("/api/income", ["middlewares" => [RequireAuthorized::class],"uses" => IncomeController::class . "@get",]);`

Bug nr 2.
Przez parametr [PDO::ATTR_EMULATE_PREPARES => false] czesto baza odpowiada
bardzo wolno lub po prostu pada, nieraz tez z tym parametrem byly zwiazane
problemy o ktorych dowiadywalem sie w errors.log np w niektorych momentach
zle interpetowal INNER JOIN przez co w logach zapisywal "syntax error ... itd".

Rozwiazanie Bugu nr2.

Wystarczy ze w pliku includes/Support/Database.php

	```
            $options = [
	                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
	                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
	                    PDO::ATTR_EMULATE_PREPARES => false,
    	                ];
            ```

zamienimy na

    	```
          $options = [
	                  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
	                  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
	                  PDO::ATTR_EMULATE_PREPARES => true,
	              ];
          ```

chodzi oto zeby zamienic FALSE na TRUE, lub na 1

Bug nr 3.
W oprogramowaniu uzywany Fast-router nie dekoduje roznych znakow ktore akurat powinne byc dekodowane.
Tzn Jesli uzytkownik wprowadzic do przegladarki adres ze spacią tak jak ponizej
http://localhost/sklep/page /payment_log to router uzna ze nie ma
takiej sciezki poniewaz link ktory otrzyma bedzie wyglada w ten sposob
http://localhost/sklep/page%20/payment_log.

Roznica miedzy tymi dwoma linkami jest taka ze w pierwszym jest uzyta spacja
widoczna dla normalnego czlowieka natomiast w drugim spacja jest zamieniona na
%20. Podsumuwujac te oba linki sa takie same lecz Fast Router interpretuje je
roznie i router o tym nie wie ze zgodnie z RFC spacja w postaci zakodowanej wyglada jak %20.

Rozwiazanie Bugu nr3.

Nalezi wprowadzic zmiane w pliku includes/Routing/RoutesManager.php po linii 797.
wystarczy dodać $uri = urldecode($uri); i to rozwiaze problem z nieporawnym przekierowaniem.

@1shotkill 1shotkill added the bug Something isn't working label Feb 2, 2021
@1shotkill 1shotkill changed the title DOSTĘP DO DOCHODÓW BEZ UPRAWNIEN ADMINISTRATORA, PROBLEM Z ATTR_EMULATE_PREPARES, NIEPRAWIDŁOWE INTERPETACJE ZNAKOW. DOSTĘP DO PRZYCHODÓW BEZ UPRAWNIEN ADMINISTRATORA, PROBLEM Z ATTR_EMULATE_PREPARES, NIEPRAWIDŁOWE INTERPETACJE ZNAKOW. Feb 2, 2021
@budziam budziam mentioned this issue Feb 4, 2021
@budziam
Copy link
Member

budziam commented Feb 4, 2021

Cześć,
w pierwszej kolejności chciałbym Ci bardzo podziękować za zasugerowane poprawki. Zmiany wprowadziłem w tym pull requestcie: #278 Oceń proszę czy czegoś nie pominąłem.

Zachęcam również do tworzeniu takich pull requestów samemu

@1shotkill
Copy link
Author

Cześc,
Wszystko jest ok, mam tylko pytanie czy pull bedzie dostepny tez jako update i bede mógł z panelu administratora zrobic aktualizacje czy bede musiał jeszcze raz sklonowac i zbudowac?

@budziam
Copy link
Member

budziam commented Feb 4, 2021

Musiałem jednak usunąć zmianę PDO::ATTR_EMULATE_PREPARES => true bo sporo testów po tym przestało przechodzić. Niestety nie za bardzo mam teraz czas by się wgłębiać czym to jest spowodowane.

Te zmiany zostaną wypuszczone wraz z wersją 3.16.2. Postaram się ją gdzieś w następnym tygodniu stworzyć.

@1shotkill
Copy link
Author

Super, dzieki. Tak tylko podsumowując bedzie dobrze jak PDO::ATTR_EMULATE_PREPARES wyeliminujesz bo performance bazy zniza sie do kastatrofycznego poziomu. Jeszcze raz dzieki za odpowiedz.

@budziam budziam closed this as completed Feb 4, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants