如何防止表单提交过来的恶意JS脚本和SQL注入 ?
@JFinal 你好,想跟你请教个问题:
<form action="/blog/save" method="post"> <input name="blog.content" type="text"> <input value="提交" type="submit"> </form> public class BlogController extends Controller { public void save() { //如何防止 blog.content 提交过来的恶意JS脚本和SQL注入 ? getModel(Blog.class).save; } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
验证一下不就行了,然后全部按照字符串处理,正则表达式把一些特殊符号和关键字去掉或者替换。
1. XSS 攻击:对 form 提交的内容输出时进行 HTML Escape 处理
2. SQL 注入攻击: 使用 PreparedStatememnt
getModel(xxx).save()
是不会出现SQL注入的。内部实现是PrepareStatement实现输入插入到数据库。
其次,如果你要过滤XSS,建议你用JSOUP:
Blog blog = getModel(Blog.class);
String content = blog.getContent();
blog.setContent( Jsoup.clean(content,Whitelist.relaxed()) );// 清除白名单以外的HTML元素或者HTML属性
blog.save();
具体还得稍微研究下Jsoup吧,特别是Whitelist这个类,看看里面的定义。