Es ist eine wichtige Sicherheitsfrage und ich bin sicher, dass dies möglich sein sollte. Ein einfaches Beispiel: Sie führen ein Community-Portal. Benutzer werden registriert und laden ihre Bilder hoch. Ihre Anwendung gibt Sicherheitsregeln, wenn ein Bild angezeigt werden darf. Zum Beispiel müssen die Benutzer Freunde auf jeder Seite durch das System sein, damit du jemanden freigegeben möchtest. Hier kommt das Problem: Es ist möglich, dass jemand die Bildverzeichnisse deines Servers kriecht. Aber du willst deine Benutzer vor solchen Angriffen schützen. Wenn es möglich ist, die Binärdaten eines Bildes direkt in das HTML-Markup zu setzen, kannst du den Benutzerzugriff deiner Bilddokumente auf den Benutzer beschränken und deine Webanwendung ausführen und die Bilddaten an deinen Apache-Benutzer und die Gruppe direkt weiterleiten Das HTML Die einzige mögliche Schwäche ist dann das Passwort des Benutzers, dass Ihre Web-App läuft als. Gibt es schon eine Möglichkeit Wenn ich Sicherheit auf meinem Bilderverzeichnis brauche, würde ich das Verzeichnis überhaupt nicht aussetzen. Stattdessen würden meine img src Attribute auf eine Seite verweisen, die eine userid und eine Bild-ID als Parameter nehmen würde. Die Seite würde bestätigen, dass dieser Benutzer tatsächlich Zugriff auf das Bild hatte. Wenn alles gut ist, schick die Binär zurück. Ansonsten nichts senden Auch würde ich nicht erratende ids verwenden. Stattdessen an etwas wie Basis 64 kodierte guids kleben. Mit HTML5 kannst du das Canvas-Tag und JavaScript nutzen. Sie könnten vielleicht etwas mit CSS oder einem Tabellenlayout machen, um ein Bild zu zeichnen (wahrscheinlich wirklich schlechte Leistung, Auflösung, Portabilität). So oder so, es gibt keine Stoppen von Menschen aus der Aufnahme Ihrer Bilder. Sie könnten einen Screenshot machen und ihn ausschneiden. Wie Chris in seiner Antwort erwähnt hat, mit langen Bild-IDs, so dass die URL für jedes Bild ist nicht leicht zu erraten oder rohe Gewalt ist wichtig. Und auch keine Verzeichnisauflistung auf Ihren Webserver-Verzeichnissen ist auch. Antwortete Mar 12 10 um 1:38 Du könntest die Bilder aus dem Dokumentenwurzel in ein privates Verzeichnis verschieben und sie über deine Anwendung liefern, die Zugriff auf das Verzeichnis hat. Jedes Mal, wenn Ihre App ein Image-Tag generiert, erzeugt es dann auch ein kurzlebiges Sicherheitstoken, das beim Zugriff auf ein bestimmtes Bild angegeben werden muss: Chancen sind sehr selten, dass jemand das richtige Token zur richtigen Zeit mit dem richtigen Bild verraten wird. Es gibt zumindest Möglichkeiten, das Token in getImage zu überprüfen: Verfolgen Sie alle Bild-Tags in Ihrer App und speichern Sie Datensätze in einer Datenbank, die die zufällig generierten Token und Bild-IDs an die anfordernden Benutzer verknüpfen. Die getImage-Aktion überprüft dann die mitgelieferten Parameter auf diese Datenbank. Generieren Sie das Token als Prüfsumme (MD5, CRC, was auch immer) über die Benutzer-ID, die Bild-ID und vielleicht den aktuellen Tag des Jahres, und achten Sie darauf, in einem unbrauchbaren Salz zu mischen. Die getImage-Aktion berechnet dann die Prüfsumme und überprüft sie gegen die angegebene, um zu überprüfen, ob der Benutzer Zugriff hat. Diese Methode wird weniger überlegen als die erste. Beantwortet Mar 12 10 at 2:02 Denken Sie darüber hinaus Ich finde, dass es einfacher ist, nur die Zugriffsbeschränkungen der referenzierenden HTML-Seite erneut auf die quotgetImagequot-Aktion anzuwenden, wie jemand oben geschrieben hat. Trotzdem kann die Prüfsummenmethode die Leistungseinschränkungen verringern, da sie nicht auf externe Ressourcen zugreifen, um die Anforderung zu überprüfen. Ndash the-banana-king Mar 12 10 at 2:21 Ihre Antwort 2017 Stack Exchange, IncBase64 Bild Encoder online - base64 Konverter Dieses Online-Dienstprogramm ist ein Konverter zwischen binären Bilddaten (gif, jpg, png. Datei) und eine base64 Zeichenfolge. Sie können die Ausgabe base64 String-Darstellung des Bildes direkt an einen HTML-Code oder ein CSS-Stylesheet schreiben, so dass der Browser keine Server-URL des Bildes benötigen und Sie können Ihre Seiten mit dem Image-to-Base64-Code beschleunigen. Sample Image-to-64 html-Code Das nächste Beispiel html-Tag enthält ein solches Bildbeispiel, das direkt auf HTML als Base64-Daten geschrieben wurde. Das Etikett repräsentiert ein Pixel transparentes GIF mit 42Byte Größe: ltimg altOne pixel transparent GIF srcdata: imagegifbase64, R0lGODlhAQABAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Server. Http bekommen Amp-Antwort-Header sind in der Regel etwa 1kB, Base64-Codierung hat 33 größere Ausgabe als die ursprüngliche binäre Bild, so können Sie solche HTML-Tag für kleine einzelne Dateien mit Größe bis zu 3kB verwenden, um Ihre HTML-Seiten zu beschleunigen. Zum Beispiel, wenn Sie ein einziges 1kB-Bild als base64 nehmen, sparen Sie bis zu 600B Transferdaten und eine Anforderungszeit. Der Image-to-Base64-Code ist zum Beispiel bei Steigungs-Web-Bildern groß. Wenn Sie das Bild im Base64-Format decodieren möchten, verwenden Sie bitte Base64 Decoder. Datenschutzhinweise für diesen Online-Konverter Wir speichern keine Daten, die in diesem Formular veröffentlicht wurden. Wir protokollieren und überwachen die Daten nicht. Die codierten und dektypisierten Daten werden nur Speicher gespeichert und mit ASP oder ASP-Code on-the-fly konvertiert. Quellcode des Base64 Bildes EncoderInline Bilder mit Daten URLs Zusammenfassung. Erfahren Sie, wie Sie Bilder in Ihre Webseiten mit Daten-URLs einbetten können. Die Daten: URI-Schema enthält Bilder direkt in Ihre XHTML-Seiten mit Code anstelle von externen Dateien, sparen wertvolle HTTP-Anfragen. Inline-Bilder verwenden das Daten-URI-Schema, um Bilder direkt in Webseiten einzubetten. Wie von RFC 2397 definiert, sind Daten-URIs entworfen, um kleine Datenelemente als unmittelbare Daten einzubetten, als ob sie extern referenziert wurden. Mit Inline-Bildern werden HTTP-Anfragen über extern referenzierte Objekte gespeichert. Browser-Unterstützung für Daten-URLs Während Opera 7.2, Firefox, Safari, Netscape und Mozilla Unterstützung von Daten-URIs, Internet Explorer 5-7 nicht. Allerdings, Internet Explorer 8 Berichten zufolge, durch die Übergabe der Acid2-Test. Die Daten-URLs eine lebensfähige Alternative zum Einbetten kleinerer dekorativer Bilder. Es gibt Workarounds, die Sie für ältere Versionen von Internet Explorer verwenden können. Das Data URL Scheme Youve zweifellos gesehen andere URL-Schemata in Ihren Reisen rund um das Web, wie http. Ftp Und mailto: schemata. Die Daten: URL-Schema ist eine Möglichkeit, sofortige Daten einzubetten, als ob sie extern aufgenommen wurde. Daten-URLs verwenden die folgende Syntax: Im Falle eines Bildes verwenden Sie einen Mime-Typ, der das Bild identifiziert (zB imagegif), gefolgt von einer base64-Darstellung des Binärbildes. Hier ist ein Beispiel (Notiz zurückgegeben, um horizontales Scrollen zu vermeiden): Das resultierende Bild ist ein Ordnersymbol (beschnittener Screenshot): CSS - und Inline-Bilder In XHTML-Dateien eingebettet werden Daten-URL-Bilder nicht für wiederholte Verwendung zwischengespeichert, noch werden sie zwischengespeichert Seite zu Seite. Eine Methode, um das Caching zu ermöglichen, besteht darin, Hintergrundbilder in externe CSS-Dateien einzubetten. CSS wird von Browsern zwischengespeichert und diese Bilder können mit einem Selektor wiederverwendet werden, zum Beispiel: Nun wird das Ordnerbild für jede Instanz des LI wiederholt (oder man könnte auch hier eine Klasse oder ID verwenden). Das sieht so aus in Firefox (beschnittener Screenshot): Data URL Issues Es gibt zwei Probleme mit diesem Ansatz. Sie müssen die base64-Daten neu berechnen und die CSS-Datei jedes Mal bearbeiten, wenn sich das Bild ändert. Auch die IE-Versionen 5-7 unterstützen keine Inline-Bilder. Das erste Problem hat eine einfache PHP-Lösung: Dieser Code liest das Bild und wandelt es automatisch auf base64 auf dem Server um. Sie bezahlen für diese Bearbeitungsmöglichkeiten mit einigen serverseitigen Verarbeitung. Internet Explorer-Workarounds Es gibt zwei Möglichkeiten um IEs fehlende Daten-URL-Unterstützung. Mit dem Browser-Schnüffeln kannst du einfach das externe Bild für IE und die eingebetteten Bilder für andere Browser anzeigen. Oder Sie können JavaScript verwenden, um Daten URL-Unterstützung in IE zu simulieren, aber diese Methode erfordert eine angemessene Menge an JavaScript-Code. Der PHP-Code oben macht das Einfügen des base64-Äquivalents eines Bildes einfach: Wenn nun Ihr Server die CSS-Datei analysiert, wird er automatisch die Binärdatei in base64 verschlüsseln und die codierten Inline-Bilddaten direkt in die CSS-Datei senden. Als nächstes musst du Browser-Schnüffeln hinzufügen, um das Bild für IE und das Inline-Bild für alle anderen zu liefern. Sie könnten dies in der CSS-Datei mit PHP oder mit bedingten Kommentaren wie folgt tun: Wo die Datei ie. css eine normale Bildreferenz haben würde also: Vorteile von Daten URLs Daten URLs speichern HTTP-Anfragen. In Verbindung mit CSS-Sprites. Daten-URLs können zahlreiche HTTP-Anfragen speichern. Es wäre interessant zu sehen, ob Daten-URLs mit USEMAPS kombiniert werden können oder eine Daten-URL-CSS-Sprite machen. Speichern von HTTP-Anfragen, vermeidet Hinzufügen zu Objekt-Overhead Speichern von gleichzeitigen Thread - Browsern Standard auf zwei gleichzeitige Verbindungen pro Hostname HTTPS-Anfragen werden vereinfacht und Performance verbessert Nachteile von Daten-URLs Inline-Images werden in Internet Explorer 5-7 nicht unterstützt, obwohl Version 8 sie unterstützt . Die base64-Textdarstellung von Bilddaten nimmt auch mehr Bytes auf als das Binärbild. In unseren Tests waren die base64 Daten 39 bis 45 größer als das binäre Bild, aber mit gzip Kompression wurde der Unterschied auf nur 8 bis 9 größer reduziert. Die Optimierung Ihrer Bilder vor dem Konvertieren auf base64 reduziert die Größe der String proportional. Es gibt Größenbeschränkungen für Inline-Bilder. Browser sind nur erforderlich, um URLs bis zu 1.024 Bytes Länge zu unterstützen, entsprechend dem oben genannten RFC. Die Browsern sind liberaler, was sie aber akzeptieren. Opera begrenzt Daten-URLs auf etwa 4.100 Zeichen. Firefox unterstützt Daten-URLs bis zu 100K, so dass diese Technik am besten für kleine, dekorative Bilder verwendet wird. Zusammenfassend lässt sich sagen, dass IE 5-7 keine weiteren Schritte zur Aktualisierung von eingebetteten Inhalten (Reencode, Reembed) verwendet. Längenbegrenzungen - Technik ist für kleinere, dekorative Bilder nützlich. Base64-codierte Bilder sind etwa 33 größer als ihr binäres Äquivalent Beispiel Daten URLs Unten finden Sie einige Live-Beispiele zum Testen auf deinem Browser und spiegeln den obigen Code. Fazit Mit der Veröffentlichung von Internet Explorer 8 werden Daten-URIs eine tragfähige Option. Sie können kleine Bilder direkt in Webseiten mit Daten-URLs einbetten, um HTTP-Anfragen zu speichern. Daten-URLs sind eine bequeme Möglichkeit, selbst eingeschlossene Webseiten zu erstellen, die sich nicht auf externe Objekte verlassen, um sie zu rendern. Weiterlesen CSS Sprites: Wie Yahoo und AOL die Web-Performance verbessern Lernen Sie, wie AOL und Yahoo CSS-Sprites verwenden, um die Leistung für ihre belebten Homepages zu verbessern. CSS-Sprites speichern HTTP-Anfragen, indem sie die CSS-Positionierung verwenden, um selektiv zusammengesetzte Hintergrundbilder anzuzeigen. Um die Zugänglichkeit und Benutzerfreundlichkeit zu maximieren, werden CSS-Sprites am besten für Icons oder dekorative Effekte verwendet. Daten: URI-Schema Wikipedia-Seite auf Daten URLs Daten URL-Küche Konvertiert Bilder in Daten URLs Data URL Maker Konvertiert auch Bilder in Daten URLs RFC 2397 Die Daten URL Schema Spezifikation aus der IETF. Recent Posts Kategorien Lesen binäre Daten mit jQuery Ajax Post Navigation Dies ist Ein Beispiel dafür, wie ich jetzt eine Binärdatei aus der Dokumentbibliothek zum Listenelement kopieren kann: uploadForm Funktion (itemID) var formTemplateUrl myaccount. sharepointMyDocLibSourceForm. dotx var fileName Destination. dotx var listname MyList Chain ajax fordert mittelcoding-designwriting-better-ajax-8ee4a7fb95f. mm6rfde8a dataType binäres henryalgusreading-binary-files-using-jquery-ajax var a1.ajax (url: formTemplateUrl, Methode: GET, dataType: binär, processData: false,), a2 a1.then (Funktion (Daten). ) Gibt ein neues Versprechen zurück. Console. log (Success downloading file: formTemplateUrl) Hochladen von Anhängen in SharePoint-Listen mit REST sympmarc20160420uploading-attachments-to-sharepoint-lists-using-restcomment-135064 return. ajax (url: spPageContextInfo. webAbsoluteUrl apiweblistsgetbytitle (listname) (FileID) AttachmentFilesadd (FileName fileName), Methode: POST, Daten: Daten, processData: false, Header: Akzeptieren: applicationjson odataverbose, X-RequestDigest: document. getElementById (REQUESTDIGEST).value, a2.done (Funktion (Daten) Console. log (Success uploaded file: fileName)) Rodrigo V. Lagos Eustquio I8217m empfängt CORS 8216Access-Control-Allow-Origin8217 nicht vorhanden, aber mein Server ist offen. Tnks Hallo. Dieser Code funktioniert gut in Chrome und IE aber nicht in FireFox gibt es meinen Code. ajax (Typ: 8216POST8217, url: (extraDetails. data. portalContext. ExtraDetails. data. portalContext. 82208221) (this).attr (8216action8217) 8220ts8221 neu Datum () .2.22.1873.die. die. die. die. die. die. die. die. die. die. die. die Daten: Für einen Dateinamen var Dateiname 82208221 if (response. size ampamp response. type) Dateiname 8220error. xlsx8221 var disposition xhr. getResponseHeader (8216Content-Disposition8217) if (disposition ampamp disposition. indexOf (8216attachment8217) -1) var DateinameRegex filenamen ((82168221) .2n) var matches filenameRegex. exec (disposition) if (matches null ampamp matches1) Dateiname matches1.replace (82168221g, 8221) var type xhr. getResponseHeader (8216Content-Type8217) var blob neu Blob (Antwort) var Blob Antwort if ( Typeof window. navigator. msSaveBlob 8216undefined8217) IE-Workaround für 8220HTML7007: Eine oder mehrere Blob-URLs wurden durch Schließen des Blobs, für den sie erstellt wurden, widerrufen. Diese URLs werden nicht mehr aufgelöst, da die Datensicherung der URL freigegeben wurde.8221 window. navigator. msSaveBlob (Blob, Dateiname) else var URL window. URL window. webkitURL var downloadUrl URL. createObjectURL (blob) if (Dateiname) HTML5 verwenden Adownload Attribut, um Dateinamen var ein document. createElement (8220a8221) Safari doesn8217t unterstützen dies noch, wenn (typeof a. download 8216undefined8217) window. location downloadUrl sonst a. href downloadUrl a. download Dateiname document. body. appendChild (a) a. click () ExtraDetails. data. dialogService. showAlert (8220warning8221, 8220Unable zum Hochladen aller Code-Set Codes8221, 8221Fee Zeitplan Datei hochgeladen. Aber es gibt nur wenige Validierungsfehler 8220, 8220Bitte beziehen sich auf die error. xlsx Datei auf Ihrem machine.8221) fileUploadSuccess heruntergeladen True extraDetails. data. iframeDetails. srcextraDetails. data. iframeDetails. src).fail (function (jqXHR, textStatus) alert (8216dialogservice nach fehler 8216 dialogService) fileUploadSuccess false extraDetails. data. iframeDetails. srcextraDetails. data. iframeDetails. src extraDetails. data. dialogService. showAlert (8220warning8221, 8220Error uploading Code set8221, jqXHR. status 8220: 8221 (jqXHR. responseText. JqXHR. responseText 8216no Antworttext vom Service. Generic error8217))) arguments0.preventDefault () return false Kann jemand mir helfen, während dies
No comments:
Post a Comment