PHP6からは unicode_encode() 関数と unicode_decode() 関数が追加されるらしいのですが、PHP5やPHP4でユニコードエスケープをしたい時のために。 // UTF-8文字列をUnicodeエスケープする。ただし英数字と記号はエスケープしない。 function unicode_decode($str) { return preg_replace_callback("/((?:[^\x09\x0A\x0D\x20-\x7E]{3})+)/", "decode_callback", $str); } function decode_callback($matches) { $char = mb_convert_encoding($matches[1], "UTF-16", "UTF-8"); $escaped = ""; for ($i = 0, $l =
SQL で LIKE 条件を使うとパターン一致検索が実行できます。 この時、'%'と'_'はそれぞれ任意の文字列、任意の1文字を表す特殊文字として扱われます。 したがって、'%'や'_'という文字を検索したい場合は、エスケープ文字を使用して、文字としての'%'、'_'であることを明示する必要があります。 例えば、COL1 に'_'を含む TBL1 のレコードを検索したい場合は以下のように記述します。 SELECT * FROM TBL1 WHERE COL1 LIKE '%\_%' ESCAPE '\' と、ここまでは SQL の常識です。 しかし、実はこの'%'と'_'、全角の'%'、'_'でもやはり特殊文字として認識されてしまうのです。 つまり、 SELECT * FROM TBL1 WHERE COL1 LIKE '%_%' と記述すると、”任意の1文字を含む”となりますので、Nul
SQLのエスケープと聞いてやってきましたよ。2008-07-10 - T.Teradaの日記から 例えば、「\%foo」から始まる文字列を検索する場合には、どのようなSQL文を書けばよいのでしょうか。 条件は以下の通りです。 1. DBMSソフトはMySQL 2. ESCAPE節は使わない 【中略】 「\%foo」から始まる文字列を検索するSQL文は、以下のようになります。 mysql> SELECT 123 FROM dual WHERE '\\%foo456' LIKE '\\\\\\%foo%'; MySQLの場合、文字列リテラルのエスケープとLIKE述語のワイルドカード(「%」、「_」)に対するエスケープの両方に「\」を使うので、こういうややこしいことになりますね。T.Teradaさんが書かれているように、以下のように考えるのがよいと思います。 LIKEに与える文字列のエスケープ処
補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブ、はてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2008年6月2日に公開されたもので、当時の徳丸の考えを示すものを、基本的に内容を変更せずにそのまま転載するものです。 補足終わり 昨日のエントリ(徳丸浩の日記 - そろそろSQLエスケープに関して一言いっとくか - SQLのエスケープ再考)は思いがけず多くの方に読んでいただいた。ありがとうございます。その中で高木浩光氏からブクマコメントを頂戴した。 \がescape用文字のDBで\のescapeが必須になる理由が明確に書かれてない。\'が与えられたとき'だけescapeすると…。自作escapeは危うい。「安全な…作り方」3版で追加の「3.失敗例」ではDBで用意されたescape機能しか推奨していない このうち、まず「\」のエスケープが必
補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブ、はてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2007年11月26日に公開されたもので、当時の徳丸の考えを示すものを、基本的に内容を変更せずにそのまま転載するものです。 補足終わり 本稿ではSQLインジェクション対策として、SQLのエスケープ処理の方法について検討する。 最近SQLインジェクション攻撃が猛威を振るっていることもあり、SQLインジェクションに対する解説記事が増えてきたようだが、対策方法については十分に書かれていないように感じる。非常に稀なケースの対応が不十分だと言っているのではない。ごく基本的なことが十分書かれていないと思うのだ。 SQLインジェクション対策には二通りある。バインド機構を使うものと、SQLのエスケープによるものだ。このうち、SQLのエスケープについて、十分
Notes No data is sent to the server (i.e. everything is done in JavaScript). Conversion from Unicode to other encodings such as Shift_JIS can be slow first time as it needs to initialize internal conversion tables. Surrogate pairs in UTF-16 are supported. Try inserting \uD840\uDC0B in the second form. Three-byte characters in EUC-JP are not supported. Links JavaScript Unicode Charts Try GNU Libidn
Description To json is almost only used for injecting object hashes into javascript. var client = <%= client.to_json %>; Because to_json does not escape its values, it's easy to construct a Cross Site Scripting exploit. If client has a name attribute, to_json will come up with something like: var client = {attributes: {name: "TEST"}}; If we change the name to say: TEST"}}; alert('XSS!!') ;a={{" we
http://d.hatena.ne.jp/hoshikuzu/20060130#P20060130BARSFAKE http://d.hatena.ne.jp/amachang/20071010/1192012056 (IT戦記 - 一行で IE の JavaScript を高速化する方法) はじめに 次のような限定されたケースにおいてなのですが。説明上の都合でこれを課題Aと呼ぶこととします。 <SCRIPT TYPE="text/javascript"> <!-- var strA = "$data"; // ・・・以下サイト運営者による処理記述例 alert(0); //--> </SCRIPT>上記のようなケースに限定してのオハナシですけれど、$dataをエスケープする方向でのXSS対策として金床さんなどによってかつて論議されて、このままでは使えそうにないと棄却されたJavaScr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く