Autor Wątek: PHP+MySQL już w lamusie - co teraz?  (Przeczytany 20270 razy)

Offline Xender

  • Użytkownik

# Marzec 10, 2015, 12:01:02
Na przkład Python & Flask. Z baz danych to polecam PostgreSQL.
Jest to w zamyśle *mikro*framework, do którego powstała cała masa paczek, które robią jakieś konkretne rzeczy (Flask-SQLAlchemy - ORM, Flask-Babel - tłumaczenia, Flask-Security - trzymanie hashy haseł itd).

Tutaj jest dość ładnie opisane, jak się tego wszystkiego używa:
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

Podstawowe bezpieczeństwo jest ogarnialne.
Do renderowania HTML przeważnie używa się Jinja2, które ma odpowiednie mechanizmy escape'owania stringów, żeby zapobiec XSS.
Do baz danych często używa się z kolei SQLAlchemy. To ORM, więc też automatycznie escapuje to, co powinien.
Jeśli chodzi o CSRF, to Flask-WTF (moduł od formularzy) ma jakieś zabezpieczenia.

Oczywiście to wszystko nie zwalnia z myślenia, bo można się nadziać na coś innego, nawet prozaicznego.
Np. raczej nie chciałbyś mieć app.run(debug=True) na produkcji. ;)

No właśnie, ma wbudowany debugger, więc jak w testach coś się wywali, to można otworzyć konsolę na dowolnej ramce stosu (!) i np. podejrzeć zmienne.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Marzec 10, 2015, 12:49:02
Nie sądzę, bo serwer siedzi na Linuxie. Za to z rozwiązań linuxowych prawdopodobnie jestem w stanie postawić wszystko zważywszy że ostatnio przez PHPShell skompilowałem i uruchomiłem na serwerze Hello World w C++.
http://www.mono-project.com/docs/web/aspnet/ - dasz radę :]

Offline wozix

  • Użytkownik

# Marzec 10, 2015, 13:27:25
Jeju, problemy z escape'ami :D Używaj postgresa. Tam escapujesz tylko wysyłane query, a otrzymane dane już są odescapowane. Oprócz tego posiada milion innych korzyści.
Co do języka to nie wiem co potrzebujesz. Ja tam lubię robić rzeczy jak najwydajniej i oszczędzać zasoby, więc ostatnio co tylko mogę, to piszę w C++. Wszystkie śmieszne Pythony, J2EE, etc. mogą się pochować.

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Marzec 10, 2015, 13:34:01
Co do języka to nie wiem co potrzebujesz. Ja tam lubię robić rzeczy jak najwydajniej i oszczędzać zasoby, więc ostatnio co tylko mogę, to piszę w C++. Wszystkie śmieszne Pythony, J2EE, etc. mogą się pochować.
Masz jakiś chmurowy hosting C++? Co Ci po wydajnej aplikacji, którą i tak zarżnie mały DoS?

Offline Kos

  • Użytkownik
    • kos.gd

# Marzec 10, 2015, 13:43:47
Python + Django ftw. :)

Z hostingiem Pythona jest tak samo niezależnie od frameworka. Masz parę opcji - da się przez FastCGI, ale zobacz czy provider zapewnia coś na WSGI, np. GUnicorn.

Django ma tę przewagę, że nie jest mikroframeworkiem i masz "batteries included" (+ świetną dokumentację i mnóstwo third-party apek do rzeczy których będziesz potrzebował za pół roku), ale jak sobie poskładasz Flaska+Sqlalchemy+Jinja2 to też się nie przejedziesz.

Aplikacje Django mają mocną konwencję jak powinny wyglądać na dysku (appname/{urls,views,models,tests}.py + configi) + komendę która Ci taki projekt rozstawia. Warto jej przestrzegać, ale jeśli chcesz poglądowo zupełnie minimalny hello world, to proszę bardzo:

Offline Karol

  • Użytkownik

  • +2
# Marzec 10, 2015, 14:44:26
Jeju, problemy z escape'ami :D Używaj postgresa.
Baza danych nie gra roli IMHO, wystarczy używać np. PDO i bindować wszystkie parametry.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 10, 2015, 15:20:15
Cytuj
Jeju, problemy z escape'ami :D Używaj postgresa.
To akurat nie jest takie łatwe, zwłaszcza jak ma się fajny serwer już opłacony do grudnia. ;)


Ale z całej tej rozmowy świta mi obraz, że trza po prostu napisać sobie podstawowego wrappera w PHP na dostępy do MySQL oraz generowanie HTML i będzie dobrze. Po prostu należy załatwić rzeczy problematyczne raz a dobrze. :)

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

  • +1
# Marzec 10, 2015, 15:32:22
Ale czemu masz sobie pisać takiego wrappera, skoro możesz użyć gotowego :)

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers#Why_use_PDO.3F

Offline Kos

  • Użytkownik
    • kos.gd

  • +5
# Marzec 10, 2015, 15:35:01
Cytuj
napisać sobie

Myślałem że założyłeś wątek żeby znaleźć sobie otwarte drzwi i nie wyważać kolejnych :)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 10, 2015, 16:24:24
Ale czemu masz sobie pisać takiego wrappera, skoro możesz użyć gotowego :)

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers#Why_use_PDO.3F
No i super. :) Wygląda mi to smacznie.

Znasz może coś podobnie smacznego do bezpiecznego generowania HTML?

Offline ArekBal

  • Użytkownik

# Marzec 10, 2015, 18:38:21
Uzyj Zend, albo Symfony

Offline Kos

  • Użytkownik
    • kos.gd

# Marzec 10, 2015, 19:02:08
Znasz może coś podobnie smacznego do bezpiecznego generowania HTML?

Używałem Smarty za czasów swoich przygód z PHP (Warsztat też używa), teraz jest pewnie podobnych rozwiązań z 10 razy tyle.
Do unikania XSS-ów masz na dzień dobry escape_html który warto ustawić na true, żeby trzeba było jawnie wskazać w którym miejscu chcesz rysować kod HTML zamiast tekstu.

(Django działa podobnie, ale robi troszeczkę fajniej, bo zamiast zaznaczania w szablonie w którym miejscu renderować tekst a w którym HTML, po prostu przekazujesz do szablonu albo string (rysowany jako tekst) albo safestring (który jest wstawiany do HTML as is).

Offline 10log

  • Użytkownik

# Marzec 10, 2015, 20:38:57

Offline wozix

  • Użytkownik

# Marzec 11, 2015, 20:54:33
Masz jakiś chmurowy hosting C++? Co Ci po wydajnej aplikacji, którą i tak zarżnie mały DoS?
No to fajnie, że języki interpretowane są w pełni odporne na DoS'y :)

Offline JasonVoorhees

  • Użytkownik
    • FotoGry

# Marzec 11, 2015, 23:26:41
Chyba nie zrozumiałeś co miałem na myśli....

Chodziło mi o chmurę. Chmurę trudniej zarżnąć. Do C++ raczej chmur pod aplikacje webowe nie uświadczysz (nawet jeśli, to nie tak często, jak do "śmiesznej Javy", "śmiesznego Pythona", czy nawet "śmiesznego PHP").
« Ostatnia zmiana: Marzec 11, 2015, 23:28:15 wysłana przez JasonVoorhees »