2016-05-23 3 views
0

私は、base64エンコードされた文字列そうのように持っている:私は、PHPサーバーにそれをPOSTと私はスペースとキャリッジと(eyJjb VudCI6IjAiLCJzdmNubyI6IjI0OTAiLCJzdGFydGR0IjoiMjAxNi0wNS0xNiAxMToxOTowMC4wIiwiaW5zdGFsbF9uYW1lIjoiIiwiY29ubmVjdGl2aXR5dGhyb3VnaGxpc3QiOiIiLCJyZXZlbnVlY2l0eSI6IiIsIm9iX2J5dGVzb3V0IjoiMCIsImN1c3RvbWVydHlwZSI6IiIsImNhbmNlbGR0IjoiIiwidXNlc3VtIjoiZmFsc2UiLCJhY3RjYXQiOiIyIiwiYmFsYnl0ZXNpbiI6Ii0xIiwicGtndHlwZSI6Ik8iLCJwa2dpZCI6Ik9TQjRtYnBzNDBHQjFtYnBzVUwiLCJpbnN0YWxsX3dlYiI6IiIsInBvZCI6IiIsInN0YXR1cyI6IjAiLCJiYWxzZWNvbmRzIjoiLTEiLCJjb3VudHJ5bm8iOiIiLCJpbnN0YWxsX2NpdHkiOiIiLCJpbnN0YWxsX2VtYWlsIjoiIiwic2Vjb25kYXJ5cG9kY29kZSI6IiIsImFjdG5vIjoiNjA1MTMiLCJtb25leWJhbCI6IiIsImFjdG5hbWUiOiJPc2JuZXQiLCJkb21ubyI6IjIwIiwibXVsdGkiOiJ0cnVlIiwibGFzdG1pbGVubyI6IiIsImV4cGlyZWR0IjoiIiwic3RhcnREYXRlIjoiMjAxNi0wNS0xNiAxMToxOTowMC4wIiwic3ZjdHlwZSI6IkludGVybmV0IEFjY2VzcyIsImluc3RhbGxfcGhvbmUiOiIiLCJpbnN0YWxsX2FkZHJlc3MiOiIiLCJyYXRlUGxhbiI6Ik9TQjRtYnBzNDBHQjFtYnBzVUwiLCJyYWRkZXB0Y29kZSI6IiIsImluc3RhbGxfcGluIjoiIiwib2JfYnl0ZXNpbiI6IjAiLCJzZXNjb3VudCI6IjEiLCJzdmNkZXNjciI6Ik9TQjRtYnBzNDBHQjFtYnBzVUwiLCJyZW5ld2R0IjoiIiwic3Vic25vIjoiMTkxMzQzNiIsInNhbWVhc2JpbGwiOiJ0cnVlIiwiaW5zdGFsbF9yZW1hcmtzIjoiIiwiZG9taWQiOiJvc2JuZXRicm9hZGJhbmQiLCJpbnN0YWxsX2ZheCI6IiIsImFjdGlkIjoib3NibmV0IiwiY3BubyI6IiIsImFjdHN0YXR1cyI6IjAiLCJwb3J0bm8iOiIiLCJwcmltYXJ5cG9kY29kZSI6IiIsImV4dGVybmFsaWQiOiIiLCJjcmVhdGVkdCI6IjIwMTYtMDUtMTYgMTE6MTk6NDIuMCIsImRldmljZSI6IiIsImJhbGJ5dGVzb3V0IjoiLTEiLCJvYl9zZWNvbmRzIjoiMCIsImV4cGlyeWR0IjoiMjAxNi0wNi0xNSAxMToxOTowMC4wIiwiQ3VzdG9tZXIiなぜCI XSSフィルターを使用してPOST変数を実行すると、base64文字列が切り捨てられますか?

を取得

$base64String = $this->input->post('base64', TRUE);

のようにそれを受け取った場合 eyJjb3VudCI6IjAiLCJzdmNubyI6IjI0OTAiLCJzdGFydGR0IjoiMjAxNi0wNS0xNiAxMToxOTowMC4wIiwiaW5zdGFsbF9uYW1lIjoiIiwiY29ubmVjdGl2aXR5dGhyb3VnaGxpc3QiOiIiLCJyZXZlbnVlY2l0eSI6IiIsIm9iX2J5dGVzb3V0IjoiMCIsImN1c3RvbWVydHlwZSI6IiIsImNhbmNlbGR0IjoiIiwidXNlc3VtIjoiZmFsc2UiLCJhY3RjYXQiOiIyIiwiYmFsYnl0ZXNpbiI6Ii0xIiwicGtndHlwZSI6Ik8iLCJwa2dpZCI6Ik9TQjRtYnBzNDBHQjFtYnBzVUwiLCJpbnN0YWxsX3dlYiI6IiIsInBvZCI6IiIsInN0YXR1cyI6IjAiLCJiYWxzZWNvbmRzIjoiLTEiLCJjb3VudHJ5bm8iOiIiLCJpbnN0YWxsX2NpdHkiOiIiLCJpbnN0YWxsX2VtYWlsIjoiIiwic2Vjb25kYXJ5cG9kY29kZSI6IiIsImFjdG5vIjoiNjA1MTMiLCJtb25leWJhbCI6IiIsImFjdG5hbWUiOiJPc2JuZXQiLCJkb21ubyI6IjIwIiwibXVsdGkiOiJ0cnVlIiwibGFzdG1pbGVubyI6IiIsImV4cGlyZWR0IjoiIiwic3RhcnREYXRlIjoiMjAxNi0wNS0xNiAxMToxOTowMC4wIiwic3ZjdHlwZSI6IkludGVybmV0IEFjY2VzcyIsImluc3RhbGxfcGhvbmUiOiIiLCJpbnN0YWxsX2FkZHJlc3MiOiIiLCJyYXRlUGxhbiI6Ik9TQjRtYnBzNDBHQjFtYnBzVUwiLCJyYWRkZXB0Y29kZSI6IiIsImluc3RhbGxfcGluIjoiIiwib2JfYnl0ZXNpbiI6IjAiLCJzZXNjb3VudCI6IjEiLCJzdmNkZXNjciI6Ik9TQjRtYnBzNDBHQjFtYnBzVUwiLCJyZW5ld2R0IjoiIiwic3Vic25vIjoiMTkxMzQzNiIsInNhbWVhc2JpbGwiOiJ0cnVlIiwiaW5zdGFsbF9yZW1hcmtzIjoiIiwiZG9taWQiOiJvc2JuZXRicm9hZGJhbmQiLCJpbnN0YWxsX2ZheCI6IiIsImFjdGlkIjoib3NibmV0IiwiY3BubyI6IiIsImFjdHN0YXR1cyI6IjAiLCJwb3J0bm8iOiIiLCJwcmltYXJ5cG9kY29kZSI6IiIsImV4dGVybmFsaWQiOiIiLCJjcmVhdGVkdCI6IjIwMTYtMDUtMTYgMTE6MTk6NDIuMCIsImRldmljZSI6IiIsImJhbGJ5dGVzb3V0IjoiLTEiLCJvYl9zZWNvbmRzIjoiMCIsImV4cGlyeWR0IjoiMjAxNi0wNi0xNSAxMToxOTowMC4wIiwiQ3VzdG9tZXIiOnsibmFtZSI6Ik9zYm5ldCIsImVtYWlsIjoibmFyZXNoLmNoYXZhbjg5QGdtYWlsLmNvbSIsInBob25lIjoiIiwiYWRkcmVzcyI6IlN1cGVyIE1hcmtldCIsImNpdHluYW1lIjoiQmFuZ2Fsb3JlIn0sInJlbmV3YWxEYXRlIjoiIiwibmV4dFJlbmV3YWxEYXRlIjoiMTUgSnVuIDIwMTYiLCJwYWNrYWdlQW10IjoiMyIsIlRheCI6MC40MzUsIlRheFBlcmNlbnQiOiIxNC41IiwiY29udmVuaWVuY2VGZWUiOjAuMDY4NywiVG90YWwiOjMuNTAzNywicGFja2FnZVRvdGFsIjozLjQzNX0=

最初の5文字の後に戻ります)。しかし、TRUEフラグをCIのpost()メソッドから削除すると、元の64の文字列が得られます。

これはCIのXSSフィルタやXSSフィルタの欠点ですか? :/

EDIT:最初の5文字の後のスペースとキャリッジリターンは一般的ではありません。この特定の文字列で発生します。他のbase64文字列で試したことはありません。

答えて

0

この問題がなぜ起こるのか分かりませんが、base64を投稿するとJSON.stringifyを使用する必要があります。

var finalCanvas2 = finalCanvas.toDataURL(); 
data += '&Base64=' + JSON.stringify(finalCanvas2); 

と受信機であなただけの ポストとファイラーをフェッチする必要が終了します。

$this->input->post('Base64'); 
    list($type, $data) = explode(';', $Base64); 
    list(, $data) = explode(',', $data); 
    $data = base64_decode($data); 
    file_put_contents('first.png' , $data); 
0

XSSは積極的です。私は編集システム/コアによってこの問題を解決するために管理/ Security.php

$evil_attributes

から 'on\w*'を削除します
関連する問題