Jump to content

qubism

Members
  • Posts

    10
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by qubism

  1. Hi lovely people,

    I'm currently using a JS cookie banner that saves data like (UUID, Categories, Date, Modified) in a cookie, on consent.

    GDPR wants me to keep track of those consents, "Proof of consent", so I created a Fetch Post Request in JS with a CSRF token & value that sends the request to a URL Hook in PW.
    In the hook itself, I check the current SessionID, CSRF Token and if the UUID is RFC 4122 compliant. Content of the cookie then gets sanitized & saved into a PW log.

    		const response = await fetch(apiUrl, {
    			headers: {
    				'X-Requested-With': 'XMLHttpRequest',
    			},
    			credentials: 'same-origin',
    			method: 'POST',
    			body: formData,
    		});
    $this->addHook('/consent/', function ($event) {
            $sessID = session_id();
            $ccCookieValue = $_COOKIE['cc_cookie'] ?? null;
            $sessCookie = $_COOKIE['wires'] ?? null;
    
            if ($this->session->CSRF->hasValidToken() && $ccCookieValue && $sessID === $sessCookie) {
                if (isValidUuid($uuid)) {
                $this->log->save('consent', "Consent Received from UUID: $consentUuid, Categories: $consentCatData, On Date: $consentDate, Last Modified: $consentUpdate");
                }
    		}
    });

    That's the stripped down version of it.


    What's the best way to make the request in itself more secure?
    Or is it enough, cause it just gets posted in the log anyway?

    Thanks for your time!
     

  2. Hey friends,

    I'm currently building a new site and switched from CKEditor to TinyMCE, which works like a charm for now.
    One option I'm missing from CKEditor is setting the default Image Field when uploading something to the editor.

    Is there a workaround to achieve the same thing with TinyMCE?

    Maybe I'm blind and am just missing the option. Thanks a bunch!

     

  3. 7 hours ago, Robin S said:

    Try using urlencode() on the image URL to deal with spaces and other potentially problematic characters.

    I tried that and also rawurlencode() and the API just uploads an blank image with the whole absolute url as filename.

    7 hours ago, Guy Incognito said:

    Also check the source server doesn't hasn't blocked image hotlinking or downloading of images without a referrer. I had an issue with an import script once along these lines.

    Most images work though, so I guess that's not the problem. 

     

    Another option would be to check for special characters in the filename and skip that images, so ProcessWire at least doesn't throw an error.
    Not optimal, but still something

  4. Hey Girls & Boys,

    I'm currently importing data with some basic scraping from another page and adding new pages with the ProcessWire API.
    The data is mostly text which works fine but some images can't get downloaded from the other page.

    My guess would be due to the filename.

    Here's the Error:

    ProcessWire\WireException
    
    File could not be downloaded (https://************.com/content/v1/5e8119f5232766b98/1613689-FJ73MYGC/Außenansicht+2+Galerie.jpg) 400 Bad Request:  (tried: curl) search

    My Code snippet (throws the error also without sanitizer):

    if($html->find('img.thumb-image', 0)->{'data-src'}) {
        $image = $html->find('img.thumb-image', 0)->{'data-src'};
        $p->article_thumb = $sanitizer->url($image);
    }

    Is there a way to do this?

     

    Thanks for your time ?

     

    Edit: Found a solution. urlencode changed the whole URL and made the API upload empty images. So I kept the URL until the last slash and just changed the filename like so:

            $image = $html->find('img.thumb-image', 0)->{'data-src'};
    
            $imageURL = $image;
            $pos = strrpos($imageURL, '/') + 1;
            $result = substr($imageURL, 0, $pos) . urlencode(substr($imageURL, $pos));

     

×
×
  • Create New...