2014-09-02 3 views
0

Мне нужно загрузить URL-адрес, указанный пользователем, и отобразить div с моим контентом после содержимого данного веб-сайта.Показать содержимое с другого сайта и безопасность

Реализация этого было бы тривиально:

$c = file_get_contents($url); 
echo $c . $myDivCode; 

Однако, не это открыть свой сервер для всех видов проблем безопасности, таких как XSS?

Если да, то каким будет лучший способ справиться с этим с учетом того, что я хотел бы иметь возможность отображать содержимое данного URL-адреса, а также, возможно, (например, запускать все безопасные скрипты).

ответ

1

Лучший способ, вероятно, будет отображать сайт в IFRAME, как что:

echo "<iframe src=\"$url\"></iframe>"; 

Таким образом, пользователь загружает страницу непосредственно из URL, без вашего сервера проксировании его. Однако, поскольку вы показываете информацию с другого сайта, ваш сайт всегда будет уязвим для XSS, если вы полностью не удалите скрипты и HTML.

0

Конечно, вы открыты для эксплойтов xss.

Чтобы предотвратить атаки XSS, вам просто нужно проверить и проверить/удалить все данные, не разрешая вставлять код html или javascript из этого URL-адреса.

Используйте htmlspecialchars() для преобразования HTML-символов в объекты HTML. Таким образом, символы, такие как <>, которые отмечают начало/конец тега, превращаются в объекты html, и вы можете использовать strip_tags(), чтобы разрешать только некоторые теги, поскольку функция не выделяет вредные атрибуты, такие как onclick или onload.