[webkit-dev] localStorage quota limit
Maciej Stachowiak
mjs at apple.com
Wed Dec 2 22:20:37 PST 2009
On Dec 2, 2009, at 9:07 PM, Darin Fisher wrote:
> On Wed, Dec 2, 2009 at 8:44 PM, Maciej Stachowiak <mjs at apple.com>
> wrote:
>
> On Dec 2, 2009, at 8:14 PM, Darin Fisher wrote:
>
>> What about Maciej's comment. JS strings are often use to store
>> binary values. Obviously, if people stick to octets, then it
>> should be fine, but perhaps some folks leverage all 16 bits?
>
> I think some people do use JavaScript strings this way, though not
> necessarily with LocalStorage. This kind of use will probably become
> obsolete when we add a proper way to store binary data from the
> platform.
>
> Most Web-related APIs are fully accepting of JavaScript strings that
> are not proper UTF-16. I don't see a strong reason to make
> LocalStorage an exception. It does make sense for WebSocket to be an
> exception, since in that case charset transcoding is required by the
> protocol, and since it is desirable in that case to prevent any
> funny business that may trip up the server..
>
> Also, looking at UTF-16 more closely, it seems like all UTF-16 can
> be transcoded to UTF-8 and round-tripped if one is willing to allow
> technically invalid UTF-8 that encodes unpaired characters in the
> surrogate range as if they were characters. It's not clear to me why
> Firefox or IE choose to reject instead of doing this. This also
> removes my original objection to storing strings as UTF-8.
>
>
> I think it is typical for UTF-16 to UTF-8 conversion to involve the
> intermediate step of forming a Unicode code point. If that cannot
> be done, then conversion fails. This may actually be a security
> thing. If something expects UTF-8, it is safer to ensure that it
> gets valid UTF-8 (even if that involves loss of information).
These security considerations seem important for WebSocket where the
protocol uses UTF-8 per spec, but not for the internal storage
representation of JavaScript strings in LocalStorage (where observable
input and output are both possibly-invalid UTF-16).
Regards,
Maciej
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20091202/5995e913/attachment.html>
More information about the webkit-dev
mailing list