Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Teil eines Fensters verpixeln (https://www.delphipraxis.net/196297-teil-eines-fensters-verpixeln.html)

Alfonso 8. Mai 2018 16:18

Teil eines Fensters verpixeln
 
Hallo,

aus Datenschutzgründen möchte ich für Benutzer mit eingeschränkten Rechten die Ausgabe von Read Only TEdit Felder verpixeln.
Alternativ würde ich einen kompletten bereich des Fensters, der Datenschutzrelevant ist, verpixeln wollen.

Habe im Web und hier gesucht, aber nur Lösungen mit FX Komponenten gefunden, die ich nicht einsetze (nutze VCL).

Kann mir jemand helfen?

generic 8. Mai 2018 16:23

AW: Teil eines Fensters verpixeln
 
Das würde ich nicht machen, weil die Daten per API Funktionen trotzdem aus den Steuerelement geholt werden können.
Am besten gar nicht erst laden lassen. Wenn du den SQL-Server 2016 (oder neuer) hast, kannst du zensierte Daten liefern lassen - das dann schon ab Datenbank!

Der schöne Günther 8. Mai 2018 16:58

AW: Teil eines Fensters verpixeln
 
Die Analogie wäre Dokumente mit sensitivem Inhalt herumzureichen und bei Leuten die nicht alles sehen sollen manche Bereiche mit Papierschnippseln abzudecken.

Statt den echten Daten nur Platzhalter übertragen. Und wenn selbst das zu aufwändig ist dann wenigstens in die Edit-Felder und Konsorten etwas wie
Delphi-Quellcode:
----
oder ähnliches eintragen.

Aber selbst hier kann ein Angreifer immer noch über Netzwerk mitlesen, Dateien auslesen oder in Log-Dateien sensitive Inhalte finden. Das Übliche eben 8-)

Schokohase 8. Mai 2018 17:34

AW: Teil eines Fensters verpixeln
 
Woher bekommt die Anwendung denn diese Daten, die dann dort verpixelt werden sollen?

Und wenn die Anwendung an die Daten kommt, dann kommt auch der Anwender (grundsätzlich) an die Daten.

Mit Datenschutz hat dieses Vorgehen absolut gar nichts zu tun, eher eine Geschichte aus der Serie: "Heute haben wir uns aber mal wieder so richtig schön selber reingelegt!"

TigerLilly 9. Mai 2018 06:57

AW: Teil eines Fensters verpixeln
 
<off-Topic>
Warum könnt ihr nicht einfach die Frage des TE beantworten + wenn ihr dazu nichts zu sagen habt, Euch zurückhalten?

Ich finde das zunehmend lästig. Einmal auf einen anderen Aspekt hinweisen, mag ja noch ok sein, aber da setzen sich gleich noch zwei weitere drauf + hurtig entspannt sich eine Diskussion, die mit dem Anliegen des TE nichts zu tun hat.
</off-Topic>

Bernhard Geyer 9. Mai 2018 07:31

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von TigerLilly (Beitrag 1401710)
<off-Topic>
Warum könnt ihr nicht einfach die Frage des TE beantworten + wenn ihr dazu nichts zu sagen habt, Euch zurückhalten?

Ich finde das zunehmend lästig. Einmal auf einen anderen Aspekt hinweisen, mag ja noch ok sein, aber da setzen sich gleich noch zwei weitere drauf + hurtig entspannt sich eine Diskussion, die mit dem Anliegen des TE nichts zu tun hat.
</off-Topic>

Liegt halt daran, das hier doch einige Nutzer nicht für einen ungünstigen/falschen Lösungsansatz eine mögliche Lösung posten wollen, sondern gleich den Lösungsansatz hinterfragen.
Mach ich im meinen Beruflichen Umfeld genauso - Und fahre damit besser als etwas zu Implementieren das eh in die falsche Richtung geht.

Da es bisher kein "Verpixelungslöung" gepostet wurde, muss der TE damit Leben, das entweder sein Ansatz hinterfragt wird oder er gar keine Antworten bekommt.

