2012-03-14 25 views
10

Vì một số lý do bảo mật, tôi đã đánh lừa để vô hiệu hóa theo dõi phiên theo jsessionid trong URL. Trước khi tôi thay đổi web.xml của mình thành web.xml, tôi đã có lần đầu tiên truy cập vào trang jsessionid trong url, sau khi nhấp vào liên kết đầu tiên, nó sẽ không bao giờ xuất hiện nữa.JBoss 7.0.1 chạy mà không có jsessionid trong URL không hoạt động

web.xml vẻ tôi như

<session-config> 
     <session-timeout>10</session-timeout> 
     <cookie-config> 
     <secure>true</secure> 
     </cookie-config> 
     <tracking-mode>COOKIE</tracking-mode> 
    </session-config> 

Bây giờ tôi có jsessionid trong URL, nếu tôi nhấp một liên kết trên trang nó không bao giờ biến mất. Nó thay đổi trên mỗi nhấp chuột.

Nếu tôi cố gắng gọi một hành động JSF, tôi nhận được javax.faces.application.ViewExpiredException nhưng bean được quản lý là @SessionScoped.

Đây là cây phụ thuộc của tôi:

[INFO] Scanning for projects... 
[INFO] Searching repository for plugin with prefix: 'dependency'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Java EE 6 webapp project 
[INFO] task-segment: [dependency:tree] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [dependency:tree {execution: default-cli}] 
[INFO] de.project:demoapp:war:1.0-SNAPSHOT 
[INFO] +- javax.enterprise:cdi-api:jar:1.0-SP4:provided 
[INFO] | +- org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.1_spec:jar:1.0.0.Final:provided (version managed from 1.0.0.Beta1) 
[INFO] | \- javax.inject:javax.inject:jar:1:provided 
[INFO] +- org.jboss.spec.javax.annotation:jboss-annotations-api_1.1_spec:jar:1.0.0.Final:provided 
[INFO] +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_1.1_spec:jar:1.0.0.Final:provided 
[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:provided 
[INFO] +- org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:jar:1.0.1.Final:provided 
[INFO] +- org.hibernate:hibernate-validator:jar:4.2.0.Final:provided 
[INFO] | \- javax.validation:validation-api:jar:1.0.0.GA:provided 
[INFO] +- org.hibernate:hibernate-jpamodelgen:jar:1.1.1.Final:provided 
[INFO] +- junit:junit:jar:4.10:test 
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.1:test 
[INFO] +- org.jboss.arquillian.junit:arquillian-junit-container:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.junit:arquillian-junit-core:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.test:arquillian-test-api:jar:1.0.0.CR4:test 
[INFO] | | \- org.jboss.arquillian.core:arquillian-core-api:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.test:arquillian-test-spi:jar:1.0.0.CR4:test 
[INFO] | | +- org.jboss.arquillian.core:arquillian-core-spi:jar:1.0.0.CR4:test 
[INFO] | | \- org.jboss.shrinkwrap:shrinkwrap-api:jar:1.0.0-beta-5:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-test-api:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-test-spi:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.core:arquillian-core-impl-base:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.test:arquillian-test-impl-base:jar:1.0.0.CR4:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-impl-base:jar:1.0.0.CR4:test 
[INFO] | | +- org.jboss.arquillian.config:arquillian-config-api:jar:1.0.0.CR4:test 
[INFO] | | \- org.jboss.arquillian.config:arquillian-config-impl-base:jar:1.0.0.CR4:test 
[INFO] | |  \- org.jboss.shrinkwrap.descriptors:shrinkwrap-descriptors-spi:jar:1.1.0-alpha-2:test 
[INFO] | +- org.jboss.arquillian.container:arquillian-container-test-impl-base:jar:1.0.0.CR4:test 
[INFO] | \- org.jboss.shrinkwrap:shrinkwrap-impl-base:jar:1.0.0-beta-5:test 
[INFO] |  \- org.jboss.shrinkwrap:shrinkwrap-spi:jar:1.0.0-beta-5:test 
[INFO] +- org.jboss.arquillian.protocol:arquillian-protocol-servlet:jar:1.0.0.CR4:test 
[INFO] | \- org.jboss.arquillian.container:arquillian-container-spi:jar:1.0.0.CR4:test 
[INFO] |  \- org.jboss.shrinkwrap.descriptors:shrinkwrap-descriptors-api:jar:1.1.0-alpha-2:test 
[INFO] +- javax.mail:mail:jar:1.4.4:compile 
[INFO] | \- javax.activation:activation:jar:1.1:compile 
[INFO] +- javax.servlet:javax.servlet-api:jar:3.0.1:provided 
[INFO] +- org.owasp.esapi:esapi:jar:2.0.1:compile 
[INFO] | +- commons-configuration:commons-configuration:jar:1.5:compile 
[INFO] | | +- commons-lang:commons-lang:jar:2.3:compile 
[INFO] | | +- commons-logging:commons-logging:jar:1.1:compile 
[INFO] | | | +- logkit:logkit:jar:1.0.1:compile 
[INFO] | | | \- avalon-framework:avalon-framework:jar:4.1.3:compile 
[INFO] | | \- commons-digester:commons-digester:jar:1.8:compile 
[INFO] | |  \- commons-beanutils:commons-beanutils:jar:1.7.0:compile 
[INFO] | +- commons-beanutils:commons-beanutils-core:jar:1.7.0:compile 
[INFO] | +- commons-fileupload:commons-fileupload:jar:1.2:compile 
[INFO] | +- commons-collections:commons-collections:jar:3.2:compile 
[INFO] | +- xom:xom:jar:1.1:compile 
[INFO] | | +- xerces:xmlParserAPIs:jar:2.6.2:compile 
[INFO] | | +- xerces:xercesImpl:jar:2.6.2:compile 
[INFO] | | +- xalan:xalan:jar:2.7.0:compile 
[INFO] | | | \- xml-apis:xml-apis:jar:1.0.b2:compile 
[INFO] | | \- jaxen:jaxen:jar:1.1-beta-8:compile 
[INFO] | |  +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | |  \- jdom:jdom:jar:1.0:compile 
[INFO] | +- org.beanshell:bsh-core:jar:2.0b4:compile 
[INFO] | \- org.owasp.antisamy:antisamy:jar:1.4.3:compile 
[INFO] |  +- org.apache.xmlgraphics:batik-css:jar:1.7:compile 
[INFO] |  | +- org.apache.xmlgraphics:batik-ext:jar:1.7:compile 
[INFO] |  | +- org.apache.xmlgraphics:batik-util:jar:1.7:compile 
[INFO] |  | \- xml-apis:xml-apis-ext:jar:1.3.04:compile 
[INFO] |  +- net.sourceforge.nekohtml:nekohtml:jar:1.9.12:compile 
[INFO] |  \- commons-httpclient:commons-httpclient:jar:3.1:compile 
[INFO] |  \- commons-codec:commons-codec:jar:1.2:compile 
[INFO] +- com.sun.faces:jsf-api:jar:2.1.7:compile 
[INFO] \- joda-time:joda-time:jar:1.6:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5 seconds 
[INFO] Finished at: Mon Mar 19 12:55:23 CET 2012 
[INFO] Final Memory: 31M/342M 
[INFO] ---------------------------------------- 

EDIT: nó trông giống như nó làm việc mà không có sự

<cookie-config> 
    <secure>true</secure> 
</cookie-config> 

cookie cũng đang ở chế độ an toàn theo mặc định
là bình thường này? tôi có cần công cụ cấu hình cookie này nữa không? cảm ơn!

+1

Tôi muốn báo cáo lỗi này là lỗi đối với những người dùng JBoss. – BalusC

+0

@BalusC okay, có gì đó có dây: mọi thứ đều hoạt động nếu tôi xóa: ' true' ngay cả khi tôi kiểm tra cookie, nó được lưu dưới dạng mã bảo mật .... nếu tôi chèn các công cụ an toàn, tôi nhận được một 'Servlet.service() cho servlet Faces Servlet đã ném ngoại lệ: javax.faces.application.ViewExpiredException' - là công cụ an toàn này không cần thiết? – Joerg

+0

Tôi gặp sự cố tương tự do cookie-config gây ra. Chỉ khi nó được thiết lập, một ứng dụng dựa trên tuabin cũ đi vào "đệ quy vô hạn". Điều kỳ lạ là không có vấn đề với đúng khi truy cập máy chủ bằng HTTPS ... – nettle

Trả lời

1

bạn có sử dụng https ssl hoặc cổng 80 http không? nếu sử dụng http thì hãy xóa cookie an toàn như phương tiện an toàn trên ssl

Có vẻ như máy chủ web nhận ra rằng cookie không nhận cookie và do đó, hãy tạo phiên mới mỗi lần. nếu bạn vô hiệu hóa cookie an toàn (có nghĩa là làm cho nó sai) thì nó sẽ hoạt động.

nó không đảm bảo trình duyệt chấp nhận cookie. https://www.youtube.com/watch?v=CVEo7wug2ks cho bạn thấy cách xem cookie (không xóa trừ khi thử nghiệm)

+0

giống như tôi đã viết trong câu hỏi của tôi, nhưng tôi đóng nó ngay bây giờ .... – Joerg

-1

Bạn đã thử đặt javax.faces.STATE_SAVING_METHOD thành client trong tệp web.xml chưa?

<context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
</context-param> 

Trạng thái JSF sẽ được lưu ở phía máy khách thay vì máy chủ.

+0

tính năng này không hoạt động, .... nó vẫn có jSession URL ... – Joerg

0

Hãy thử sử dụng < http chỉ > đúng/sai </http-chỉ > trong cookie-config của bạn để tìm hiểu xem nó là một vấn đề với cookie và http chỉ add-on.

Thực ra chỉ http yêu cầu trình duyệt hỗ trợ và nhằm mục đích bảo vệ cookie từ người nào đó truy xuất cookie ở phía máy khách. Vì vậy, nó không nên có liên quan trực tiếp. Tuy nhiên tôi sẽ không đặt cược nhà của tôi rằng điều này được xử lý một cách chính xác bên trong JBoss.

Nếu vì lý do nào đó cookie không được tạo với yêu cầu thứ nhất, dự phòng của máy chủ thường mã hóa JSessionID trong URL.

Các vấn đề liên quan