在博客系统中,我正在将具有特定 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 或其他东西,有没有办法解决这个问题?