p80286 9. Mai 2018 08:08

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1401711)
Da es bisher kein "Verpixelungslöung" gepostet wurde, muss der TE damit Leben, das entweder sein Ansatz hinterfragt wird oder er gar keine Antworten bekommt.

Ich denke '....' war schon ein "Verpixelungsansatz". Man könnte auch den Inhalt "Xoren", oder man verwendet als Font Wingdings oder Webdings.
Aber warum sollten Daten an einen Benutzer geliefert werden, die diesen nichts angehenen? Das Konzept sollte wirklich geprüft werden.

Gruß
K-H

Der schöne Günther 9. Mai 2018 08:20

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von TigerLilly (Beitrag 1401710)
wenn ihr dazu nichts zu sagen habt, Euch zurückhalten? […] hurtig entspannt sich eine Diskussion, die mit dem Anliegen des TE nichts zu tun hat.

Ich würde dir Recht geben wenn die Frage gewesen "Wie verpixele ich ein Label/Edit/…?". Wenn die Frage aber (zum Glück) ist "Wie kann ich X machen um Y zu erreichen?" dann muss es erlaubt sein darauf hinzuweisen dass man Y vielleicht anders ganz einfach erreichen kann oder X die denkbar schlechteste Möglichkeit ist. Das hat mir hier bei meinen Fragen auch schon sehr oft geholfen.

bcvs 9. Mai 2018 08:28

AW: Teil eines Fensters verpixeln
 
Zitat:

Ich denke '....' war schon ein "Verpixelungsansatz"
Oder einfach
Delphi-Quellcode:
Edit.visible:=false;
Ändert aber nichts an der angesprochenen Sicherheitslücke dieses Konzepts. Entscheiden must du selbst....

himitsu 9. Mai 2018 09:58

AW: Teil eines Fensters verpixeln
 
Delphi-Quellcode:
Edit.PasswortChar := '*';
aber das löst auch nicht das prinzipielle Problem.

Alallart 9. Mai 2018 11:28

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von himitsu (Beitrag 1401721)
Delphi-Quellcode:
Edit.PasswortChar := '*';
aber das löst auch nicht das prinzipielle Problem.

Ich verstehe nicht was du mit "prinzipielle Probleme" genau meinst. Ist zwar schon lange her wo ich das richtig überprüft habe, aber wenn man versucht ein Eidtfeld auszulesen, das mit PasswortChar "verpixelt" ist, bekommt man auch nur Sternchen raus. Im Editfeld selbst sind also nur Sternchen, kein verdeckter Text.

Klar kann man irgendwelche Datenströme mit irgendwelchen Hackerprogrammen auslesen, ab er um das geht es hier wohl nicht. PasswortChar sorgt dafür, dass Edit-Felder nur Sternchen anzeigen.

Der schöne Günther 9. Mai 2018 11:43

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von Alallart (Beitrag 1401723)
aber wenn man versucht ein Eidtfeld auszulesen, das mit PasswortChar "verpixelt" ist, bekommt man auch nur Sternchen raus.


Leider nicht.

https://imgur.com/a/HkzbRHS

himitsu 9. Mai 2018 11:54

AW: Teil eines Fensters verpixeln
 
Das Control hat als Windows-Text immernoch den richtigen Text.
Nur bei der Anzeige werden während des Malens die Sterne/Punkte verwendet.

Und nur ein einzelnes Bit in dem Control muß geändert werden (MSDN-Library durchsuchenES_PASSWORD), damit man im Edit wieder den Text sieht, was WinSpy&Co. oder MSDN-Library durchsuchenSetWindowLong auch problemlos erledigen können.

Es ist praktisch das Selbe, was der TE machen will, aber ob nun er oder Windows die Ausgabe "anders" malt, aber intern die Daten problemlos zugreifbar sind, das macht keinen großen Unterschied.
Du kannst gern im Paint-Ereignis der Komponente deine Pixel malen, aber es bleibt das selbe Problem bestehen.


