首頁  >  文章  >  Java  >  java在web開發安全性方面的總結

java在web開發安全性方面的總結

怪我咯
怪我咯原創
2017-06-25 10:22:062472瀏覽

1.       客户输入的原始数据进行校验不依赖于Script。虽然JavaScript等等的客户端的输入数据的校验即使比较方便也不能使用因为安全性方面的原因。脚本是不安全的,用户可能屏蔽脚本,我们可以将用户数据送入服务器端,在服务器上验证字符串的合法性。

2.       HTML的输入标识符中去除所有输入的尖括号'8be20565c25b2004db295fba6a262148',

3.       HTML埋进数据的时候有一定HTML编码('7472e6a9a4c69ea6a844b561c4734f3a' '和' '"' ' ' ' →'是7472e6a9a4c69ea6a844b561c4734f3a' '是μ"' ' &39;'的换每隔)了。(2)(3)由cross-site scripting(css)引起的,解决方法是避免脚本符号的出现。

 URLで許可される文字

 英数字「;」「/」「?」「:」「@」「&」「=」「+」「$」「,」「-」「_」「.」「!」「~」「*」「'」「(」「)」「%」

4.       需要保护的全部的网页要有用户认证机构。

登入后,把userID保存下来在SESSION中,在每个需要保护的页面追加脚本进行验证,如果session空,则验证失败,从新登陆。

<%
If Len(Session("ID")) = 0 Then
Response.Redirect "index.html"
End If
%>

下列信息做特殊处理:

*密码

*Web邮件的邮件内容等等的个人用数据

*名字 年龄、住所的个人信息

*Web应用系统内部的数据构造

*Web服务器内部的最大限度定期票等等的各种系统信息   

→[1-3.]

5.       事前可以推断的sessionID不能定义, →[1-3.]

6.       关键的重要的数据参数发送时不要出现在URL中

利用post传递参数。并且对策:

*根据SSL的密码化通信

*干扰策略。

*对话期间劫机对策

7.       hidden字段的数据不能修改传递(hidden的值不能被显示,但是会被传递并且在html源文件中可以查看值,防止其值被修改并传递)不要用hidden去取数据,改善方法是可以利用session来保存hidden数据 →[1-5.]

8.       从WWW 浏览器被发送了的ca43c4a4e4e9a57ee85d2406306544fb 的4293aa673c6b566b1b4e672be0c402d8项的值,radio项的值,checkbox项的值都要进行校验,对于上述控件提交上来的数据开数据库查询是否合法。 →[1-6.]

9.       写SQL的时候与变量结合写。要先check再提交(对用户提交的变量在放入SQL文之前先过滤) →[2-1.]

10.   组装SQL的时候输入数据的 (')和分号 ( ; ) 要进行处理。原因同9) →[2-1.]

11.   不要在脚本中嵌入数据库的密码。关于敏感数据的设置,可以设置在配置文件中,windows可以设置在注册表中。 →[2-2.]

12.   存取数据库时用户的权限分开设置。不同的用户权限是不同的,可以借助数据库的权限设置来实现,这样有利于安全性的提高。 →[2-3.]

13.   Java类包的导入。只导入需要的类,不使用的包和类不要导入,这样做有利于提高安全性,防止他人利用多余的类取得信息,尤其是几个敏感的类包 →[3-1.]

14.   利用安全政策文件(policy)设定来控制文件的运行权限。

文件路径:${java.home}/lib/security/java.policy

package org.penglee.policy.test;
//permission java.io.FilePermission "c://winnt//system32//notepad.exe", "execute";
import java.io.IOException;
 
public class NoSecurityManager {
         public static void main(String[] args) {
//                     SecurityManager mySecurityManager = new SecurityManager ();
//                     System.setSecurityManager (mySecurityManager);
                       try {
                                     Runtime myRuntime = Runtime.getRuntime ();
                                     myRuntime.exec ("c://winnt//system32//notepad.exe");
                       } catch (IOException e) {
                                     e.printStackTrace();
                       }
         }
}

→[3-1.]

15.   设置为私有类(private)来加以限制类中数据的修改,或者定义接口来实现。 →[3-2.]

16.   程序序列化后的数据是没有加密的,防止利用序列化后的数据读取敏感数据,可以利用transient来处理序列化的数据。→[3-3.]

17.   除明显地需要继承的类之外一律使用final类。这样可以防止利用继承来获取敏感信息。→[3-4.]

18.   利用AssertionError来抛错。详细参考该类的api文档→[3-5.]

19.   注意线程同步产生的数据不一致问题,增加数据的安全性。→[3-6.]

20.   输入中避免含有相对相对路径。含有相对路径时报错。原因可能导致兄弟文件夹被访问。→[4-1.]

 

26. 极力避免明文密码。敏感数据最好要加密,建议使用sha加密→[9-1.]

27. 用sha加密。→[9-1.]

28.29.利用程式檢驗路徑(防止相對路徑)檢查檔案名稱以及資料的安全性,含有特殊字元封包錯誤。 →[9-2.]

30.31. 為了不讓教多了十分小心地正在做登入時的錯誤訊息弄錯什麼了。面向使用者的錯誤訊息不應該給的太足,以免使用者由此推斷出程式的內部結構的相關資訊。 →[9-3.]

32. 盡量小做需要特權的使用的資料處理的部分、 極力避開一般的資料處理用特權流行被實行了。使用權限較小的使用者名稱來登錄,盡量避開以特殊權限來處理一般資料。 →[9-4.]


#

以上是java在web開發安全性方面的總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn