HTML特殊文字について ホームページ作成時、HTMLファイル内には「HTML」として特別な意味をもつ記号はそのまま表示されません。 例えば、「<(不等号)」はHTMLの開始タグと認識される為、HTML構造が崩れてページ全体として表示が崩れる場合があります。「半角スペース」はHTML上は無視される為に文字が詰まって表示されます。 このようなHTML特殊記号をホームページで表示させるには特殊文字に変換しておく必要があります。
このエントリは、PHP Advent Calendar 2021 の20日目のエントリです。19日目は @takoba さんによる PHPプロジェクトのComposerパッケージをRenovateで定期アップデートする でした。 SQLインジェクションやクロスサイトスクリプティング(XSS)の対策を行う際には「エスケープ処理」をしましょうと言われますが、その割にPHP以外の言語ではあまりエスケープ処理の関数が用意されていなかったりします。それに比べてPHPはエスケープ処理の関数が非常に豊富です。これだけ見ても、PHPはなんてセキュアなんだ! と早とちりする人がいるかもしれませんが、しかし、他言語でエスケープ処理関数があまりないのはちゃんと理由があると思うのです。 本稿では、PHPのエスケープ処理用の関数を紹介しながら、その利用目的と、その関数を使わないで済ませる方法を説明します。 SQL用
はてなブログのコードの表示に個人的になんとなく違和感があって、特にモバイル環境で見た時の折り返しが見難い。 どうにもこういうものは見た目をカスタマイズしたい願望があって、はてなブログはモバイルのデザインをカスタマイズできない*1のがどうにもつらい気持ちがあった。*2 ブログを始めた当初は自分でシンタックスハイライトを作ったりもしたんだけど、最近見たらおもくそバグってたのと、自動化できてないので投稿前に手動でマークアップ済みのHTMLを貼り付けて投稿するのが死ぬほど面倒臭かった。 そしてCoffeeScriptだRubyだSwiftだと徐々に他の言語にも手を出し始めると、いちいちやってられっかぁぁーーーって感じになった。 でも、見た目だけはいっちょ前に気になってしまうので、既存のもので何か良い物はないか探していたのであった。 確かこんなものがあったような気がするリスト SyntaxHighl
PHPで作成した文字列をjavascript上で使用したいときのエスケープ処理について。 ダブルクォーテーションやシングルクォーテーション、バックスラッシュ等をjavascript上で文字列として扱うにはエスケープが必要になる。 PHPのjson_encode関数は自動で文字列をjavascript用にエスケープしてくれるが、これは配列やオブジェクトにも使える関数で、前後に””が付いた形で出力される。 単に文字列として扱いたい場合前後のダブルクォーテーションは邪魔なのでそれを取り除いて返す関数を作成した。 最初のifはNULLを文字列の”null”で返さないようにするため。 function js_string($str){ if(!$str) $str = ''; $tmp = json_encode($str); preg_match('/^"(.*)"$/',$tmp,$m); re
(Last Updated On: 2023年12月8日) 追記:最近のOWASPガイドの更新でJavaScript文字列はUnicodeエンコードで安全性を確保するよう変更されました。元々このブログでもUnicodeエスケープのまま利用するように書いています。他の言語のユーザーはUnicodeエスケープを利用しましょう。PHPもASCII領域の文字をUnicodeエスケープするようにした方が良いと思います。これは提案して実現するように努力します。 JSONはJavaScriptのオブジェクトや配列を表現する方式でRFC 4627で定義されています。メディアタイプはapplication/json、ファイル拡張子はjsonと定義されています。 PHPにJSON形式のデータに変換するjson_encode関数とjson_decode関数をサポートしています。 JSON関数がサポートされている
PHP Advent Calendar 2012 11日目の記事です。 昨日は Shusuke Otomo さんの 初めて Pull Request した話。 #phpadvent2012 | slumbers でした。 皆さん、テンプレートエンジンは何を使ってますか? おおっぴらに使ってますと発言するのもちょっと勇気がいるくらい、スキル高そうなPHPerの皆さんからよくdisられている(ような気がする)Smartyですが、実際のところ現役のユーザーは結構いるんじゃないでしょうか。 (参考記事 PHP ユーザは実際はどんなテンプレートエンジンを使っているのか? (途中経過) - A Day in Serenity @ kenjis) 今回はそんなSmartyを題材に「テンプレート変数のHTMLエスケープ」と、それに関連する機能「修飾子プラグイン (Modifier Plugin)」「変数フ
"#"シャープの後ろに要素のid属性値を指定します。マッチする要素は0もしくは1個です。 id属性値に"."ピリオド、":"コロン、"[","]"ブラケットなどを含む場合は、"\"バックスラッシュでエスケープしてください。 参照:例2: 例 例1:id属性値が"id-yellow"の要素を選択し、背景を黄色にします。
PostgrSQL 9.0から追加されたエスケープ関数から、SQLインジェクション対策を再度解説してみたいと思います。 SQLインジェクション対策の4原則 基本的にはSQLインジェクション対策として以下の原則を守っていれば、SQLインジェクションに脆弱なアプリケーションを作ることはありません。 すべてのパラメータを文字列としてエスケープする すべてのパラメータをプリペアードクエリのパラメータとして処理する 文字エンコーディングの設定をAPIで行う パラメータとして処理できない文字列はバリデーションを行う 原則1と原則2は重複して適用する必要はありません。どちらかを行います。文字エンコーディングの設定やプリペアードクエリのエミュレーション・抽象化ライブラリのバグ等でSQLインジェクションが可能になる場合もありますが、通常であればこの原則を守っている限りSQLインジェクション脆弱性を作ることは
(Last Updated On: 2018年8月16日)追記:このエントリは古い情報です。今のHTMLエスケープの情報は以下の新しいエントリを参照してください。 PHPのHTMLエスケープ PHP_SELFはそのまま出力できないに htmspecialchars($str, ENT_QUOTES); じゃなくて、 htmspecialchars($str); で終わらせてしまった場合の、 問題例が非常に欲しいです!! とコメントを頂きました。 htmlspecialcharsとhtmlenties関数はENT_QUOTESを指定しないとENT_COMPAT(セキュリティ上問題があるが互換性を維持)が指定された状態と同じ動作をします。 ENT_QUOTESは”と’の両方をHTMLエンティティに変換するオプションです。ENT_COMPATは”のみHTMLエンティティに変換します。 JavaS
Days in programming, computing, studying, considering and enjoying
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く