Darum bieten viele DBMS auch direkt an, dass man beim Auslesen solcher Felder anhand der Benutzerberechtigung einzelne Felder/Spalten schon DB-seitig "sperren" kann, damit diese Daten garnicht erst raus kommen können.

p80286 9. Mai 2018 12:29

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von Alallart (Beitrag 1401723)
Ich verstehe nicht was du mit "prinzipielle Probleme" genau meinst.

Zitat:

Zitat von Alfonso (Beitrag 1401695)
Hallo,

aus Datenschutzgründen möchte ich für Benutzer mit eingeschränkten Rechten die Ausgabe von Read Only TEdit Felder verpixeln.

Das prinzipielle Problem ist wohl der Datenschutz. Dem versucht der TE mit Hilfe einer "Verpixelung" bei zu kommen.
Da ist es aber wesentlich nachhaltiger Daten, die zu schützen sind, gar nicht erst zu publizieren, als sie zu verfremden.

Gruß
K-H

himitsu 9. Mai 2018 12:45

AW: Teil eines Fensters verpixeln
 
Stell dir "Verpixeln" mal etwas anders vor.

* ein nicht ganz deckend malender Stift ... kannst oft drüber malen, aber sehen tut man es dennoch
> würde man aber den Text garnicht erst hinschreiben und nur als "hier wäre was" die Pixel malen, dann kann man dennoch nichts sehen

* oder wie in schlechten TV-Pseudorealitypolizeidokus, wo nur die Augen verpixelt werden ... man sieht nichts, aber wer dich kenn, wird dich dennoch erkennen, was blöd ist, wenn das die Bösen sind
> ein falsches "Dummy"-Gesicht mit Pixeln über den Augen ... nja, da wird maximal der Falsche erschossen, aber du bist sicher

Bernhard Geyer 10. Mai 2018 11:50

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von p80286 (Beitrag 1401713)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1401711)
Da es bisher kein "Verpixelungslöung" gepostet wurde, muss der TE damit Leben, das entweder sein Ansatz hinterfragt wird oder er gar keine Antworten bekommt.

Ich denke '....' war schon ein "Verpixelungsansatz". Man könnte auch den Inhalt "Xoren", oder man verwendet als Font Wingdings oder Webdings.

Hört sich nach der Lösung an indem man Dokumente als PDF mit geschwärzen Inhalt rausgegeben hat. Dumm nur das dann hinter der Schwärzung der Orginal-Text noch im PDF vorhanden war.
Das gleich wäre mit Wingdings und Co. Im Control ist es nicht lesbar. Solange es aber nur "ReadOnly" gesetzt ist kann man es rauskopieren und dann mit andere Schriftart anzeigen.

Bernhard Geyer 10. Mai 2018 12:02

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1401724)
Zitat:

Zitat von Alallart (Beitrag 1401723)
aber wenn man versucht ein Eidtfeld auszulesen, das mit PasswortChar "verpixelt" ist, bekommt man auch nur Sternchen raus.


Leider nicht.

https://imgur.com/a/HkzbRHS

Autsch :wall:
Hat hier Emba/Delphi gepfuscht oder ist das eine Mangel des Windows-Controls.
Ein Jira-Ticket finde ich nicht dazu. Darf ich dein Beispiel verlinken wenn ich ein Jira-Ticket anlege?

Glücklicherweise haben wir Edits von 3th-Partykomponenten. Diese Fallen auf diesen Trick nicht herein.:wink:

Der schöne Günther 10. Mai 2018 12:30

AW: Teil eines Fensters verpixeln
 
Klar, gerne. Aber ich denke es ist eher
Zitat:

Zitat von Bernhard Geyer (Beitrag 1401764)
ist das eine Mangel des Windows-Controls.

.


Denn in der WinForms-Doku zu PasswordChar steht:
Zitat:

[…]. Because the text entered is not encrypted in any way, you should treat it as you would any other confidential data. Even though it does not appear as such, the password is still being treated as a plain-text string (unless you have implemented some additional security measure).
Quelle: https://docs.microsoft.com/en-us/dot...extbox-control

