मैं अपने वेब-एप्लिकेशन में जर्सी का उपयोग कर रहा हूं। सर्वर पर भेजा गया डेटा JSON प्रारूप में है, जो बदले में सर्वर-अंत में अनारक्षित है और प्राप्त ऑब्जेक्ट का उपयोग आगे की प्रक्रिया में किया जाता है। सुरक्षा लेखापरीक्षा ने इस दृष्टिकोण के लिए कुछ भेद्यताएं उठाईं।जेएसओएन डेटा के अनारक्षित होने के दौरान पार्सर अपवादों को कैसे संभालें?
मेरे बाकी कोड:
@POST
@Path("/registerManga")
@Produces(MediaType.APPLICATION_JSON)
public Response registerManga(MangaBean mBean){
System.out.println(mBean);
return Response.status(200).build();
}
MangaBean:
public class MangaBean {
public String title;
public String author;
@Override
public String toString() {
return "MangaBean [title=" + title + ", author=" + author + "]";
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
डेटा इस प्रारूप में भेज दिया जाता है:
["title":"Bleach","author":"kubo tite"]
ऊपर डेटा को सफलतापूर्वक एक वस्तु और मैं में unmarshalled है इसे आउटपुट के रूप में प्राप्त करें:
MangaBean [title=Bleach, author=kubo tite]
लेकिन डेटा करने के लिए बदल गया है:
["title":"<script>alert("123");</script>","author":"kubo tite"]
500 आंतरिक सर्वर त्रुटि होती है और उपयोगकर्ता के लिए प्रदर्शित किया जाता है: में
javax.servlet.ServletException: org.codehaus.jackson.JsonParseException: Unexpected character ('1' (code 49)): was expecting comma to separate OBJECT entries
at [Source: [email protected]; line: 1, column: 28]
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
""
की अप्रत्याशित घटना खड़ी कर रहा है त्रुटियों पार्सर। चूंकि दृश्यों के पीछे unmarshalling किया जाता है और मेरे पास इसका कोई नियंत्रण नहीं है, मैं उठाए गए अपवाद को संभालने में असमर्थ हूं।
मेरा प्रश्न यह है कि मैं इस अपवाद को कैसे संभाल सकता हूं और स्टैकट्रैस के बजाय उपयोगकर्ता को उचित प्रतिक्रिया देता हूं। कृपया सलाह दें।
मैं वास्तव में समझ नहीं पा रहा हूं कि @Provider वाक्यविन्यास का उपयोग कैसे करें .. क्या मैं निम्नलिखित परिदृश्य को संभालने के लिए इसका उपयोग कर सकता हूं: Unruly API रिटर्न [] जब एक मानचित्र {} के बजाय खाली होता है। उपरोक्त से जैसा लगता है, मैं इस अपवाद को मैप कर सकता हूं और इसे संभाल सकता हूं? – deepwinter
मैं अपने जीवन के लिए जर्सी 2.13 में काम करने के लिए नहीं मिल सकता। ओह। –
हम सीएक्सएफ का उपयोग कर रहे हैं, लेकिन यह वैसे भी काम किया। धन्यवाद! – fool4jesus