タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

URIとJavaScriptとprogrammingに関するraimon49のブックマーク (5)

  • PHPにはエスケープ関数が何種類もあるけど、できればエスケープしない方法が良い理由

    このエントリは、PHP Advent Calendar 2021 の20日目のエントリです。19日目は @takoba さんによる PHPプロジェクトのComposerパッケージをRenovateで定期アップデートする でした。 SQLインジェクションやクロスサイトスクリプティング(XSS)の対策を行う際には「エスケープ処理」をしましょうと言われますが、その割にPHP以外の言語ではあまりエスケープ処理の関数が用意されていなかったりします。それに比べてPHPはエスケープ処理の関数が非常に豊富です。これだけ見ても、PHPはなんてセキュアなんだ! と早とちりする人がいるかもしれませんが、しかし、他言語でエスケープ処理関数があまりないのはちゃんと理由があると思うのです。 稿では、PHPのエスケープ処理用の関数を紹介しながら、その利用目的と、その関数を使わないで済ませる方法を説明します。 SQL

    raimon49
    raimon49 2021/12/21
    そもそもエスケープ関数の使い方を意識しなければならない状況を避ける、という話。たしかに。
  • Extensible Web を支える低レベル API 群 - Block Rockin’ Codes

    Intro 最近 Extensible Web の話がたまに出るようになりましたが、なんというかレイヤの高い概念(ポエム)的な話が多い気がしてます。 もう少し具体的な API とか、「それコード書く上で何が変わるの?」って話があまりないので、今日はそこにフォーカスして、 Extensible Web 的な流れの中で整理された API の話をします。 しかし、実際には API が 「Extensible Web という理念で生まれたかどうか」は自明ではないので、 今標準化されている低レベルな API を拾い、それを整理するというエントリだと思ってもらと良いかもしれません。 あまり知られてない API もあると思うので、これを期に「これがあれば、今までできなかったアレが、標準化や実装を待たなくても、できるようになるな」と思ったら是非書いてみると良いと思います。 実際はそれこそが Extensi

    raimon49
    raimon49 2015/02/09
    multipart/form-data抽象化のFormData便利っぽい。
  • JavaScriptでリンク先URLがhttp/httpsか確認する方法 - 葉っぱ日記

    JavaScriptで動的にリンクを生成する際に、DOM-based XSSを防ぐためにリンク先がhttpあるいはhttpsに限定されていることを確認したい場合がある。典型的には以下のようなコードとなる。 var div, elm; // 変数 url は攻撃者がコントロール可能な文字列 if( url.match( /^https?:\/\// ) ){ div = document.getElementById( "info" ); elm = document.createElement( "a" ); elm.setAttribute( "href", url ); elm.appendChild( document.createTextNode( url ) ); div.appendChild( elm ); } この場合、変数urlに「http://example.jp」や「

    JavaScriptでリンク先URLがhttp/httpsか確認する方法 - 葉っぱ日記
    raimon49
    raimon49 2014/10/30
    DOMを信じてnew URL( url, location.href );相当のプロトコル判定。
  • [UserScript] ロケーション・ハックとは?: スーパーハッカーになりたい

    ロケーション・ハック (location hack) とは汎用ユーザー・スクリプトを開発する上で(残念ながら)ほぼ必須となる方法のことである。紹介元の記事は英語だが、対応する日語はなさそうなので、そのままカタカナにした。 ユーザー・スクリプトの通常の役割は DOM ツリーをいじることだが、場合によってはページ側で動いている JavaScript の動きを変更したい場合がある。変数の値を書き換えたり、ページ側で定義されている関数を呼んだりする場合だ。 残念ながら、これらは簡単にはできない。セキュリティ対策のため、サンドボックス (sandbox) と呼ばれる専用の環境でユーザー・スクリプトが実行され、コンテンツ・スコープ (content scope) で実行されているページ側のデータにアクセスできないようになっているからだ。 このあたりの実装はブラウザによって異なるので、主要ブラウザでテ

    raimon49
    raimon49 2012/04/21
    location.hrefへの代入でコンテンツ・スコープのwindow変数へアクセス。evalハックに近いものがある。これは思い付かなかった。
  • Backbone.jsを利用したクライアントサイドMVCの導入についてそろそろ書いておくか - 出町ミスド攻防記

    jQueryヘビーなアプリケーションの問題点と、MVCによる構造化の必要性 jQueryは、ブラウザ上で動くJSアプリケーションの開発生産性を劇的に向上させました。DOM操作による動的なページ書き換え処理などは、セレクタを使ってちょろっとコードを書くだけで、ほんの数行で記述できてしまいます。 しかし、この方法の延長で、大規模なJSアプリケーションを構築することは果たして現実的でしょうか。例えば「GMail」や「New Twitter」程度の規模のJSアプリケーションを書かなければならないとしたら、どうでしょう? 大規模なJSアプリケーションを開発するには、こういった手法を延長するのではなく、より洗練されたデザインパターンを導入する必要があります。この目的にぴったりのデザインパターンが、「MVC」デザインパターンです。 MVCパターンは、Webの世界ではサーバサイドプログラミングで広く知られ

    Backbone.jsを利用したクライアントサイドMVCの導入についてそろそろ書いておくか - 出町ミスド攻防記
    raimon49
    raimon49 2011/04/07
    クライアントサイドMVCフレームワークBackbone.jsにおけるMVCの考え方。サーバサイドテンプレートエンジンMustacheやクライアントサイドのDOM操作にjQueryといった組み合わせが相性が良い。Backbone.ControllerはURLフラグメントのルー
  • 1