ฉันจะแน่ใจได้อย่างไรว่าพารามิเตอร์ที่ส่งผ่านไม่มีเนื้อหาสคริปต์ข้ามไซต์

ฉันกำลังสร้างบริการเว็บส่วนที่เหลือโดยใช้สปริง & ส่งพารามิเตอร์ไปยังเมธอดจากคลาสโมเดล

พารามิเตอร์อินพุตของฉันเป็น

{
    "user_id": 23,
    "user_email_id": "[email protected]",
    "user_password": "fdsdsdf",
    "firstname": "<script>window.alert(‘surprise!’);</script>",
    "lastname": "kdfgkdf",
    "mobile_number": "1414141414",
    "user_status": 1,
    "isdeleted": 0,
    "created_by": 1,
    "profile_picturename": "kfksdjfhksjd",
    "address": "sfdsdfsd"
}

& วิธีการควบคุม ReST ของฉันเป็นเหมือน

@RequestMapping(value = "/validate", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Object AddUser(@Valid @RequestBody UserInputModel userInputModel, BindingResult br, HttpServletResponse response) throws Exception {
    //Logic

}

ที่นี่ฉันต้องการให้แน่ใจว่าพารามิเตอร์ที่ส่งผ่านไม่มี Xss ใด ๆ หรือฉันจะแน่ใจได้อย่างไรว่าตัวเข้ารหัส HTML จะทำงานกับโมเดลอินพุตของฉัน

ขอบคุณล่วงหน้า


person Anup Deshpande    schedule 27.01.2016    source แหล่งที่มา


คำตอบ (1)


ใช้คำอธิบายประกอบ @SafeHtml ของ Hibernate Validator:

https://docs.jboss.org/hibernate/validator/5.2/reference/en-US/html/ch02.html#validator-defineconstraints-hv-constraints

คุณต้องเพิ่ม jsoup เป็นการพึ่งพา

ตัวอย่าง:

@Entity 
public class Foo {

  @SafeHtml(...)
  private String firstName;

}

หากคุณตรวจสอบเอนทิตี มันจะไม่ถูกต้องหาก firstName มี xss

person Neil McGuigan    schedule 27.01.2016