我正在创建一个非常基本的iPhone模拟器,我想要做的就是将它放在一个位置,然后我们拥有并希望将它放在任何网站上,我们只需使用它来调用它:{{3} }
有什么我需要注意的可能是不安全的吗?没有涉及数据库或任何东西,但是为了防止有人想要乱七八糟地把一些东西放在URL中,我可以做些什么来帮助使它更安全?
这是我的代码:
<?php
if(isset($_GET['url'])) {
$url = $_GET['url'];
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>iPhone Test</title>
<style type="text/css">
#iphone {
background:url(iPhone.png) no-repeat;
width:368px; height:706px;
position:relative;
overflow:hidden;
}
#iphone iframe {
position:absolute;
left:30px;
top:143px;
border:0;overflow:hidden;
}
</style>
</head>
<body>
<div id="iphone">
<iframe src="<?=$url;?>" width="307" height="443"><p>Your Browser does not support iFrames.</p></iframe>
</div>
</body>
</html>
<?php
}
?>
修改:感谢您的所有帮助。我做了一些研究,这是我到目前为止所做的:
<?php
include_once 'filter.php';
$filter = new InputFilter();
if(isset($_GET['url'])) {
if (filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
$url = $filter->process($_GET['url']);
?>
来源:http://www.example.com/iphone-test.php?url=http://www.example.com/mobile/
课程:http://oozman.com/php-tutorials/avoid-cross-site-scripting-attacks-in-php/
您怎么看?
答案 0 :(得分:4)
您应该使用PHP的filter_var
来检查它是否有效......
if (isset($_GET['url'])) {
if (filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
$url = $_GET['url'];
}
}
答案 1 :(得分:3)
如果任何人都可以访问此页面,那么您可以自行开启XSS和Phishing重定向。例如,尝试将此添加到您的网址参数:
?url="></iframe><script>alert(123)</script>
在Firefox 6.02中触发警报。这意味着任何JS都可以被解雇并用于重定向认为他们正在访问您网站的用户。或者它可以用于窃取未标记为HTTPOnly的cookie。
这可以通过编码HTML属性来缓解。这是从OWASP中描述的:
除了字母数字字符外,使用&amp; #xHH转义ASCII值小于256的所有字符;格式(或命名实体,如果可用),以防止切换出属性。这条规则如此广泛的原因是开发人员经常将属性置于不引用状态。适当引用的属性只能使用相应的引用进行转义。不带引号的属性可以用许多字符来分解,包括[space]%* +, - /; &LT; =&gt; ^和|。
现在,针对您的其他问题,上述内容将无法解决。如果您只允许输入任意URL,那么没有什么能阻止某人做这样的事情:
?url=http://myevilsite.com/redirect.php
让该页面重定向用户:
window.top.location.href = "http://www.site.com";
您唯一能做的就是使用可接受的URL白名单。
答案 2 :(得分:2)
The request method does not provide any securiy features, please see this answer
您需要100%确定您的代码不会使用javascript劫持该框架或将该人引导至恶意域,或者导致您的页面上的请求表单执行他们不想要的操作。< / p>
You can see some examples out here of that:
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>
<iframe src=http://ha.ckers.org/scriptlet.html"></IFRAME>
You could have the person lead to post something as well...
无论如何,我可以窃取你所有的cookies,或诱骗用户认为他们仍然在你的网站上,但我真的在我的网站上获取他们所有宝贵的信息。
停下来,在你继续前行之前,你需要知道自己在做什么,and you start by reading this。
答案 3 :(得分:1)
您很容易受到cross site scripting的攻击。</ p>
所有人必须做的是在网址中加入"></iframe><script>EEEEVVvvvillll!!!!
,或使用非HTTP / HTTPS URI。
答案 4 :(得分:1)
以下是此处涉及的安全问题列表..
IFrames安全摘要
2007年10月24日星期三我决定收集各种证据 我已经完成的概念,并总结了为什么iframe存在安全风险。 以下是主要原因: -
- 浏览器跨域漏洞利用
醇>说明: - 因为您可以在页面中嵌入其他网站, 您可以利用该页面并按该用户执行操作 所选网站上的任何内容。
概念证明: - Safari beta 3.03零日
- XSS / CSRF反射攻击
醇>说明: - 使用嵌入到受感染网站的iframe 然后攻击者可以将攻击反映到其他服务器上 攻击难以追踪并具有重点进行 攻击。
概念证明: - 没有可用于这种类型的攻击 在没有实际进行攻击的情况下很难显示该方法。
- CSS和iframe可以从互联网上扫描您的局域网!
醇>描述: - 利用CSS中的功能并使用iframe进行检查 如果存在默认IP地址,则可以获得您的网络 地址范围很容易提供网络设备使用 默认开箱即用的IP地址。
概念证明: - CSS局域网扫描仪
- 使用Javascript和iframe进行局域网扫描
醇>描述: - 使用与上面类似的方法可以获得 您的局域网信息使用Javascript。
概念证明: - Javascript LAN扫描仪
- CSS iframe叠加
醇>说明: - 在Firefox和Firefox中,iframe可以互相嵌入 您可以改变它们的外观,以创建任何无缝叠加 现场。这将使用户很难知道哪个站点 他们正在与他们互动并欺骗他们采取行动。
概念证明: - Verisign OpenID漏洞利用(现已修复)
- 网址重定向
醇>说明: - iframe还允许您执行重定向,以便您可以 可以访问通常无法访问的URL。在里面 美味的例子,POC从美味/家庭重定向到您的 帐户书签,然后使用CSS叠加显示您的第一个 书签。 POC需要Firefox和一个美味的帐户。
概念证明: - 美味的CSS覆盖/重定向
你可以通过像代理一样工作,在PHP中加载请求的URL,从HTML中删除所有内容(javascript等),然后在指向服务器上的网页的iframe中显示它,这样可以使它更安全
答案 5 :(得分:0)
只需使用strip_tags()
即可废除任何邪恶的脚本条目:
$url = strip_tags($_GET['url'])