Die Embarcadero-Doku sagt das ja auch, wenn auch nicht so deutlich:
Zitat:

Delphi-Quellcode:
PasswordChar
affects the appearance of the edit control only. The value of the Text property reflects the actual characters that are typed.
Quelle: http://docwiki.embarcadero.com/Libra...t.PasswordChar

KodeZwerg 10. Mai 2018 19:20

AW: Teil eines Fensters verpixeln
 
Hi, drei alternativen um beim verpixeln zu bleiben:

Variante a) leg dir eine Komponente über die die Du verstecken willst, diese muss ein Canvas bieten, damit kannst du dann was auch immer rübermalen, das geht in Richtung WinApi/Non-VCL

Variante b) leg dir eine Image Komponente rüber und lad irgendein Bild, das geht in Richtung VCL pur.

Für beide Varianten könnte man das was verpixelt werden soll auch vorher "knipsen" und dann bearbeiten und dann ins Canvas bzw Image rein.

Variante c) Noch eine Sache wäre der Glass-Effekt, der bietet eigentlich das was du vorhast an, per Dichte stellst du die Lesbarkeit ein.

himitsu 10. Mai 2018 20:10

AW: Teil eines Fensters verpixeln
 
b) Ein Image kann man niemals über eine Komponente legen, da es sich nur auf dessen Parent malt und der ist immer hinten.


Und ganz im Ernst, nur weil das Edit durch eine andere Komponente überdeckt wird, heißt dass noch lange nicht, dass man nicht in wenigen Millisekunden an das Edit im Hintergrund ran kommt, in dem immernoch alles direkt lesbar drin ist.


Sobald wie auch immer das "geheime" in der GUI landet, kann es auch ausgelesen werden.
Wenn es nur im RAM liegt, dann ist es auch auslesbar, aber diesen aufwändigeren Fall ignoriere ich jetzt erstmal.
Fazit: Es darf garnicht erst geladen werden, dann kommt auch niemand da ran.

@Bernhard Geyer: Sorry, aber das ist keinenfalls ein Problem von Delphi.
Es liegt in der Natur solcher Passwort-Edit-Komponenten und das auch in anderen Betriebssystemen.

KodeZwerg 10. Mai 2018 20:50

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von himitsu (Beitrag 1401792)
Und ganz im Ernst, nur weil das Edit durch eine andere Komponente überdeckt wird, heißt dass noch lange nicht, dass man nicht in wenigen Millisekunden an das Edit im Hintergrund ran kommt, in dem immernoch alles direkt lesbar drin ist.

Ich geh natürlich davon aus dass das edit.visible=false ist und auch nicht gefüllt wird wenn "Shareware Nag" aktiv ist.

Der schöne Günther 10. Mai 2018 21:22

AW: Teil eines Fensters verpixeln
 
Der Aufwand für die Pseudo-Lösungen wird langsam sogar größer als der richtige Weg, die Daten einfach erst gar nicht zu übertragen oder zumindest nicht anzuzeigen :-D

p80286 10. Mai 2018 22:17

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1401795)
Der Aufwand für die Pseudo-Lösungen wird langsam sogar größer als der richtige Weg, die Daten einfach erst gar nicht zu übertragen oder zumindest nicht anzuzeigen :-D

Für den richtigen Weg müßte man aber eine andere Abfrage/view und/oder mehrere Berechtigungen/Rollen anlegen.
Dann wäre die Chance ein evtl. Audit zu überstehen größer.

Gruß
K-H

TigerLilly 11. Mai 2018 06:49

AW: Teil eines Fensters verpixeln
 
Vielleicht kann @alfonso aka "der Threadersteller" noch ein wenig Input liefern?

EWeiss 11. Mai 2018 14:48

AW: Teil eines Fensters verpixeln
 
Zitat:

Zitat von TigerLilly (Beitrag 1401801)
Vielleicht kann @alfonso aka "der Threadersteller" noch ein wenig Input liefern?

Ich denke er ist das blöde Gelaber hier satt.
Wenn ich der TE Ersteller wäre würde ich auch nicht mehr Antworten.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz