-2

ブログ システムで、特定の URL の画像を iframe に変換しています。これもjavascriptを生成しますが、これが本当に安全かどうかはわかりません. だからここで私を助けてください。

preg_match_all('~<img src="http://the-image.jpg" ([^>]+)>~i', $blog_entry, $matches);
        $iframe = array();
        foreach ($matches[1] as $str) {
            preg_match_all('~([a-z]([a-z0-9]*)?)=("|\')(.*?)("|\')~is', $str, $pairs);
            $iframe[] = array_combine($pairs[1], $pairs[4]);
        }

$iframe_width = htmlspecialchars($iframe['0']['width']);
        $iframe_src = mysql_real_escape_string($iframe['0']['alt']);
        $iframe_id = htmlspecialchars($iframe['0']['border']);
        $iframe_width = strip_tags($iframe_width);
        $iframe_src = strip_tags($iframe_src);
        $iframe_id = strip_tags($iframe_id);

        $t_blog_entry = preg_replace('~<img src="http://the-image.jpg" ([^>]+)>~i','<iframe src="'. $iframe_src .'" scrolling="no" frameborder="0" width="'. $iframe_width .'" height="0" style="border:none; overflow:hidden;" allowTransparency="true" id="'. $iframe_id .'-iframe"></iframe>',$blog_entry);

これにより、次のような JavaScript も生成されます。

<script type="text/javascript">
        $(document).ready(function() {
            $.getJSON("http://api.votelr.com/api-height.php?id=<?php echo ''. $votelr_id .''; ?>&callback=?", function(datavotelr){
                $('#<?php echo ''. addslashes($votelr_id) .''; ?>-iframe').css('height', datavotelr);
            });
        });

多分私はここで狂っており、これは完全に安全ではありませんか? ユーザーが何らかの方法でJavaScriptなどを操作できるようにするには、これを回避する方法はありますか?

4

1 に答える 1

1

mysql_real_escape_string が機能するには、mysql 接続が必要です。
htmlspecialchars には htmlentities と同じ効果はありません。後者の方が優れていると思います。

int 型であれば何でも
$id = (int) $value_int; をキャスト します。

ただし、画像を iframe 内に変換するだけの場合は、javascript のみを使用でき、php は必要ありません。要素 iframe を作成し、img タグをそれに「追加」します。

于 2012-05-02T14:00:41.090 に答える