关于表单项更新检测,后台按需更新 本帖最后由 crying_boy 于 2012-09-13 00:13:51 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 严不严谨自己从逻辑上仔细想想不就清楚了?如果输入都进行验证了的话是不会有问题,否没有验证的话,可能有以下问题:1.空字符串,如果数据库需要数值类型数据,空字符串默认转换为数值是会失败的,语句将失败2.单引号,单引号在sql语句中表示字符串,如果字符串本身包括单引号,会提前结束字符串导致语句错误其他暂时没想到,sql关键字的话由于在单引号内该没有问题。除了代码逻辑问题,还有的就是安全问题了,有严重安全隐患直接将前台一个字符串作为sql语句,这个太危险了,要知道前台的值都是可以通过调试工具或者地址栏js注入任意操纵的,或许别人会做一个删除数据库表的sql给你执行呢 这个功能就是检测出哪些项的值或状态被更新过,空字符串和sql语句的问题应该没有问题。一来所有字符串均在单引号内,二来所有值也经过了escape()编码至于js注入的话,我暂时没想到有什么方法可以对它进行js注入,因为它检测的是初始值的变化,至于说当成sql语句,这个只是这么一说。或许我提交至服务器端后再经过一次有效性验证,就应该没有这样的问题了 这个是必须的一个环节,我说的那种转化成sql语句的意思其实是想体现在按需更新这个意思上面至少,我检测到没有表单项发生变更,我这个表单不用提交了,对数据库的操作又减少了有变更项,提交后在服务器端做好相关验证,再动态构建一条更新的语句,也不用所有的字段都去更新了 对,服务器有验证就好了另:js注入是不能避免的,就算是局部变量不好注入js改变(当然实际上js注入可以直接改变整个函数,所以局部变量也不保险),还有调试工具,打个断点就可以任意修改你要提交的字符串了可以做成一个字符串传到后台但后台不能直接用,要解析,验证才好 这个检测只是过滤了没修改的值,其他值post上去以后当然还要验证了,这本来就是要做的事情,最起码服务器减轻了嘛,这样就能提高点效率,之前的代码我基本看懂了,我也想到应该可以改进而不需要手动添加radio的参数,你更新的代码应该已经解决这个问题了,呵呵呵 刚才没认真看楼主的意思,如果直接这样得到update语句的话的确感觉很危险,我的原意是想把整理后的用&连起来然后就可以ajax post到服务器了 前台怎么样反复调用js? 点击的问题 关于xml dom,不能load文件的问题。 100分求助C#加javascript做动态菜单问题 看看这段代码在xp可以用,到win2003不可以用 EXTJS4 锁定最后一列,怎么设置,求解 scroll的问题 运用正则表达式,分别实现js和C#对下面的HTML进行操作 12306 java 登陆 https://kyfw.12306.cn/otn/dynamicJs/lojzuyz ueditor改变图片上传位置 web版iOS,第二版,欢迎拍砖 怎样能在提交表单时过滤掉没更改的值,只POST修改过的值?
如果输入都进行验证了的话是不会有问题,否没有验证的话,可能有以下问题:
1.空字符串,如果数据库需要数值类型数据,空字符串默认转换为数值是会失败的,语句将失败
2.单引号,单引号在sql语句中表示字符串,如果字符串本身包括单引号,会提前结束字符串导致语句错误
其他暂时没想到,sql关键字的话由于在单引号内该没有问题。除了代码逻辑问题,还有的就是安全问题了,有严重安全隐患
直接将前台一个字符串作为sql语句,这个太危险了,要知道前台的值都是可以通过调试工具或者地址栏js注入任意操纵的,或许别人会做一个删除数据库表的sql给你执行呢
这个是必须的一个环节,我说的那种转化成sql语句的意思其实是想体现在按需更新这个意思上面至少,我检测到没有表单项发生变更,我这个表单不用提交了,对数据库的操作又减少了有变更项,提交后在服务器端做好相关验证,再动态构建一条更新的语句,也不用所有的字段都去更新了
另:js注入是不能避免的,就算是局部变量不好注入js改变(当然实际上js注入可以直接改变整个函数,所以局部变量也不保险),还有调试工具,打个断点就可以任意修改你要提交的字符串了可以做成一个字符串传到后台但后台不能直接用,要解析,验证才好