大家谈谈一个简单的留言板需要考虑的安全问题 要做一个简单的留言板 功能很简单 打算全部用textbox实现 不用编辑器 然后在后台替换一下换行和空格就可以了在这里面都需要考虑哪些安全问题 以及该如何处理?比如说用户直接发布HTML代码 或者Javascript代码 等这些该如何应对?请高手指点!不胜感激! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以在用户发布的时候就把一些html的标记,js的常用的关键字替换掉,比如<>,</>,function,这样的 只有2点:1、插入数据库时,把单引号替换成2个单引号2、在前台显示的时候,调用Server.HtmlEncode你的问题就解决了。 调用Server.HtmlEncode那样的话 回车 换行 岂不是也被弄掉了?怎么解决? 用户输入什么,你就把什么存入数据库,原封不动(这样在出问题进行调试时也不用手动再去转换回原来的模样,否则你分不出哪个是你替换的,哪个是用户输入的)显示的时候,先HtmlEncode再替换回车和换行 用户输入什么,你就把什么存入数据库,原封不动 这个时候是不是先要把 "\n" 和" "替换成 对应的<br/>和" " 要不然的话存进数据库的时候肯定是不带空格和换行了不过要是这样的话 那读出来的时候HtmlEncode就又没有格式了按你说的再替换 那怎么替换? 不明白 麻烦你说具体点 第一、…… 第二、……谢谢! 只有2点: 1、插入数据库时,把单引号替换成2个单引号 这个不明白?防止注入攻击啊,用户输入一个单引号,你替换成2个单引号,这样存入数据库还是一个单引号,如果还不明白,去学习一下数据库基础知识吧。对于n多人说的替换关键字,纯粹是胡扯,那你的网站是不是关键字都不能发表了?2、在前台显示的时候,调用Server.HtmlEncode 正如我上面所说,用户输什么,就存什么进数据库,存入之前,什么操作也不做,是最好的,在显示的时候,再进行你说的那些替换操作。 这位已经说得非常清楚了!Server.HtmlEncode就是那些你存入数据的html代码如</br>这些,读取出 来的时候还是把它解析为HTML 过滤掉引号就行了! 屏js,html代码,屏sql敏感字,我能想到的就这些了 找到多个具有相同 ID“_header”的控件。FindControl 要求控件具有唯一的 ID 在前台aspx中怎么写更好? 哪位朋友能给我一个程序(在ASP.NET下如何使用NHibernate) 小白请教.net中调用第三方ocx的问题 关于.net的安全问题和回发问题 datagrid里面绑定dropdrowlist 如何获取当前页面的文件名? 服务器错误 500 - 内部服务器错误。 您查找的资源存在问题,因而无法显示。 关于GridView 中LinkButton 绑定问题 关于验证控件的问题,急,在线等待。。。。。。。。。。 动态添加文件夹 弱智问题
1、插入数据库时,把单引号替换成2个单引号
2、在前台显示的时候,调用Server.HtmlEncode你的问题就解决了。
那样的话 回车 换行 岂不是也被弄掉了?
怎么解决?
(这样在出问题进行调试时也不用手动再去转换回原来的模样,否则你分不出哪个是你替换的,哪个是用户输入的)显示的时候,先HtmlEncode
再替换回车和换行
按你说的再替换 那怎么替换?
不明白 麻烦你说具体点 第一、…… 第二、……
谢谢!
1、插入数据库时,把单引号替换成2个单引号
这个不明白?防止注入攻击啊,用户输入一个单引号,你替换成2个单引号,这样存入数据库还是一个单引号,如果还不明白,去学习一下数据库基础知识吧。
对于n多人说的替换关键字,纯粹是胡扯,那你的网站是不是关键字都不能发表了?2、在前台显示的时候,调用Server.HtmlEncode
正如我上面所说,用户输什么,就存什么进数据库,存入之前,什么操作也不做,是最好的,
在显示的时候,再进行你说的那些替换操作。