タイプ: | enum |
デフォルト: | safe_encoding |
コンテキスト: | user |
再起動: | false |
値: | [safe_encoding, on, off] |
文字列リテラルの中で引用符が\'
で表現されるかどうかを管理します。 引用符の表現としてSQL準拠の方式では二重化(''
)ですが、PostgreSQLは歴史的に\'
も受け付けます。 とは言っても、いくつかのクライアント文字集合符号化方式において、最終バイトが数値的にASCIIの\
に等しいマルチバイト文字があり、\'
を使用するとセキュリティ上問題を引き起こす可能性があります。 クライアント側のコードが事実上エスケープを正しく扱わない場合、SQLインジェクション攻撃が可能になります。この危険性の回避は、サーバが逆スラッシュでエスケープされた引用符を含む問い合わせを拒絶するようにします。 許可されるbackslash_quote
の値は、 on
(常に \'
を許可), off
(常に拒否)、および safe_encoding
(クライアント符号化方式がASCIIの\
を許可しないときのみ、マルチバイト文字内で許可)。 safe_encoding
がデフォルトの設定。
標準に従った文字列リテラルでは、\
は単に\
を意味するものです。このパラメータのみが、エスケープ文字列構文(E'...'
)を含む標準に従わないリテラルの取り扱いに影響します。
推奨事項 [EN]
If you have cleaned up your application code, you can set this to 'off' to help lock down the database. Older PHP applications will require the insecure setting of 'on'.