タグ

2018年7月22日のブックマーク (8件)

  • 【PHP入門講座】 XSS攻撃への対策 - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。PHP を分かった気になって書いていた不正確な内容が多いため,過去の情報として参考程度にご覧ください。また,完成にたどり着けなかったことをお詫びします。原則的には,公式マニュアルの参照をおすすめします。 目次に戻る XSS(クロスサイトスクリプティング) 。JavaScriptを実行するコードを制作者の意図していない場所に埋め込む手法であって、PHPを使って実際にプログラミングをしていくうえで真っ先に考えなければいけないのがこの攻撃に対する対策です。 XSS攻撃が成功するまでの流れ TwitterがXSS攻撃への対策を怠っていたと仮定します。 1. 悪意のあるユーザーの下準備 悪意のあるユーザー(A)が <?php $s = serialize(@$_GET['cookie']); file_put_contents('./

    【PHP入門講座】 XSS攻撃への対策 - Qiita
  • サニタイズは絶対的な悪か?

    (Last Updated On: 2018年12月2日)いつも堅苦しく「こうするほうが良い」とばかり書いているので、たまには「あまり良くない」と言われているセキュリティ対策も、有用かつ必要である例を紹介します。サニタイズの話です。 サニタイズ(Sanitize)とは消毒、汚れた物を綺麗にする事を意味します。汚れた物、つまり悪い物を除去・変換して綺麗にする処理がサニタイズ処理と言われています。悪い物を定義し排除する典型的なブラックリスト型の処理です。ブラックリスト型の処理を行うと「悪い物」の指定に「漏れ」が発生しやすく、間違いの元なのでセキュリティ処理では基的に使わないことが推奨されています。 「サニタイズはするな!」これはほとんどの状況でサニタイズしない方が安全になる可能性が高くなるので正しいと言えます。しかし、これは全ての状況で正しいでしょうか? 銀行の勘定系システムの例 ますWeb

    サニタイズは絶対的な悪か?
  • 【PHP入門】改行コードの処理を行う方法(挿入/削除) | 侍エンジニアブログ

    PHPでは、ブラウザやコンソールでの表示に改行を挿入したり削除したりすることができます。 この記事では、 ・ブラウザ上で改行を挿入する方法 ・ソースコード上で改行を挿入する方法 ・改行を削除する関数を使用する方法 という基的な内容から、 ・PHP_EOLを使用して改行コードを指定する方法 などの応用的な使い方に関しても解説していきます。 今回はそんな改行コードの処理を行う方法について、わかりやすく解説します! 改行を挿入する PHPで改行を行うには、ブラウザ上で改行する方法と、ソースコード上で改行を行う方法があります。 ブラウザ上で改行する ここではブラウザに文字列を出力するときによく使用する、echoで改行コードを指定する方法について解説してきます。 ブラウザに文字列を出力するときはechoを使用しますが、以下のように連続してechoを指定しても、ブラウザ上では改行されずに1列で表示さ

    【PHP入門】改行コードの処理を行う方法(挿入/削除) | 侍エンジニアブログ
  • SQLインジェクション ④対策:サニタイジング(エスケープ)処理 : 情報処理安全確保支援士 - SE娘の剣 -

    (H18年SV午後Ⅰ問1表2より引用) これを丸暗記しようとすると難しいが、意味を理解すると覚えやすい。例えば「&」であれば、来の名称であるampersand、「<」であれば、less than(~より小さい)のltである。 セキュアプログラミングに関しては、IPAのサイトに充実した解説がされている。http://www.ipa.go.jp/security/awareness/vendor/programming/index.html 3.サニタイジング(エスケープ)処理の方法2 別の例を見ましょう。SQLインジェクション対策としてのエスケープ処理の具体的な処理としては、 ' を '' に変換します。サニタイジングをしない場合、UserNameに a' or '1'='1' と入力すると、データベース側では、 SELECT * FROM USER WHERE UserName = 'a

    SQLインジェクション ④対策:サニタイジング(エスケープ)処理 : 情報処理安全確保支援士 - SE娘の剣 -
  • 第20章 SQL インジェクション - Qiita

    <?php $sql = "SELECT * FROM Bugs WHERE bug_id = $bug_id"; $stmt = $pdo->query($sql); この時に$bug_idが整数などの意図通りの値なら良いが、 意図していないコードになりえる場合、 場合によってはインジェクションの攻撃対象となる。 アンチパターン : 未検証の入力をコードとして実行する 動的に挿入された文字列がクエリの構文を改変してしまう可能性がある。 ex) 先ほどの$bug_idの中身が1234; DELETE FROM Bugs;だった場合 クエリは以下のようになる

    第20章 SQL インジェクション - Qiita
  • 完全なSQLインジェクション対策

    (Last Updated On: 2018年12月14日)不完全なSQLインジェクション対策だけで、SQLインジェクション対策は万全、と誤解しているケースが少なくないです。 プリペアードクエリ/プレイスホルダを使ったSQLインジェクション対策でOK は誤りです。「とにかくプレイスホルダを使おう」では脆弱性は無くなりません。 簡単な証明:プリペアードクエリ”だけ”では、識別子(カラム/テーブル等)を使うソートクエリ、特定カラム抽出クエリを”原理的”に無害化できない。識別子のエスケープ/バリデーションが必須。(問題はコレだけはありません) 似たような間違いに「出力対策をするのがセキュリティ対策」だとする考え方があります。こういう考え方になる原因はセキュリティ設計や原則を理解していないことにあると思われます。 出力対策”のみ”のセキュリティはアンチプラクティス アンチプラクティスであっても正し

    完全なSQLインジェクション対策
  • PHPでのSQLインジェクション対策 - プレースホルダ編 | Let's POSTGRES

    第四企画 坂井 潔 SQLインジェクションの脅威からシステムを守るために、プログラミング言語/スクリプトからSQLを発行するときには、パラメータを適切に処理しなくてはなりません。今回はプレースホルダ編と題し、SQLインジェクション対策として最も簡単で効果的な方法を、PHPで説明します。 SQLインジェクションとは? まず「SQLインジェクション」とは何かおさらいしましょう。SQLインジェクションとは、アプリケーション(この場合はPHPスクリプト)に渡すパラメータの値を操作することで、元々は意図されていない処理をSQLとして実行させてしまうことです。 簡単な例をあげてみます。ユーザーから文字列「山田」が渡されたとき、以下のようなSELECT文を発行することにします。 SELECT * FROM users WHERE username LIKE '%山田太郎%'; ユーザーに入力された文字列

  • htmlファイルでphpを動かす 〜httpd.confの設定〜 - Qiita

    事前背景 今回は、ヘッダーやフッターなどをパーツ化したり、共通項をphp化したものをブラウザで表示することに加え、さらにseo的にも有利になるように(少なくても不利にならないように)どうすれば良いかを考え調べた内容です。 題目の通り、『.html』ファイルでphpを動かす設定をしただけですが、関連知識や調べた事をまとめてみました。 最後に『.htaccess』に書かかない理由についても触れてますが、基は、アパッチの設定ファイル『/etc/httpd/conf/httpd.conf』等に書くことを想定してます。 開発環境 php 7.0.13 Apache 2.4.6 CentOS 7.2.1511 Vagrant 1.8.1 ※フレームワークは使いません 『.html』のファイル内でphpを動かす httpd.conf内に下記を追加することで可能になります。 <IfModule mime

    htmlファイルでphpを動かす 〜httpd.confの設定〜 - Qiita