タグ

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

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

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

    raimon49
    raimon49 2021/12/21
    そもそもエスケープ関数の使い方を意識しなければならない状況を避ける、という話。たしかに。
  • 国税庁サイトのリニューアルへの反応を見て感じたこと,そして行動したこと|pchw

    こんにちは,ぽち@pchwです. 国税庁URL変換器 https://nta-go.com/ というものを今朝公開したのですが,その時に考えていたことをメモっておきます. 上記のサービスを作るきっかけになったのは,はてブのホットエントリーに 「はてなブックマーク - 国税庁サイト、リニューアルでほぼすべてのURLが変更。リダイレクトもなくユーザー阿鼻叫喚【やじうまWatch】 - INTERNET Watch http://b.hatena.ne.jp/entry/s/internet.watch.impress.co.jp/docs/yajiuma/1114712.html 」というエントリーが上がっていたのを見たことです. 記事を書いている時点で1000ブクマに届こうかという勢いです.内容を見ると,ひとことで言うと「これはひどい」ということを各々が言っているだけです. 最近「エンジニア

    国税庁サイトのリニューアルへの反応を見て感じたこと,そして行動したこと|pchw
    raimon49
    raimon49 2018/04/03
    行動を起こすに至るまでの思考の過程も素晴らしい。
  • Androidソースコードレビューで指摘する事が多い項目まとめ2 - こやまカニ大好き

    去年Androidソースコードレビューで指摘する事が多い項目まとめという記事を書いた時はアプリ全体を一度に見るような機会が多かったため、内容も大きめのものばかり書いていましたが、最近はプルリクエスト単位でレビューする機会が増えたので細かい項目についてまとめてみようと思います。 ミリ秒で時間を指定する時に自前で計算している 1000L * 60L * 60L * 24Lのようなコード。 TimeUnitを使いましょう。 24時間の場合は以下のように書けます。 TimeUnit.DAYS.toMillis(1L) ある文字列がhttp/httpsで始まるかチェック URLUtil.isNetworkUrl()を使いましょう。 ただしequalsIgnoreCaseで判定してます。 ベースURLにパラメータを付与していってURLを生成したい StringBuilder#append("&key=

    Androidソースコードレビューで指摘する事が多い項目まとめ2 - こやまカニ大好き
  • プログラミングスタイルガイドのスタイルガイド - Qiita

    文書は、プログラミング言語向けのスタイルガイドに向けたスタイルガイドである。 文書へのフィードバックはQiita上のコメントにて受け付ける。 構造 対象を明確にする そのスタイルガイドがどのような状況のどのような対象に向けたスタイルガイドであるか規定すること。 状況や対象は広すぎてはならない。 理由: 対象はスタイルガイド記述者には自明かもしれないが、似て非なる言語に誤用されたり、特定分野のアプリケーション向けスタイルガイドが他分野のアプリケーションを理不尽に拘束したりすることがある。これを防ぐべきである。 良い例: 「文書はRuby on Railsアプリケーション向けのスタイルガイドである」 「スタイルガイドはX社におけるRubyプロジェクトに適用すべきスタイルを規定する」 悪い例: (何も書かない) 「文書はX社におけるすべての開発に適用される ... 述語メソッドや述語関

    プログラミングスタイルガイドのスタイルガイド - Qiita
    raimon49
    raimon49 2015/08/26
    誰にとっても自明とは限らない慣習を明示するのは凄く大事だよね。
  • 便利クラス - NSURLComponentsとNSURLQueryItem

    Feb 12, 2015 先日気付いてしまった. iOS8に,こんなに便利なクラスが追加されていたとは・・・. iOS7は,NSStringのメソッドでパーセントエスケープを実行するとなぜかデフォルトだと&(アンバッサンド)をエスケープしてくれなくてブチ切れるという,妖怪不祥事案件で言う所のいわゆるクエリ付きのURLにきちんとアクセスできないというヤツを引きおこしていました. この二つの使い方は,至って簡単. まずは,URLの生成. NSURLQueryItem *item1 = [NSURLQueryItem queryItemWithName:@"key1" value:@"hoge"]; NSURLQueryItem *item2 = [NSURLQueryItem queryItemWithName:@"key2" value:@"あいうえお"]; NSURLComponents

    raimon49
    raimon49 2015/04/01
    NSURLQueryItemはiOS 8+
  • 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 );相当のプロトコル判定。
  • iOSで独自カスタムURLスキームを設定する方法について

    プログラミング (iOS, JavaScript, Jenkins, Sikuli) とMaciPhoneなどの話題が中心のブログ 前回の記事「iOSでカスタムURLスキームを利用してアプリケーションを起動する方法について」では、カスタムURLスキームを利用して他のアプリケーションを起動する方法について紹介しました。今回は自分のアプリケーションに独自のカスタムURLスキームを設定して、他のアプリケーションから利用可能にする方法について紹介します。 Info.plistへのエントリ作成 今回はカスタムURLスキームmySampleApp:を受け入れるサンプルアプリケーションとして、新規プロジェクトを作成します。プロジェクト名をCostomURLSchemeSampleとしてテンプレートはView-Based Applicationにします。 独自のカスタムURLスキームを設定するために、ア

    iOSで独自カスタムURLスキームを設定する方法について
    raimon49
    raimon49 2014/07/10
    メモリ外に追い出されてる時はapplication:didFinishLaunchingWithOptions:でYESを返した時のみapplication:handleOpenURL:が呼ばれる。通知受信系のハンドラとはこの辺ちょっと違うんだな。
  • java.net.URLをHashMapに突っ込むと大変なことになるのでやめろ、それどころかequalsを呼ぶだけでも大変なことに - TODESKING

    参照: http://stackoverflow.com/questions/2348399/why-does-java-net-urls-hashcode-resolve-the-host-to-an-ip 公式ドキュメントによると: public boolean equals(Object obj) … 2 つの URL オブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。 2 つのホストが等価と見なされるのは、両方のホスト名が同じ IP アドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字小文字に関係なくホスト名が等しいか、両方のホスト名が null に等しい場合です。 ホスト比較には名前解決が必要なので、この操作はブロック操作です。 java.net.URL#equals

    raimon49
    raimon49 2014/06/10
    equals()もhashCode()も名前解決を行うある意味で厳密というか罠仕様。
  • コードレビュー - hitode909の日記

    コードレビュー,慣れるとできるけど,いきなりdiffを渡されて,どうぞ見てくださいと言われてもよくわからないと思う. やりましょうというのはいいけど,ただむやみに読んでもうまくいかない.変更がある程度大きくなるとdiffだけ見てもよくわからないので,いろいろ見ることになる. 僕はいつも以下のようなことを無意識にやってて,うまくいってる気がしてる.GitHubのPull Requestの仕組みを使ってる前提で. Discussionをさらっと眺めてどういう問題を解決したいのか見る Commit Statusを見て,テスト通ってることを確認する Commitsタブで1コミットずつブラウザの新しいタブに開く 全部クリックし終わったら古い順に1コミットずつ読む 気になる点があったらエディタとかにメモしておく.あとで書き直されるかもしれないので,まだコメントしない 全コミット見終わったらFiles

    コードレビュー - hitode909の日記
  • [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