karlley's tech blog

学習メモや記録とか

セキュリティ

PostgreSQLのSQLインジェクションの対策

前回の記事ではPostgreSQLを使ったSinatraのメモアプリにSQLインジェクション攻撃ができることを確認したので、その対策について調べてみました。 環境 今回紹介するSQLインジェクションの対策は下記の環境で行いました。 DB: PostgreSQL フレームワーク: Si…

静的プレースホルダと動的プレースホルダの違い

静的プレースホルダと動的プレースホルダの違いが分からなかったので調べました。 結論 静的プレースホルダと動的プレースホルダは次のような違いがある。 静的プレースホルダ: SQL組み立てをDB側で行う 動的プレースホルダ: SQL組み立てをアプリ側で行う 他…

pg gem のexec系メソッドの使い分け

Sinatraのメモアプリでpg gemを使う機会がありました。 DBにSQLを実行するexec ~ 系のメソッドの選択に迷ったので調べてみました。 結論 exec、exec_params、exec_prepared の3つのメソッドは次のように使い分ける。 exec: 単純にSQLを実行したい。 exec_par…

SQLインジェクションを試してみる

SinatraのDB版のメモアプリの終了条件に「SQLインジェクションへの対策」が含まれていたのでSQLインジェクションできるのか実際に試してみました。 SQLインジェクションとは? 引数などのパラメタにSQL文を混ぜ込んでおき(インジェクション),プログラム内…

ディレクトリ・トラバーサルとは

Sinatraのメモアプリのプルリクでディレクトリ・トラバーサルの危険性があると指摘されました。 初めて聞く言葉だったのでディレクトリ・トラバーサルについて調べました。 結論 ウェブアプリケーションの中には、外部からのパラメータにウェブサーバ内のフ…

XSSとその対策

Sinatraのメモアプリの終了条件であるXSS対策について調べました。 結論 文字コード指定とエスケープ(サニタイジング)を行うとXSS対策できる XSSとは 悪意あるクライアントサイドのコードをウェブサイトに挿入するセキュリティ攻撃です。 引用: Cross-site s…