(Last Updated On: 2018年8月24日)昨日のブログでは.NETにはSQLのエスケープAPIが無いので、セキュリティ対策として本末転倒な状態になっている事を紹介しました。もう一つXPath 1.0の失敗例を紹介します。 XPath 1.0の定義にはエスケープが定義されていません。参考:XPathクエリ(1) XPath 1.0のリテラル定義(3.7 Lexical Structure) Literal ::= ‘”‘ [^”]* ‘”‘ | “‘” [^’]* “‘” 文字リテラルの定義はコレだけです。つまり文字列は ‘ (シングルクオート) または ”(ダブルクォート) で囲み、それぞれ ‘ と ” が現れてはならない、としか定義されておらずエスケープ処理が定義されていません。 恐らくXPath 1.0を定義した方たちは「エスケープは悪!エスケープは無い方が良い」と考え
![エスケープを無くせばOK、と勘違いして失敗した事例 XPath 1.0](https://cdn-ak-scissors.b.st-hatena.com/image/square/9d2015857e00558eb990db2db4a4490aa83e71f0/height=288;version=1;width=512/https%3A%2F%2Fblog.ohgaki.net%2Fwp-content%2Fuploads%2F2013%2F11%2Fcropped-blog_header-2.jpg)