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

(Mehr) Schutz gegen SQL injection #1474

Open
nelarsen opened this issue Dec 19, 2023 · 2 comments
Open

(Mehr) Schutz gegen SQL injection #1474

nelarsen opened this issue Dec 19, 2023 · 2 comments
Labels
enhancement New feature or request

Comments

@nelarsen
Copy link
Contributor

Ein Mitglied hat ein ganz kleines security-Review von CB2 gemacht; insbesondere haben wir uns zusammen angeschaut, ob sorgfältig mit SQL-Anfragen umgegangen wird, sodass SQL injection nahezu ausgeschlossen ist. Das ist fast überall der Fall, weil fast überall $wpdb->prepare() verwendet wird: Sehr gut! Wir haben jedoch vier Stellen gefunden, wo das nicht der Fall ist. In diesen Fällen ist es schwieriger zu prüfen, ob es eine potentielle Sicherheitslücke gibt. Ich schlage vor, diese vier Stellen ebenfalls in prepare() zu ändern, um SQL injection auszuschließen. Die vier Stellen sind in:

CB1::getCB1Taxonomies()
Restriction::queryPosts()
Timeframe::getPostIdsByType()
Timeframe::getPostsByBaseParams()

Ich mache gern ein PR wenn gewünscht.

@nelarsen nelarsen added the enhancement New feature or request label Dec 19, 2023
@chriwen
Copy link
Member

chriwen commented Dec 20, 2023

@nelarsen vielen Dank für den Hinweis und das Security-Review. Grundsätzlich halte ich es für sinnvoll, weitere Absicherungen gegen SQL Injections zu integrieren. Vor allem aber bei den Stellen
Timeframe::getPostIdsByType()
Timeframe::getPostsByBaseParams()
meine ich mich zu erinnern, dass unser damaliger Hauptentwickler hier bewusst kein prepare verwendet hat, da dies bei den komplexen große Performanceprobleme gemacht hat. Das Thema Performance sollten wir bei solchen Änderungen auf jeden Fall ausreichend prüfen.

@nelarsen
Copy link
Contributor Author

Danke für den Hinweis zum möglichen Hintergrund. Das ist auf jeden Fall Anlass, die Änderung hinsichtlich Performance zu testen. Ich glaube jedoch nicht, dass es einen Unterschied macht, weder positiv noch negativ. Ich glaube, der Grund war eher, dass es ein bisschen fummelig ist, Abfragen mit Arrays mit prepare() aufzubauen, weil man eine veränderbare Anzahl placeholders benötigt. An einer Stelle habe ich es entsprechend umgebaut und getestet (noch nicht hinsichtlich Performance). Es werden exakt die gleichen SQL-Queries wie davor ausgeführt. Was hält ihr davon? (Ich bin nicht so überzeugt von meiner Änderung)

nelarsen@9fb4c99

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

2 participants