Le 11/09/2017 à 12:02, Daniel Gruno a écrit :


You could alternately use mod_lua as an output filter.

LuaOutputFilter fixupNonce /path/to/nonce.lua nonce
SetOutputFilter fixupNonce # or AddOutputFilterByType


and then in nonce.lua, you'd have:

function fixNonce(stype, str)
    if str:match("src=") then
       return ("<%s%s>"):format(stype, str)
    else
       return ("<%s nonce-%s %s>"):format(stype, nid, str)
    end
end

function nonce(r)
    coroutine.yield()
    -- make a random nonce ID for this session
    nid = r:sha1(math.random(1,99999999) .. r.useragent_ip)
     -- for each bucket, substitute script/style if internal
     while bucket do
           bucket = bucket:gsub("<(script)(%s*.-)>", fixNonce)
           bucket = bucket:gsub("<(style)(%s*.-)>", fixNonce)
           coroutine.yield(bucket)
     end
end


Well, I reinstalled apache with mod_lua and your code works. I mean it finds the scripts tags and adds the nonce. But I'm still unable to replicate the nonce in the header to make it work.

So if my header contains

Header set Content-Security-Policy "default-src 'self'; connect-src 'self' ; script-src 'self' 'nonce-123456789'"

I named it nonce-123456789 to easily change it.


I have tried with this
        bucket = bucket:gsub("nonce-123456789%s", fixNonce)

But it doesn't works there.

After some Googling (I did researches with apache modify headers, apache set headers with lua), I tried this too

r.headers_out['Content-Security-Policy'] = "script-src 'self' 'nonce-123456789'"

Then I did this

function goNonce(stype, str)
        if str:match("nonce-123456789") then
                return ("%s nonce-%s %s"):format(stype, nid, str)
        end
end

        while bucket do
                bucket = bucket:gsub("<(123456789)(%s*.-)>", goNonce)

And a dozen of similar tries, but same results, makes nothing in the headers. Sorry to bother you again, but I can't see the way to do it.

Thanks again

Luis


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org

Reply via email to