【PHP】質問スレッドpart24【php】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
04/11/01 04:09:15ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0910nobodyさん
04/11/20 12:04:58ID:???建設的だったぽい
0911nobodyさん
04/11/20 12:25:13ID:???0912nobodyさん
04/11/20 12:37:14ID:VmPsi8L8FROM user
WHERE username = '$username' AND password = '$password'", $con);
$row = mysql_numrows($result);
if($row != "0"){
上みたいな感じで会員制サイト作る際のログイン基準作ってるんですが、
セキュリティ的にこれで大丈夫ですかね?
あまりにシンプル過ぎてカナーリ心配なのですが・・・
ご指摘求みます
0913nobodyさん
04/11/20 12:56:28ID:???そんなコード書いてたら俺みたいなスーパーハカーに簡単に全ユーザの
パスワードを盗まれちゃうよ。
クロスサイトスクリプティングとかサニタイジングでググッてみれ。
0914nobodyさん
04/11/20 13:00:12ID:???ここに
・・・・; drop・・・
0915912
04/11/20 13:12:09ID:VmPsi8L8上の例でなぜCSSが問題になるのかよく分からないのですが?
username と password に入力制限するだけでは駄目なのでしょうか?
0916912
04/11/20 13:14:06ID:???0917nobodyさん
04/11/20 13:15:08ID:???0920912
04/11/20 13:20:50ID:???分かりませんです。
一応XSSについては気をつけていたつもりなのですが。
サニタイジングって無効化するやつですよね。
上記の例で何を無効化すべきなのか分かりません。
username と passwordですか?
914さんの発言を見ると、passwordの入力フォームで
ある内容を入力されるとパスワードがdropできちゃうってことですかね?
0921912
04/11/20 13:22:59ID:???4行目でrow=0に上書きされるはずですよね・・・
0922nobodyさん
04/11/20 13:34:06ID:???0924nobodyさん
04/11/20 13:45:53ID:???0925912
04/11/20 13:51:16ID:???名前入力とかはXSS気をつけてたんですが、
最も重要なポイントをサニタイジングするのを忘れてるようですね汗。
ありがとうございました。
0926nobodyさん
04/11/20 14:00:19ID:???0927nobodyさん
04/11/20 14:19:42ID:???$b=3(ヶ月)
$aに$bを足して、
$a=2005/02/25としたいのですが、
方法がよく分かりません。
$a=strtotime($a);
$a=mktime (0,0,0,date("m", $a)+$b, date("d", $a), date("Y", $a));
として02/25の部分はなんとかできたと思うのですが、
2004を2005にするにはどうすればいいでしょうか?
ご教授くださいませ
0928nobodyさん
04/11/20 14:37:13ID:???list($y,$m,$d) = explode("/", $a);
$a = date("Y/m/d", mktime(0.0.0. $m+$b, $d, $y));
$a = strtotime('2004/11/25 + 3 Month');
とかも書ける。"for($i=0;$i<20;$i++);"ぐらいの時間かかるけど。
下ので様子を見てみるといい
echo date('Y/m/d', strtotime('2004/11/25 + 3 Month'));
0930nobodyさん
04/11/20 15:58:54ID:mKhjN6bd何もせずに戻り値だけ0を返すような物はどう書いたらいいでしょうか?
これkだえだとどうもダメだったので、教えてください。
#!/usr/bin/php
<?
?>
0931nobodyさん
04/11/20 16:06:16ID:???0933nobodyさん
04/11/20 16:11:55ID:???それをfileで他の鯖から読み込んで中継にしてる香具師は俺くらいか
0935nobodyさん
04/11/20 17:10:44ID:???0936nobodyさん
04/11/20 17:36:08ID:???0938nobodyさん
04/11/20 17:57:03ID:???↓レス番1桁目 ↓時刻の秒1桁目
1 妹の前で 1 愛を叫ぶ
2 自分の部屋で 2 「ごきげんよう お姉さま」と言う
3 体育倉庫で 3 一人で手淫
4 姉の前でに 4 美少女とSEXする
5 地元の小学校で 5 運命の美少女と出会う
6 クリスマスに 6 首吊り
7 親の前で 7 掘られる
8 トイレで 8 谷亮子でオナニー
9 好きな子の前で 9 練炭で自殺
0 2ちゃんねるで 0 2ちゃんねる引退
0942nobodyさん
04/11/20 18:44:51ID:???あれだけしか出してこなくて『これで大丈夫ですかね?』って聞いてるんだから対策してないと考えるのが妥当でしょ。
だってaddslashesとかやってたらそのコードも書くっしょ。
0943nobodyさん
04/11/20 19:08:46ID:???>>924
これ、本当に成功します?
いろいろ試してみたけどmysql_queryに2文入れられないみたいだし・・、シングルクォーテーションをエスケープしてたら絶対無理そうだし
0944nobodyさん
04/11/20 19:15:04ID:???PHP のソースコード内の信頼性を言ってるんじゃないか?
C言語でファイルシステムの fcntl(UNIX) か LockFileEx(Win32) を呼んでるルーチンがあるところ。
0945nobodyさん
04/11/20 21:22:29ID:???0946nobodyさん
04/11/20 21:24:51ID:???>シングルクォーテーションをエスケープしてたら絶対無理そうだし
912のソースからそういう想定をするのは無意味。
出された情報が少ないんだから、一般論で答えるしかないだろ。
少なくとも書いてないことまで補って妄想するよりまし。
今回は912にも思い当たることがあったみたいだからいいじゃんよ。
0947nobodyさん
04/11/20 23:00:29ID:???int型でシングルクォーテーションつかってない部分でもできませんでした。
912のソースのような部分が私のスクリプトにもあって、それで本当にどうなのか知りたかったのです。
自分のスクリプトでいろいろ試したのですが抜け穴なかなか見つけられなくて
0949nobodyさん
04/11/20 23:06:18ID:???だれかおしえてくり
0950nobodyさん
04/11/20 23:08:27ID:???まあ確かに、どこまでやれば大丈夫かということに不安になる気持ちも分かる。
とりあえず下記のURLでも読んで、じっくり考えてみて。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a01_02_main.html
0951nobodyさん
04/11/20 23:17:11ID:???移動しろ
△▲ WebProg 初心者の質問 Part10 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1095633323/
0953949
04/11/20 23:26:25ID:???0954nobodyさん
04/11/20 23:26:53ID:???0955nobodyさん
04/11/21 02:52:46ID:???phpinfo(); の内容がすぐにわかってしまうのは
セキュリティ上、まずくはないんでしょうか?
0957nobodyさん
04/11/21 05:41:12ID:???perlで作ったスクリプトで覗けてしまう無料レンタルサーバはよくあるな。
0958nobodyさん
04/11/21 08:53:49ID:???0959nobodyさん
04/11/21 13:01:17ID:mw841Fe0RedHat9
PHP4
にmime_magic_moduleが
入っている環境なのですが、
以下のソースの中で、mime-type: text/htmlのときに表示させるように
したいのですが、具体的なmime_magicの使い方がわからず困っています。
具体的にどうすればよいのかお教えください。
$cd = $_REQUEST['path'];
$dirname = "/home/hoge/public_html$cd/";
$dh = dir($dirname);
while ($entry = $dh->read()){
if($entry != "index.html"){
print $entry;
}
}
よろしくお願いいたします。
0961nobodyさん
04/11/21 17:17:27ID:???0964nobodyさん
04/11/21 19:58:14ID:???もっとも効率のいい方法ってどんな感じですか?
whileで回しながら一行ずつチェックするのは
最後のほうに目的の行があった場合、時間がかかって困ってます。
データベース使わずになんとかならないでしょうか。
0965nobodyさん
04/11/21 20:10:43ID:???名前ならaから始まるのはここ、bから始まるのはここという情報を記憶するみたいな
0966nobodyさん
04/11/21 20:14:35ID:???0967959
04/11/21 21:53:54ID:mw841Fe0maime_magic以外にも、ファイルの形式を判断できる方法があれば、
そちらも教えていただきたいのですが、よろしくお願いします。
うざくて申し訳ないです。
0969nobodyさん
04/11/21 23:48:46ID:???データの中身が「ソ\」になってしまいます。
なので「ソ\」の後ろから「\」をとりたいのですが
上手に正規表現を組めません。
パターン構文のサイトを見て試行錯誤したのですが上手にできません。
どのようにすればいいか教えてください。
foreach ($src_list as $i => $v)
$v = ereg_replace ("ソ\\\", "ソ\", $v);
0970nobodyさん
04/11/21 23:52:50ID:???それはエスケープされているわけだが「ー」「表」なども同様の副作用が生じる。
エスケープと逆の事をする関数を使え。
0971nobodyさん
04/11/21 23:55:03ID:???その\と逆の事をする関数を探します。ラジャ
0972nobodyさん
04/11/21 23:57:06ID:???.htaccessに「php_flag magic_quotes_gpc Off」って書いとけば無問題
そして必要なところでは自分でエスケープすればいい
0974nobodyさん
04/11/22 00:57:12ID:ui2dUAYs文字列"a1"から$a1を作り出す(読み出す)ことってできるのでしょうか。
JavaScriptやVBAなら文字列→変数に変換できるので、PHPでも同じことが
できるだろうと調べてみたものの見つからず。。
よろしくお願いします。
0975nobodyさん
04/11/22 01:11:21ID:???可変変数のことでしょうか?
$a["sample"] = "ほげほげ";
$name = "sample";
echo $a[$name];
−−−−−−−−−
出力結果:
ほげほげ
0977nobodyさん
04/11/22 01:18:51ID:???即レスありがとうございます!関数も使わずこんな簡単にできるんですね・・・
いやお恥ずかしい・・・。ありがとうございました。 <(_ _)>
0978nobodyさん
04/11/22 01:21:05ID:???0985nobodyさん
04/11/22 02:49:41ID:???ヾヽ!lV/ / ,/ / ,' ハ、: .
,ィニ≧ゝレ' / / ,./ / , ハ : : .
く<-‐7´ _」] l l/_,∠/ / / / い : : .
 ̄ノ/: :f r'l l /レ'/、_/‐ト'、/l| li l : : : : .
. : {ハ : :|{(l|y==ミ _ノ、/ソリ ll | : : : : :
: : : :ヽヽ: :|、lハl、゙ ⌒ヾlノリ ll l : : : : : :
: : : : : : : : V\ヽ、 `ー ゛ノルんイリノ : : : : : :
: : : : : : : : : ,.--、_ハ`−r=ニ--、′ノ. : : : : : : :
: : : : : : : : / /-ョロ'ヲ´ i l : : : : : : : : : :
: : : : : : : 〈 ,ハフ'兀「 ! } : : : : : : : : :
: : : : : : : : ヽ, ト{‐lハ. ヽ ' ノ : : : : : : : :
0986nobodyさん
04/11/22 02:52:12ID:???あーあ・・・・
_,,..,,,,_
./ ゚ 3 `ヽーっ
l ゚ ll ⊃ ⌒_つ
`'ー---‐'''''"
0990nobodyさん
04/11/22 10:59:02ID:???0991nobodyさん
04/11/22 12:07:22ID:5v0Qpc9vどうするのがよいのでしょう。
通常の関数でエラー発生時は、falseを返すようにしてたのですが、
コンストラクタで、 return false とやっても、
普通にオブジェクトができてしまうみたいで。
0992991
04/11/22 12:09:01ID:???0993nobodyさん
04/11/22 12:09:19ID:???ぼくでもわかるほんがあったらおしえてちょーだい*^^*
0995nobodyさん
04/11/22 12:38:40ID:???どうすれば「良い」かはわかりませんが、
・オブジェクトを呼び出す前にチェックする
・引数をチェックする関数を実装して、コンストラクタから呼び出す
くらいでしょうか。
0996nobodyさん
04/11/22 14:24:59ID:???・コンストラクタは空にして、別に初期化用のメンバ関数を追加する
class A {
function A() {}
function init(...) { return /*初期化*/; }
}
$a = new A();
if (!$a->init()) { ... }
・エラーチェック用のメンバ変数とエラーチェック用のメンバ関数を追加する
class A {
var $err = 0;
function A(...) { if (!/*初期化*/){ $this->err = /*エラー番号など*/; } }
function get_error() { return $this->err; }
}
$a = new A(...);
if ($a->get_error() != 0) { ... }
・こういうのが嫌なら、PHP5に移行して例外処理で。
0997991
04/11/22 14:39:17ID:???ありがと。
でも、ちょっと違うような気がする。
別方面で、$this = false;
ってやればいいと知ったので、それでいくことにします。
ほんとは、PEARのエラーオブジェクトを返すといいそうです。
0998nobodyさん
04/11/22 15:16:31ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。