「PHP」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
| 29行目: | 29行目: | ||
</pre> | </pre> | ||
</div> | </div> | ||
とすると、今日は2007年1月15日です。と表示される。 | とすると、今日は2007年1月15日です。と表示される。<br> | ||
適当なコードを書くと、XSS(クロスサイトスクリプティング)、ScriptInjection(スクリプトインジェクション)、SQLインジェクションなどの攻撃に対してリスクを抱えることになり危険。 | |||
<br> | |||
<br> | |||
注意すべきコード | |||
<dl> | |||
<dt><pre>$_SERVER['PHP_SELF']</pre></dt> | |||
<dd><pre>htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES)</pre>とするほうがいいらしい。 | |||
</dd> | |||
<dt><pre>$_REQUEST['hoge']</pre></dt> | |||
<dd><pre>$_GET['hoge'],$_POST['hoge'],$_COOKIE['hoge']</pre>などに限定しないと外部から変数を書き換えられる可能性あり</dd> | |||
<dt>バイナリセーフでない関数</dt> | |||
<dd> | |||
バイナリセーフでないとは文字列中にヌルバイトがあった場合、それ以降の文字列を読み込まないこと。 | |||
<pre>ereg_replace()</pre>などをサニタイジングに使うと危険。 | |||
</dd> | |||
<dd>ereg_replace(),eregi(),eregi_replace()</dd> | |||
<dd>split(),spliti()</dd> | |||
<dd>require(),require_once()</dd> | |||
<dd>include(),include_once()</dd> | |||
<dd>fopen(),file_get_contents(),readfile(),basename()</dd> | |||
</dl> | |||
</div> | </div> | ||
2007年2月6日 (火) 20:12時点における版
PHP(ピー・エイチ・ピー)は、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。
Hypertext Preprocessorの略。なんでこれを略してPHPになるのかは不明。
HTMLのソースの中に<?php ?>のタグを埋め込むことで動作させることができ、連携がやりやすい。
PEARというライブラリがありなにかと便利。
サンプルソース:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>PHPのテスト</title>
</head>
<body>
<?php
<h1>
print "今日は{date('Y'年'n'月'd'日)}です。
</h1>
<p></p>
?>
</body>
</html>
とすると、今日は2007年1月15日です。と表示される。
適当なコードを書くと、XSS(クロスサイトスクリプティング)、ScriptInjection(スクリプトインジェクション)、SQLインジェクションなどの攻撃に対してリスクを抱えることになり危険。
注意すべきコード
$_SERVER['PHP_SELF']
htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES)
とするほうがいいらしい。$_REQUEST['hoge']
$_GET['hoge'],$_POST['hoge'],$_COOKIE['hoge']
などに限定しないと外部から変数を書き換えられる可能性あり- バイナリセーフでない関数
-
バイナリセーフでないとは文字列中にヌルバイトがあった場合、それ以降の文字列を読み込まないこと。
ereg_replace()
などをサニタイジングに使うと危険。 - ereg_replace(),eregi(),eregi_replace()
- split(),spliti()
- require(),require_once()
- include(),include_once()
- fopen(),file_get_contents(),readfile(),basename()