前几天在QQ群里聊到了这个小项目,博主花了两周时间码代码而成,颇有些小骄傲。结果当博主发出测试连接后,镜鑫学长10s攻破了首页。
于是博主打算在这个安静的下午采取一些防御措施。
首先分析一下镜鑫学长的攻击方式,xss攻击和sql注入。
他通过Js脚本实现了隐藏首页内容,如果是恶意攻击,js还可以控制用户浏览器,后果不堪设想啊。
再就是注入sql了(镜鑫学长只是提到,并没有行动,十分感谢^)
其实这两种方式思路大致相同,通过网站的上传模块(客户端与服务端的交互模块)上传一些非法内容,从而造成破坏。
那么,哪里有这些模块呢?注册、登录、回帖、发帖。
暂时就这几个。
注册这里,我首先使用了正则表达式对用户输入内容进行了限制。
限制包括输入字符限制、位数限制。
回帖、发帖这里,我查了下PHP手册,发现有两个函数挺好用。
Htmlspecialchars(字符串,模式,编码)
作用:将特殊字符,比如说单引号,转换为''' 可以用来防止用户输入sql语句
Htmlentities(字符串,模式,编码)
作用:不翻译html代码,按照源代码输出 防止js代码生效
用这两个函数处理输入数据后,具有攻击性的代码就完全失效啦。