我是在dvwa(Damn Vulnerable Web App)上学到的这些东西,我把dvwa安装在了我的免费空间上,有兴趣的可以看看。DVWA
想要用户名和密码的可以联系我:sq371426@163.com
dvwa 用的验证是google提供的,详情见google CAPCTHE
跨站脚本攻击就是用户在类似留言本上发布html/js代码,当浏览此留言时,脚本就会执行。
我们来看完全没有防御的代码
<?php if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){ $isempty = true; } else { echo ' <pre>'; echo 'Hello ' . $_GET['name']; echo '</pre> '; } ?>
对数据直接输出,如果用户发布”
<script> alert('楼主是SB'); <script>
,就惨烈 了。
下面代码修复了这个漏斗
<?php if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){ $isempty = true; } else { echo ' <pre>'; echo 'Hello ' . str_replace('<script>', '', $_GET['name']); echo '</pre> '; } ?>
用str_replace将html标签替换掉,这样就可以有效防止xss攻击了。可是用户就是要发布script呢?
我们来看下面这段代码
<?php if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){ $isempty = true; } else { echo ' <pre>'; echo 'Hello ' . htmlspecialchars($_GET['name']); echo '</pre> '; } ?>
用htmlspecialchars($_GET[‘name’]),这样就可以将html标签当做文本输出了。
"<script> alert('楼主是SB'); <script>
建议使用bae和sae,空间现在不兴了
建议使用bae和sae,空间现在不兴了
可是bae和sae有限制
支持你加分