ブログ システムで、特定の 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などを操作できるようにするには、これを回避する方法はありますか?